diff --git a/README.md b/README.md
index 65625fb..d19f5b9 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/cmd/figlet4go/figlet4go.go b/cmd/figlet4go/figlet4go.go
index c05d061..69914e0 100644
--- a/cmd/figlet4go/figlet4go.go
+++ b/cmd/figlet4go/figlet4go.go
@@ -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 {
diff --git a/parser.go b/parser.go
index 682f3f4..8a7d75d 100644
--- a/parser.go
+++ b/parser.go
@@ -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", "", "", "
", map[string]string{" ": " "}}
-)
+ "html": Parser{"html", "", "", "
", map[string]string{" ": " "}},
+}
+
+// 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
+}
\ No newline at end of file
diff --git a/render.go b/render.go
index 200ca0e..2006bd6 100644
--- a/render.go
+++ b/render.go
@@ -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,
}
}