From 1c8f5ffe7eeb227801c006ed1bfa27d5c0921fc3 Mon Sep 17 00:00:00 2001 From: Maurice Makaay Date: Tue, 18 Jun 2019 23:24:23 +0000 Subject: [PATCH] Added booleans ...that was boring. --- value_boolean.go | 19 +++++++++++++++++++ value_boolean_test.go | 20 ++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 value_boolean.go create mode 100644 value_boolean_test.go diff --git a/value_boolean.go b/value_boolean.go new file mode 100644 index 0000000..f42a0df --- /dev/null +++ b/value_boolean.go @@ -0,0 +1,19 @@ +package parser + +import ( + "git.makaay.nl/mauricem/go-parsekit/parse" +) + +var ( + // Booleans are just the tokens you're used to. Always lowercase. + trueOrFalse = a.Str("true").Or(a.Str("false")) +) + +func (t *parser) startBoolean(p *parse.API) { + switch { + case p.Accept(tok.Boolean(nil, trueOrFalse)): + t.emitCommand(csetBoolVal, p.Result().Value(0).(bool)) + default: + p.Expected("true or false") + } +} diff --git a/value_boolean_test.go b/value_boolean_test.go new file mode 100644 index 0000000..182e252 --- /dev/null +++ b/value_boolean_test.go @@ -0,0 +1,20 @@ +package parser + +import ( + "testing" +) + +func TestBoolean(t *testing.T) { + for _, test := range []parseTest{ + {``, []string{`Error: unexpected end of file (expected true or false) at start of file`}}, + {`true`, []string{`boolean(true)`}}, + {`false`, []string{`boolean(false)`}}, + {`yes`, []string{`Error: unexpected input (expected true or false) at start of file`}}, + {`no`, []string{`Error: unexpected input (expected true or false) at start of file`}}, + {`1`, []string{`Error: unexpected input (expected true or false) at start of file`}}, + {`0`, []string{`Error: unexpected input (expected true or false) at start of file`}}, + } { + p := &parser{} + testParseHandler(t, p, p.startBoolean, test) + } +}