better parsers

This commit is contained in:
probandula
2016-11-03 09:36:49 +01:00
parent 06b018b123
commit cbb68ca3b1
4 changed files with 42 additions and 18 deletions

View File

@@ -88,6 +88,22 @@ renderStr, _ := ascii.RenderOpts("Hello Fonts", options)
fmt.Print(renderStr)
```
### Other parser
A Parser can be set through the `GetParser` function with a valid key
```go
import "github.com/probandula/figlet4go"
// ...
ascii := figlet4go.NewAsciiRender()
options := figlet4go.NewRenderOptions()
options.Parser = figlet4go.GetParser("html")
renderStr, _ := ascii.RenderOpts("Hello Fonts", options)
fmt.Print(renderStr)
```
## Parsers
There a currently these Parsers available:
@@ -119,5 +135,7 @@ Other fonts can mainly be found on [figlet](http://www.figlet.org). You have to
- [x] Colors in the cli client
- [x] No dependencies (fatih/color)
- [x] Truecolor support
- [ ] More parsers (HTML)
- [x] More parsers (HTML)
- [x] Better parsers (maybe stored in a map)
- [ ] Pointer-Value standarization
- [ ] Tests

View File

@@ -37,7 +37,11 @@ func main() {
options.FontName = *font
// Set the parser
options.Parser = getParser(*parser)
p, err := figlet4go.GetParser(*parser)
if err != nil {
p, _ = figlet4go.GetParser("terminal")
}
options.Parser = *p
// Set colors
if *colors != "" {
@@ -53,17 +57,6 @@ func main() {
fmt.Print(renderStr)
}
// Get the parser for given flag argument
func getParser(parserStr string) figlet4go.Parser {
switch parserStr {
case "html":
return figlet4go.ParserHTML
// Terminal parser is default
default:
return figlet4go.ParserTerminal
}
}
// Get a slice with colors to give to the RenderOptions
// Splits the given string with the separator ";"
func getColorSlice(colorStr string) []figlet4go.Color {

View File

@@ -1,5 +1,7 @@
package figlet4go
import "errors"
// Parser stores some output specific stuff
type Parser struct {
// Name used for switching in colors.go
@@ -14,9 +16,19 @@ type Parser struct {
Replaces map[string]string
}
var (
var parsers map[string]Parser = map[string]Parser {
// Default terminal parser
ParserTerminal Parser = Parser{"terminal", "", "", "\n", nil}
"terminal": Parser{"terminal", "", "", "\n", nil},
// Parser for HTML code
ParserHTML Parser = Parser{"html", "<code>", "</code>", "<br>", map[string]string{" ": "&nbsp;"}}
)
"html": Parser{"html", "<code>", "</code>", "<br>", map[string]string{" ": "&nbsp;"}},
}
// GetParser returns a parser by its key
func GetParser(key string) (*Parser, error) {
parser, ok := parsers[key]
if !ok {
return nil, errors.New("Invalid parser key: " + key)
}
return &parser, nil
}

View File

@@ -14,9 +14,10 @@ type RenderOptions struct {
// NewRenderOptions creates new RenderOptions
// Sets the default font name
func NewRenderOptions() *RenderOptions {
p, _ := GetParser("terminal")
return &RenderOptions{
FontName: defaultFont,
Parser: ParserTerminal,
Parser: *p,
}
}