Update README.md to simplify

pull/53/head
rwxrob 2 years ago
parent dbe16c9060
commit b7981dcf19
No known key found for this signature in database
GPG Key ID: 2B9111F33082AE77

@ -39,64 +39,10 @@ But wait, there's more! What about all those other tasks you need to do
to make a command line application honorable in anyone's eyes? Tools are
needed.
## BPEGN: Generate Powerful Parsers Easily
BPEGN is a PEGN syntax implementation in pure Go using mostly slices and
structs. The Bonzai scan.Expect function produces verbose, specific
error messages that will make your users bow to your attentiveness.
Build complex parsers that are easily read and generated from any number
of meta-languages including PEGN, PEG, EBNF, and ABNF. Spend your time
working with the beautiful and standardized abstract syntax trees
instead of grinding out parser code. Domain language specifications are
a breeze, which is good, because you can customize any completer for any
nested command node or your application enabling powerful, intelligent,
and intuitive grammars you enable for your users directly from the
command line, hell, why not directly from your favorite chat
integration. After all, Bonzai commands are perfectly doable directly
from a chat client.
## A JSON Package Without Unnecessary Limitations
The standard Go `json` package is not what most people want. It uses
reflection which unnecessarily slows everything down, and produces
marshaled JSON output that escapes *every single Unicode character*
making the output impossible to read and virtual useless for any use
with languages that depend heavily on Unicode. It's really unfortunate
since the JSON standard fully supports Unicode characters as they are.
Bonzai JSON overcomes these limitations and is used to marshal
everything in the module and fulfill all `fmt.Stringer` interfaces as
2-space indented JSON instead of Go's virtually unusable default string
marshaling format.
## Single Module to Keep Legal Happy
Why have we put all of this stuff into one module? It's simple, if you
understand how enterprise software legal teams work. They are required
to track the legal pedigree of every single package that is included
into any software project. This task is laborious enough and we have
done everything to simplify it by providing most of the parts and tools
you would need to create almost any command-line utility, from simple
bash script port to monoliths with 100s of composed commands, even our
own BusyBox-like container Linux distro.
## Embedded Text or Web Docs FTW!
And, all the documentation for your command tree goes *inside* the
binary (if you want). That's right. Portable, text or web-enabled "man"
pages without the man page. You can use one of the composable
interactive-color-terminal-sensing help documentation commands like
`help.Cmd` that will easily marshal into JSON, or text, or well-styled
HTML locally while enabling you to write your embedded docs in
simplified CommonMark. Think "readthedocs" but without the Internet
dependency. And if you don't want `help.Cmd` you don't need it. You can
even write your own composable Bonzai command or pick from a rich
ecosystem of embeddable Bonzai command trees available from anywhere on
the Internet or maintained by the Bonzai project. No registries to worry
about. Just use good 'ol Go module imports are all that are need to
share your creations.
## Contributors/PRs Welcome
*... especially for "Completers" and Runtime Detection.*
*... especially for "Completers", included popular commands, and Runtime
Detection.*
Speaking of sharing, why not send a PR for your addition to the ever
growing collection of `comp` subpackage `Completers` for everything from
@ -184,21 +130,6 @@ other security tools
including tab completion in runtime environments that do not have
`complete -C foo foo` enabled.
* **Scanner implementation as a struct with no interface.** In order to
better tilt the scale toward Scanner performance the decision was made
to keep it as a struct with tight coupling to the scanner.Cur and
scanner.Pos structs as well.
* **Decided to use branch/leaf instead of parent/child.** The
anthropomorphic metaphor breaks down when choosing names for
"children" who don't have any any children of their own. What, are we
going to call them "barren"? The only other option is "terminal" (the
mathematically correct term) and mixing that just should bad. "This
child is 'terminal'" while the others are not. Besides, the bonsai
tree is one of our namesakes and you cannot have a branch and a leaf
in the same node. Every node is one or the other. Trees are much
simper to grok and walk this way.
## Style Guidelines
* Everything through `go fmt` or equiv, no exceptions

Loading…
Cancel
Save