diff --git a/README.md b/README.md index feb065d..099474b 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,14 @@ It is meant to be a more minimal version with the syntax files embedded in the G Language support is determined at build time by using build tags. To include a language, you must build with the appropriate tag. For example, to include Go syntax highlighting, you must build with `-tags=stxGo`. -You may combine as many tags as you like, or use `-tags=stxAll` to include all syntax layers. +You may combine as many tags as you like, or use `-tags=stxAll` to include all lexers. ### Contributing -If you would like to contribute a new syntax layer, please contribute to the parent repository [jessp01/gohighlight](https://github.com/jessp01/gohighlight). -In an effort to minimize the size of this library, the syntax layers are modified to the point of being much less readable than the original. -Because of this, the parent repository is the canonical source for syntax layers. +If you would like to contribute a new lexer, please contribute to the parent repository [jessp01/gohighlight](https://github.com/jessp01/gohighlight). +In an effort to minimize the size of this library, the lexers are modified to the point of being much less readable than the original. +Because of this, the parent repository is the canonical source for lexers. -I will keep this repository up-to-date with any new syntax layers that are added to the parent repository, provided that they are for non-obsolete +I will keep this repository up-to-date with any new lexers that are added to the parent repository, provided that they are for non-obsolete programming languages or config formats (support will not be extended to cover individual shell commands). Other types of contributions are welcome as long as they do not go against the goal of keeping this library as lightweight as possible. @@ -29,7 +29,7 @@ $ go get github.com/rwinkhart/go-highlite ## Basic Usage Below is a simple example for highlighting a Go snippet with ANSI colors. -It must be built with `-tags=stxGo` or `-tags=stxAll` to include the Go syntax layer. +It must be built with `-tags=stxGo` or `-tags=stxAll` to include the Go lexer. For a more advanced example on manually colorizing the output or colorizing it in a different, non-ANSI format, see the `ansi.Colorize` function. @@ -67,13 +67,15 @@ func helloWorld() { ## Roadmap - [ ] Implement more comprehensive testing - [ ] Upgrade to gopkg.in/yaml.v3 **OR** remove the need for the dependency -- [ ] Add Zig syntax layer (and upstream it) +- [ ] Add lexers (and upstream them) + - [ ] Zig + - [ ] Kotlin - [ ] Upstream relevant changes - [ ] staticcheck warnings (f5367779eb4bcaaca0640f1ce7316001e34f41d8) - [ ] Modernization (depending on Go version support) - [ ] c884c602e382789bf1ccef251d0d85af43da03e0 - [ ] 11161c71cdbbec95f6bacc3590b9077b4cac3668 - - [ ] Syntax layer changes + - [ ] Lexer changes - [ ] ef2880834a545b5353a35c7d918310b23d39d4f3 - [ ] bae08261278f21569fc2266b4a4933a6c85b9b25 - [ ] 6e8f69839f82fe23a3442f7f9d62d166cac260e3 (maybe) diff --git a/ansi/ansi.go b/ansi/ansi.go index eca3128..af1c5c0 100644 --- a/ansi/ansi.go +++ b/ansi/ansi.go @@ -6,16 +6,16 @@ import ( "strings" "github.com/rwinkhart/go-highlite" - "github.com/rwinkhart/go-highlite/syntax" + "github.com/rwinkhart/go-highlite/lexers" ) // Colorize takes a string of code and a language ID, and returns the code // with ANSI color codes applied for syntax highlighting. func Colorize(inputCode, languageID string, startingColor uint8) (string, error) { - // Load and parse the go syntax layer into a `*highlight.Def` - syntaxDef, err := highlite.ParseDef(syntax.Get(languageID)) + // Load and parse the go lexer into a `*highlight.Def` + syntaxDef, err := highlite.ParseDef(lexers.Get(languageID)) if err != nil { - return "", errors.New("unable to parse syntax layer: " + err.Error()) + return "", errors.New("unable to parse lexer: " + err.Error()) } // Make a new highlighter from the definition diff --git a/syntax/1entry.go b/lexers/1entry.go similarity index 97% rename from syntax/1entry.go rename to lexers/1entry.go index 1e90ab7..97b2717 100644 --- a/syntax/1entry.go +++ b/lexers/1entry.go @@ -1,4 +1,4 @@ -package syntax +package lexers import "sync" diff --git a/syntax/stxAsm.go b/lexers/stxAsm.go similarity index 99% rename from syntax/stxAsm.go rename to lexers/stxAsm.go index 7264ef5..5cd8eb0 100644 --- a/syntax/stxAsm.go +++ b/lexers/stxAsm.go @@ -1,6 +1,6 @@ //go:build stxAsm || stxAll -package syntax +package lexers func init() { syntaxMap["asm"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxC.go b/lexers/stxC.go similarity index 99% rename from syntax/stxC.go rename to lexers/stxC.go index d0cab3a..82e95c1 100644 --- a/syntax/stxC.go +++ b/lexers/stxC.go @@ -1,6 +1,6 @@ //go:build stxC || stxAll -package syntax +package lexers func init() { syntaxMap["c"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxCaddyfile.go b/lexers/stxCaddyfile.go similarity index 97% rename from syntax/stxCaddyfile.go rename to lexers/stxCaddyfile.go index 5add466..85d771e 100644 --- a/syntax/stxCaddyfile.go +++ b/lexers/stxCaddyfile.go @@ -1,6 +1,6 @@ //go:build stxCaddyfile || stxAll -package syntax +package lexers func init() { syntaxMap["caddyfile"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxCmake.go b/lexers/stxCmake.go similarity index 98% rename from syntax/stxCmake.go rename to lexers/stxCmake.go index 59a4dbb..facc5b5 100644 --- a/syntax/stxCmake.go +++ b/lexers/stxCmake.go @@ -1,6 +1,6 @@ //go:build stxCmake || stxAll -package syntax +package lexers func init() { syntaxMap["cmake"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxCpp.go b/lexers/stxCpp.go similarity index 99% rename from syntax/stxCpp.go rename to lexers/stxCpp.go index b03d0a7..3027b7e 100644 --- a/syntax/stxCpp.go +++ b/lexers/stxCpp.go @@ -1,6 +1,6 @@ //go:build stxCpp || stxAll -package syntax +package lexers func init() { syntaxMap["cpp"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxCsharp.go b/lexers/stxCsharp.go similarity index 99% rename from syntax/stxCsharp.go rename to lexers/stxCsharp.go index d5f4fab..014e649 100644 --- a/syntax/stxCsharp.go +++ b/lexers/stxCsharp.go @@ -1,6 +1,6 @@ //go:build stxCsharp || stxAll -package syntax +package lexers func init() { syntaxMap["csharp"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxCss.go b/lexers/stxCss.go similarity index 99% rename from syntax/stxCss.go rename to lexers/stxCss.go index 35b25a3..0373c01 100644 --- a/syntax/stxCss.go +++ b/lexers/stxCss.go @@ -1,6 +1,6 @@ //go:build stxCss || stxAll -package syntax +package lexers func init() { syntaxMap["css"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxD.go b/lexers/stxD.go similarity index 99% rename from syntax/stxD.go rename to lexers/stxD.go index 91be547..979e31a 100644 --- a/syntax/stxD.go +++ b/lexers/stxD.go @@ -1,6 +1,6 @@ //go:build stxD || stxAll -package syntax +package lexers func init() { syntaxMap["d"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxDart.go b/lexers/stxDart.go similarity index 99% rename from syntax/stxDart.go rename to lexers/stxDart.go index d4a9f2a..4f986e8 100644 --- a/syntax/stxDart.go +++ b/lexers/stxDart.go @@ -1,6 +1,6 @@ //go:build stxDart || stxAll -package syntax +package lexers func init() { syntaxMap["dart"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxDiff.go b/lexers/stxDiff.go similarity index 95% rename from syntax/stxDiff.go rename to lexers/stxDiff.go index c243716..b03c15e 100644 --- a/syntax/stxDiff.go +++ b/lexers/stxDiff.go @@ -1,6 +1,6 @@ //go:build stxDiff || stxAll -package syntax +package lexers func init() { syntaxMap["diff"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxDockerfile.go b/lexers/stxDockerfile.go similarity index 98% rename from syntax/stxDockerfile.go rename to lexers/stxDockerfile.go index b8543fc..28a51b8 100644 --- a/syntax/stxDockerfile.go +++ b/lexers/stxDockerfile.go @@ -1,6 +1,6 @@ //go:build stxDockerfile || stxAll -package syntax +package lexers func init() { syntaxMap["dockerfile"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxFish.go b/lexers/stxFish.go similarity index 99% rename from syntax/stxFish.go rename to lexers/stxFish.go index 5ac423c..59fafa4 100644 --- a/syntax/stxFish.go +++ b/lexers/stxFish.go @@ -1,6 +1,6 @@ //go:build stxFish || stxAll -package syntax +package lexers func init() { syntaxMap["fish"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxFortran.go b/lexers/stxFortran.go similarity index 99% rename from syntax/stxFortran.go rename to lexers/stxFortran.go index 7869781..8a660f4 100644 --- a/syntax/stxFortran.go +++ b/lexers/stxFortran.go @@ -1,6 +1,6 @@ //go:build stxFortran || stxAll -package syntax +package lexers func init() { syntaxMap["fortran"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxGdscript.go b/lexers/stxGdscript.go similarity index 99% rename from syntax/stxGdscript.go rename to lexers/stxGdscript.go index 069ba79..4901b0a 100644 --- a/syntax/stxGdscript.go +++ b/lexers/stxGdscript.go @@ -1,6 +1,6 @@ //go:build stxGdscript || stxAll -package syntax +package lexers func init() { syntaxMap["gdscript"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxGo.go b/lexers/stxGo.go similarity index 99% rename from syntax/stxGo.go rename to lexers/stxGo.go index f045e33..aaacdef 100644 --- a/syntax/stxGo.go +++ b/lexers/stxGo.go @@ -1,6 +1,6 @@ //go:build stxGo || stxAll -package syntax +package lexers func init() { syntaxMap["go"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxHaskell.go b/lexers/stxHaskell.go similarity index 98% rename from syntax/stxHaskell.go rename to lexers/stxHaskell.go index feee50c..24cb345 100644 --- a/syntax/stxHaskell.go +++ b/lexers/stxHaskell.go @@ -1,6 +1,6 @@ //go:build stxHaskell || stxAll -package syntax +package lexers func init() { syntaxMap["haskell"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxHtml5.go b/lexers/stxHtml5.go similarity index 99% rename from syntax/stxHtml5.go rename to lexers/stxHtml5.go index 330f58e..31d1fda 100644 --- a/syntax/stxHtml5.go +++ b/lexers/stxHtml5.go @@ -1,6 +1,6 @@ //go:build stxHtml5 || stxAll -package syntax +package lexers func init() { syntaxMap["html5"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxIni.go b/lexers/stxIni.go similarity index 96% rename from syntax/stxIni.go rename to lexers/stxIni.go index e735894..755811d 100644 --- a/syntax/stxIni.go +++ b/lexers/stxIni.go @@ -1,6 +1,6 @@ //go:build stxIni || stxAll -package syntax +package lexers func init() { syntaxMap["ini"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxIno.go b/lexers/stxIno.go similarity index 99% rename from syntax/stxIno.go rename to lexers/stxIno.go index efcb841..40c7f4e 100644 --- a/syntax/stxIno.go +++ b/lexers/stxIno.go @@ -1,6 +1,6 @@ //go:build stxIno || stxAll -package syntax +package lexers func init() { syntaxMap["ino"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxJava.go b/lexers/stxJava.go similarity index 98% rename from syntax/stxJava.go rename to lexers/stxJava.go index c08f0a4..fbb907b 100644 --- a/syntax/stxJava.go +++ b/lexers/stxJava.go @@ -1,6 +1,6 @@ //go:build stxJava || stxAll -package syntax +package lexers func init() { syntaxMap["java"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxJs.go b/lexers/stxJs.go similarity index 99% rename from syntax/stxJs.go rename to lexers/stxJs.go index f719edf..5014f49 100644 --- a/syntax/stxJs.go +++ b/lexers/stxJs.go @@ -1,6 +1,6 @@ //go:build stxJs || stxAll -package syntax +package lexers func init() { syntaxMap["js"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxJson.go b/lexers/stxJson.go similarity index 98% rename from syntax/stxJson.go rename to lexers/stxJson.go index 509b886..1c4b86b 100644 --- a/syntax/stxJson.go +++ b/lexers/stxJson.go @@ -1,6 +1,6 @@ //go:build stxJson || stxAll -package syntax +package lexers func init() { syntaxMap["json"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxLisp.go b/lexers/stxLisp.go similarity index 97% rename from syntax/stxLisp.go rename to lexers/stxLisp.go index 459c936..955e1fe 100644 --- a/syntax/stxLisp.go +++ b/lexers/stxLisp.go @@ -1,6 +1,6 @@ //go:build stxLisp || stxAll -package syntax +package lexers func init() { syntaxMap["lisp"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxLua.go b/lexers/stxLua.go similarity index 99% rename from syntax/stxLua.go rename to lexers/stxLua.go index 8882606..a9aa309 100644 --- a/syntax/stxLua.go +++ b/lexers/stxLua.go @@ -1,6 +1,6 @@ //go:build stxLua || stxAll -package syntax +package lexers func init() { syntaxMap["lua"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxMakefile.go b/lexers/stxMakefile.go similarity index 99% rename from syntax/stxMakefile.go rename to lexers/stxMakefile.go index 06b8322..190fd9b 100644 --- a/syntax/stxMakefile.go +++ b/lexers/stxMakefile.go @@ -1,6 +1,6 @@ //go:build stxMakefile || stxAll -package syntax +package lexers func init() { syntaxMap["makefile"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxObjc.go b/lexers/stxObjc.go similarity index 99% rename from syntax/stxObjc.go rename to lexers/stxObjc.go index ffc9aae..0186a51 100644 --- a/syntax/stxObjc.go +++ b/lexers/stxObjc.go @@ -1,6 +1,6 @@ //go:build stxObjc || stxAll -package syntax +package lexers func init() { syntaxMap["objc"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxOcaml.go b/lexers/stxOcaml.go similarity index 97% rename from syntax/stxOcaml.go rename to lexers/stxOcaml.go index 4676a33..a5753e2 100644 --- a/syntax/stxOcaml.go +++ b/lexers/stxOcaml.go @@ -1,6 +1,6 @@ //go:build stxOcaml || stxAll -package syntax +package lexers func init() { syntaxMap["ocaml"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxPascal.go b/lexers/stxPascal.go similarity index 99% rename from syntax/stxPascal.go rename to lexers/stxPascal.go index fd02324..f6d5e3c 100644 --- a/syntax/stxPascal.go +++ b/lexers/stxPascal.go @@ -1,6 +1,6 @@ //go:build stxPascal || stxAll -package syntax +package lexers func init() { syntaxMap["pascal"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxPerl.go b/lexers/stxPerl.go similarity index 99% rename from syntax/stxPerl.go rename to lexers/stxPerl.go index a3c1a7b..1898415 100644 --- a/syntax/stxPerl.go +++ b/lexers/stxPerl.go @@ -1,6 +1,6 @@ //go:build stxPerl || stxAll -package syntax +package lexers func init() { syntaxMap["perl"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxPhp.go b/lexers/stxPhp.go similarity index 99% rename from syntax/stxPhp.go rename to lexers/stxPhp.go index f4a2b2e..6114ddb 100644 --- a/syntax/stxPhp.go +++ b/lexers/stxPhp.go @@ -1,6 +1,6 @@ //go:build stxPhp || stxAll -package syntax +package lexers func init() { syntaxMap["php"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxPython.go b/lexers/stxPython.go similarity index 99% rename from syntax/stxPython.go rename to lexers/stxPython.go index 50f576b..7425653 100644 --- a/syntax/stxPython.go +++ b/lexers/stxPython.go @@ -1,6 +1,6 @@ //go:build stxPython || stxAll -package syntax +package lexers func init() { syntaxMap["python"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxR.go b/lexers/stxR.go similarity index 96% rename from syntax/stxR.go rename to lexers/stxR.go index 82974c4..fc80b40 100644 --- a/syntax/stxR.go +++ b/lexers/stxR.go @@ -1,6 +1,6 @@ //go:build stxR || stxAll -package syntax +package lexers func init() { syntaxMap["r"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxRuby.go b/lexers/stxRuby.go similarity index 98% rename from syntax/stxRuby.go rename to lexers/stxRuby.go index 22071cc..2d46889 100644 --- a/syntax/stxRuby.go +++ b/lexers/stxRuby.go @@ -1,6 +1,6 @@ //go:build stxRuby || stxAll -package syntax +package lexers func init() { syntaxMap["ruby"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxRust.go b/lexers/stxRust.go similarity index 98% rename from syntax/stxRust.go rename to lexers/stxRust.go index 491ed34..032f4e0 100644 --- a/syntax/stxRust.go +++ b/lexers/stxRust.go @@ -1,6 +1,6 @@ //go:build stxRust || stxAll -package syntax +package lexers func init() { syntaxMap["rust"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxScala.go b/lexers/stxScala.go similarity index 98% rename from syntax/stxScala.go rename to lexers/stxScala.go index 5386dd7..c2e5e4e 100644 --- a/syntax/stxScala.go +++ b/lexers/stxScala.go @@ -1,6 +1,6 @@ //go:build stxScala || stxAll -package syntax +package lexers func init() { syntaxMap["scala"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxShell.go b/lexers/stxShell.go similarity index 99% rename from syntax/stxShell.go rename to lexers/stxShell.go index cbf2da2..c63115e 100644 --- a/syntax/stxShell.go +++ b/lexers/stxShell.go @@ -1,6 +1,6 @@ //go:build stxShell || stxAll -package syntax +package lexers func init() { syntaxMap["shell"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxSwift.go b/lexers/stxSwift.go similarity index 98% rename from syntax/stxSwift.go rename to lexers/stxSwift.go index 1694876..3cd1faf 100644 --- a/syntax/stxSwift.go +++ b/lexers/stxSwift.go @@ -1,6 +1,6 @@ //go:build stxSwift || stxAll -package syntax +package lexers func init() { syntaxMap["swift"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxToml.go b/lexers/stxToml.go similarity index 98% rename from syntax/stxToml.go rename to lexers/stxToml.go index b485d60..9bfee32 100644 --- a/syntax/stxToml.go +++ b/lexers/stxToml.go @@ -1,6 +1,6 @@ //go:build stxToml || stxAll -package syntax +package lexers func init() { syntaxMap["toml"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxTs.go b/lexers/stxTs.go similarity index 99% rename from syntax/stxTs.go rename to lexers/stxTs.go index 4d97a0d..a4b35a9 100644 --- a/syntax/stxTs.go +++ b/lexers/stxTs.go @@ -1,6 +1,6 @@ //go:build stxTs || stxAll -package syntax +package lexers func init() { syntaxMap["ts"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxXml.go b/lexers/stxXml.go similarity index 97% rename from syntax/stxXml.go rename to lexers/stxXml.go index e1b1111..16c3f46 100644 --- a/syntax/stxXml.go +++ b/lexers/stxXml.go @@ -1,6 +1,6 @@ //go:build stxXml || stxAll -package syntax +package lexers func init() { syntaxMap["xml"] = &lazySyntax{init: func() []byte { diff --git a/syntax/stxYaml.go b/lexers/stxYaml.go similarity index 98% rename from syntax/stxYaml.go rename to lexers/stxYaml.go index 6f8f4c3..c1000c0 100644 --- a/syntax/stxYaml.go +++ b/lexers/stxYaml.go @@ -1,6 +1,6 @@ //go:build stxYaml || stxAll -package syntax +package lexers func init() { syntaxMap["yaml"] = &lazySyntax{init: func() []byte {