diff --git a/cmd/treerack/doc.go b/cmd/treerack/doc.go index eabb48c..8361f7d 100644 --- a/cmd/treerack/doc.go +++ b/cmd/treerack/doc.go @@ -8,8 +8,8 @@ import ( const summary = `treerack - parser generator - https://github.com/aryszka/treerack` const commandsHelp = `Available commands: -check validates arbitrary input against a syntax definition -parse parses arbitrary input with a syntax definition into an abstract syntax tree +check validates an arbitrary input against a syntax definition +show parses an arbitrary input with a syntax definition and prints the abstract syntax tree check-syntax validates a syntax definition generate generates a parser from a syntax definition help prints the current help @@ -49,12 +49,12 @@ parsed with it.` const checkExample = `Example: treerack check -syntax example.treerack foo.example` -const parseUsage = `'treerack parse' takes a syntax description from a file or inline string, an arbitrary piece +const showUsage = `'treerack show' takes a syntax description from a file or inline string, an arbitrary piece of text from the standard input, or a file, or inline string, and parses the input text with the defined syntax. If it was successfully parsed, it prints the resulting abstract syntax tree (AST) in JSON format.` -const parseExample = `Example: -treerack parse -syntax example.treerack foo.example` +const showExample = `Example: +treerack show -syntax example.treerack foo.example` const checkSyntaxUsage = `'treerack check-syntax' takes a syntax description from the standard input, or a file, or inline string, and validates it to check whether it represents a valid syntax. It returns with non-zero exit diff --git a/cmd/treerack/main.go b/cmd/treerack/main.go index 930eaf0..e8ee62b 100644 --- a/cmd/treerack/main.go +++ b/cmd/treerack/main.go @@ -30,8 +30,8 @@ func main() { cmd = generate case "check": cmd = check - case "parse": - cmd = parse + case "show": + cmd = show case "help", "-help": mainHelp() return diff --git a/cmd/treerack/parse.go b/cmd/treerack/show.go similarity index 92% rename from cmd/treerack/parse.go rename to cmd/treerack/show.go index 3e3977a..cb94814 100644 --- a/cmd/treerack/parse.go +++ b/cmd/treerack/show.go @@ -6,7 +6,7 @@ import ( "github.com/aryszka/treerack" ) -type parseOptions struct { +type showOptions struct { command *commandOptions syntax *fileOptions input *fileOptions @@ -40,9 +40,9 @@ func mapNode(n *treerack.Node) *node { return &nn } -func parse(args []string) int { - var o parseOptions - o.command = initOptions(parseUsage, parseExample, positionalInputUsage, args) +func show(args []string) int { + var o showOptions + o.command = initOptions(showUsage, showExample, positionalInputUsage, args) o.syntax = &fileOptions{typ: "syntax", flagSet: o.command.flagSet, positionalDoc: positionalInputUsage} o.input = &fileOptions{typ: "input", flagSet: o.command.flagSet, positionalDoc: positionalInputUsage} diff --git a/cmd/treerack/parse_test.go b/cmd/treerack/show_test.go similarity index 56% rename from cmd/treerack/parse_test.go rename to cmd/treerack/show_test.go index 14b1a7d..bf54bdd 100644 --- a/cmd/treerack/parse_test.go +++ b/cmd/treerack/show_test.go @@ -2,13 +2,13 @@ package main import "testing" -var parseFailureTests = convertTests("parse", checkFailureTests) +var showFailureTests = convertTests("show", checkFailureTests) -var parseTests = []mainTest{ +var showTests = []mainTest{ { title: "syntax as file", args: []string{ - "treerack", "parse", "-syntax", "foo_test.treerack", "-input-string", "bar", + "treerack", "show", "-syntax", "foo_test.treerack", "-input-string", "bar", }, stdout: []string{ `"name":"foo"`, @@ -18,7 +18,7 @@ var parseTests = []mainTest{ { title: "syntax as string", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", + "treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", }, stdout: []string{ `"name":"foo"`, @@ -28,7 +28,7 @@ var parseTests = []mainTest{ { title: "input as stdin", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, + "treerack", "show", "-syntax-string", `foo = "bar"`, }, stdin: "bar", stdout: []string{ @@ -39,7 +39,7 @@ var parseTests = []mainTest{ { title: "input as file", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "-input", "bar_test.txt", + "treerack", "show", "-syntax-string", `foo = "bar"`, "-input", "bar_test.txt", }, stdout: []string{ `"name":"foo"`, @@ -49,7 +49,7 @@ var parseTests = []mainTest{ { title: "input as positional", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "bar_test.txt", + "treerack", "show", "-syntax-string", `foo = "bar"`, "bar_test.txt", }, stdout: []string{ `"name":"foo"`, @@ -59,7 +59,7 @@ var parseTests = []mainTest{ { title: "input as string", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", + "treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", }, stdout: []string{ `"name":"foo"`, @@ -69,7 +69,7 @@ var parseTests = []mainTest{ { title: "explicit over stdin", args: []string{ - "treerack", "parse", "-syntax", "foo_test.treerack", "-input-string", "bar", + "treerack", "show", "-syntax", "foo_test.treerack", "-input-string", "bar", }, stdin: "invalid", stdout: []string{ @@ -80,7 +80,7 @@ var parseTests = []mainTest{ { title: "pretty", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", + "treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", }, stdout: []string{ ` "name": "foo"`, @@ -90,7 +90,7 @@ var parseTests = []mainTest{ { title: "pretty and indent", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx", + "treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx", }, stdout: []string{ `xx"name": "foo"`, @@ -100,7 +100,7 @@ var parseTests = []mainTest{ { title: "indent without pretty", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx", + "treerack", "show", "-syntax-string", `foo = "bar"`, "-input-string", "bar", "-pretty", "-indent", "xx", }, stdout: []string{ `xx"name": "foo"`, @@ -110,7 +110,7 @@ var parseTests = []mainTest{ { title: "with child nodes", args: []string{ - "treerack", "parse", "-syntax-string", `foo = "bar"; doc = foo`, "-input-string", "bar", + "treerack", "show", "-syntax-string", `foo = "bar"; doc = foo`, "-input-string", "bar", }, stdout: []string{ `"nodes":[`, @@ -119,14 +119,14 @@ var parseTests = []mainTest{ }, } -func TestParse(t *testing.T) { +func TestShow(t *testing.T) { runMainTest(t, mainTest{ title: "help", args: []string{ - "treerack", "parse", "-help", + "treerack", "show", "-help", }, stdout: []string{ - wrapLines(parseUsage), + wrapLines(showUsage), "-syntax", "-syntax-string", "-input", @@ -134,11 +134,11 @@ func TestParse(t *testing.T) { "-pretty", "-indent", wrapLines(positionalInputUsage), - wrapLines(parseExample), + wrapLines(showExample), wrapLines(docRef), }, }) - runMainTest(t, parseFailureTests...) - runMainTest(t, parseTests...) + runMainTest(t, showFailureTests...) + runMainTest(t, showTests...) } diff --git a/notes.txt b/notes.txt index 6fed736..023fe95 100644 --- a/notes.txt +++ b/notes.txt @@ -20,6 +20,7 @@ input name needed in command to differentiate between syntax and input in check allchars: can have char sequence make generator output non-random (track parsers in a list in definition order) fix the license in the output +play with the int sizes [releasing] spellcheck