nano-max-hub 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/nano-max-hub.gemspec +12 -0
- data/rouge-5.0.0/Gemfile +48 -0
- data/rouge-5.0.0/LICENSE +187 -0
- data/rouge-5.0.0/bin/rougify +17 -0
- data/rouge-5.0.0/lib/rouge/cli.rb +527 -0
- data/rouge-5.0.0/lib/rouge/demos/abap +32 -0
- data/rouge-5.0.0/lib/rouge/demos/actionscript +4 -0
- data/rouge-5.0.0/lib/rouge/demos/ada +26 -0
- data/rouge-5.0.0/lib/rouge/demos/apache +21 -0
- data/rouge-5.0.0/lib/rouge/demos/apex +9 -0
- data/rouge-5.0.0/lib/rouge/demos/apiblueprint +33 -0
- data/rouge-5.0.0/lib/rouge/demos/applescript +2 -0
- data/rouge-5.0.0/lib/rouge/demos/armasm +12 -0
- data/rouge-5.0.0/lib/rouge/demos/augeas +16 -0
- data/rouge-5.0.0/lib/rouge/demos/awk +4 -0
- data/rouge-5.0.0/lib/rouge/demos/batchfile +3 -0
- data/rouge-5.0.0/lib/rouge/demos/bbcbasic +6 -0
- data/rouge-5.0.0/lib/rouge/demos/bibtex +12 -0
- data/rouge-5.0.0/lib/rouge/demos/bicep +10 -0
- data/rouge-5.0.0/lib/rouge/demos/biml +38 -0
- data/rouge-5.0.0/lib/rouge/demos/bpf +7 -0
- data/rouge-5.0.0/lib/rouge/demos/brainfuck +5 -0
- data/rouge-5.0.0/lib/rouge/demos/brightscript +6 -0
- data/rouge-5.0.0/lib/rouge/demos/bsl +7 -0
- data/rouge-5.0.0/lib/rouge/demos/c +8 -0
- data/rouge-5.0.0/lib/rouge/demos/ceylon +7 -0
- data/rouge-5.0.0/lib/rouge/demos/cfscript +18 -0
- data/rouge-5.0.0/lib/rouge/demos/cisco_ios +19 -0
- data/rouge-5.0.0/lib/rouge/demos/clean +6 -0
- data/rouge-5.0.0/lib/rouge/demos/clojure +5 -0
- data/rouge-5.0.0/lib/rouge/demos/cmake +7 -0
- data/rouge-5.0.0/lib/rouge/demos/cmhg +8 -0
- data/rouge-5.0.0/lib/rouge/demos/cobol +103 -0
- data/rouge-5.0.0/lib/rouge/demos/codeowners +6 -0
- data/rouge-5.0.0/lib/rouge/demos/coffeescript +5 -0
- data/rouge-5.0.0/lib/rouge/demos/common_lisp +1 -0
- data/rouge-5.0.0/lib/rouge/demos/conf +4 -0
- data/rouge-5.0.0/lib/rouge/demos/console +6 -0
- data/rouge-5.0.0/lib/rouge/demos/cpp +8 -0
- data/rouge-5.0.0/lib/rouge/demos/crystal +45 -0
- data/rouge-5.0.0/lib/rouge/demos/csharp +5 -0
- data/rouge-5.0.0/lib/rouge/demos/css +4 -0
- data/rouge-5.0.0/lib/rouge/demos/csvs +8 -0
- data/rouge-5.0.0/lib/rouge/demos/cuda +11 -0
- data/rouge-5.0.0/lib/rouge/demos/cypher +5 -0
- data/rouge-5.0.0/lib/rouge/demos/cython +6 -0
- data/rouge-5.0.0/lib/rouge/demos/d +16 -0
- data/rouge-5.0.0/lib/rouge/demos/dafny +16 -0
- data/rouge-5.0.0/lib/rouge/demos/dart +6 -0
- data/rouge-5.0.0/lib/rouge/demos/datastudio +20 -0
- data/rouge-5.0.0/lib/rouge/demos/diff +7 -0
- data/rouge-5.0.0/lib/rouge/demos/digdag +19 -0
- data/rouge-5.0.0/lib/rouge/demos/docker +9 -0
- data/rouge-5.0.0/lib/rouge/demos/dot +5 -0
- data/rouge-5.0.0/lib/rouge/demos/dylan +8 -0
- data/rouge-5.0.0/lib/rouge/demos/ecl +17 -0
- data/rouge-5.0.0/lib/rouge/demos/eex +1 -0
- data/rouge-5.0.0/lib/rouge/demos/eiffel +30 -0
- data/rouge-5.0.0/lib/rouge/demos/elixir +1 -0
- data/rouge-5.0.0/lib/rouge/demos/elm +4 -0
- data/rouge-5.0.0/lib/rouge/demos/email +11 -0
- data/rouge-5.0.0/lib/rouge/demos/epp +4 -0
- data/rouge-5.0.0/lib/rouge/demos/erb +1 -0
- data/rouge-5.0.0/lib/rouge/demos/erlang +7 -0
- data/rouge-5.0.0/lib/rouge/demos/escape +3 -0
- data/rouge-5.0.0/lib/rouge/demos/factor +5 -0
- data/rouge-5.0.0/lib/rouge/demos/fluent +13 -0
- data/rouge-5.0.0/lib/rouge/demos/fortran +22 -0
- data/rouge-5.0.0/lib/rouge/demos/freefem +16 -0
- data/rouge-5.0.0/lib/rouge/demos/fsharp +12 -0
- data/rouge-5.0.0/lib/rouge/demos/gdscript +18 -0
- data/rouge-5.0.0/lib/rouge/demos/ghc-cmm +23 -0
- data/rouge-5.0.0/lib/rouge/demos/ghc-core +26 -0
- data/rouge-5.0.0/lib/rouge/demos/gherkin +17 -0
- data/rouge-5.0.0/lib/rouge/demos/gjs +23 -0
- data/rouge-5.0.0/lib/rouge/demos/glsl +14 -0
- data/rouge-5.0.0/lib/rouge/demos/go +7 -0
- data/rouge-5.0.0/lib/rouge/demos/gradle +10 -0
- data/rouge-5.0.0/lib/rouge/demos/graphql +17 -0
- data/rouge-5.0.0/lib/rouge/demos/groovy +9 -0
- data/rouge-5.0.0/lib/rouge/demos/gts +36 -0
- data/rouge-5.0.0/lib/rouge/demos/hack +5 -0
- data/rouge-5.0.0/lib/rouge/demos/haml +5 -0
- data/rouge-5.0.0/lib/rouge/demos/handlebars +7 -0
- data/rouge-5.0.0/lib/rouge/demos/haskell +6 -0
- data/rouge-5.0.0/lib/rouge/demos/haxe +4 -0
- data/rouge-5.0.0/lib/rouge/demos/hcl +7 -0
- data/rouge-5.0.0/lib/rouge/demos/hlsl +20 -0
- data/rouge-5.0.0/lib/rouge/demos/hocon +8 -0
- data/rouge-5.0.0/lib/rouge/demos/hql +5 -0
- data/rouge-5.0.0/lib/rouge/demos/html +8 -0
- data/rouge-5.0.0/lib/rouge/demos/http +14 -0
- data/rouge-5.0.0/lib/rouge/demos/hylang +10 -0
- data/rouge-5.0.0/lib/rouge/demos/idlang +8 -0
- data/rouge-5.0.0/lib/rouge/demos/idris +13 -0
- data/rouge-5.0.0/lib/rouge/demos/iecst +21 -0
- data/rouge-5.0.0/lib/rouge/demos/igorpro +9 -0
- data/rouge-5.0.0/lib/rouge/demos/ini +4 -0
- data/rouge-5.0.0/lib/rouge/demos/io +11 -0
- data/rouge-5.0.0/lib/rouge/demos/irb +4 -0
- data/rouge-5.0.0/lib/rouge/demos/irb_output +2 -0
- data/rouge-5.0.0/lib/rouge/demos/isabelle +16 -0
- data/rouge-5.0.0/lib/rouge/demos/isbl +4 -0
- data/rouge-5.0.0/lib/rouge/demos/j +12 -0
- data/rouge-5.0.0/lib/rouge/demos/janet +3 -0
- data/rouge-5.0.0/lib/rouge/demos/java +5 -0
- data/rouge-5.0.0/lib/rouge/demos/javascript +1 -0
- data/rouge-5.0.0/lib/rouge/demos/jinja +9 -0
- data/rouge-5.0.0/lib/rouge/demos/jsl +3 -0
- data/rouge-5.0.0/lib/rouge/demos/json +1 -0
- data/rouge-5.0.0/lib/rouge/demos/json-doc +1 -0
- data/rouge-5.0.0/lib/rouge/demos/json5 +12 -0
- data/rouge-5.0.0/lib/rouge/demos/jsonnet +28 -0
- data/rouge-5.0.0/lib/rouge/demos/jsp +29 -0
- data/rouge-5.0.0/lib/rouge/demos/jsx +17 -0
- data/rouge-5.0.0/lib/rouge/demos/julia +11 -0
- data/rouge-5.0.0/lib/rouge/demos/kick_assembler +14 -0
- data/rouge-5.0.0/lib/rouge/demos/kotlin +3 -0
- data/rouge-5.0.0/lib/rouge/demos/lasso +12 -0
- data/rouge-5.0.0/lib/rouge/demos/lean +8 -0
- data/rouge-5.0.0/lib/rouge/demos/liquid +10 -0
- data/rouge-5.0.0/lib/rouge/demos/literate_coffeescript +3 -0
- data/rouge-5.0.0/lib/rouge/demos/literate_haskell +7 -0
- data/rouge-5.0.0/lib/rouge/demos/livescript +15 -0
- data/rouge-5.0.0/lib/rouge/demos/llvm +20 -0
- data/rouge-5.0.0/lib/rouge/demos/lua +12 -0
- data/rouge-5.0.0/lib/rouge/demos/lustre +6 -0
- data/rouge-5.0.0/lib/rouge/demos/lutin +18 -0
- data/rouge-5.0.0/lib/rouge/demos/m68k +16 -0
- data/rouge-5.0.0/lib/rouge/demos/magik +6 -0
- data/rouge-5.0.0/lib/rouge/demos/make +6 -0
- data/rouge-5.0.0/lib/rouge/demos/markdown +4 -0
- data/rouge-5.0.0/lib/rouge/demos/mason +22 -0
- data/rouge-5.0.0/lib/rouge/demos/mathematica +8 -0
- data/rouge-5.0.0/lib/rouge/demos/matlab +6 -0
- data/rouge-5.0.0/lib/rouge/demos/meson +10 -0
- data/rouge-5.0.0/lib/rouge/demos/minizinc +23 -0
- data/rouge-5.0.0/lib/rouge/demos/mojo +10 -0
- data/rouge-5.0.0/lib/rouge/demos/moonscript +16 -0
- data/rouge-5.0.0/lib/rouge/demos/mosel +10 -0
- data/rouge-5.0.0/lib/rouge/demos/msgtrans +4 -0
- data/rouge-5.0.0/lib/rouge/demos/mxml +22 -0
- data/rouge-5.0.0/lib/rouge/demos/nasm +26 -0
- data/rouge-5.0.0/lib/rouge/demos/nesasm +11 -0
- data/rouge-5.0.0/lib/rouge/demos/nginx +5 -0
- data/rouge-5.0.0/lib/rouge/demos/nial +35 -0
- data/rouge-5.0.0/lib/rouge/demos/nim +27 -0
- data/rouge-5.0.0/lib/rouge/demos/nix +19 -0
- data/rouge-5.0.0/lib/rouge/demos/objective_c +18 -0
- data/rouge-5.0.0/lib/rouge/demos/objective_cpp +17 -0
- data/rouge-5.0.0/lib/rouge/demos/ocaml +12 -0
- data/rouge-5.0.0/lib/rouge/demos/ocl +4 -0
- data/rouge-5.0.0/lib/rouge/demos/openedge +4 -0
- data/rouge-5.0.0/lib/rouge/demos/opentype_feature_file +5 -0
- data/rouge-5.0.0/lib/rouge/demos/p4 +99 -0
- data/rouge-5.0.0/lib/rouge/demos/pascal +14 -0
- data/rouge-5.0.0/lib/rouge/demos/pdf +29 -0
- data/rouge-5.0.0/lib/rouge/demos/perl +5 -0
- data/rouge-5.0.0/lib/rouge/demos/php +3 -0
- data/rouge-5.0.0/lib/rouge/demos/plaintext +1 -0
- data/rouge-5.0.0/lib/rouge/demos/plist +11 -0
- data/rouge-5.0.0/lib/rouge/demos/plsql +2 -0
- data/rouge-5.0.0/lib/rouge/demos/pony +17 -0
- data/rouge-5.0.0/lib/rouge/demos/postscript +9 -0
- data/rouge-5.0.0/lib/rouge/demos/powershell +13 -0
- data/rouge-5.0.0/lib/rouge/demos/praat +26 -0
- data/rouge-5.0.0/lib/rouge/demos/prolog +9 -0
- data/rouge-5.0.0/lib/rouge/demos/prometheus +9 -0
- data/rouge-5.0.0/lib/rouge/demos/properties +7 -0
- data/rouge-5.0.0/lib/rouge/demos/protobuf +5 -0
- data/rouge-5.0.0/lib/rouge/demos/puppet +6 -0
- data/rouge-5.0.0/lib/rouge/demos/python +6 -0
- data/rouge-5.0.0/lib/rouge/demos/q +8 -0
- data/rouge-5.0.0/lib/rouge/demos/qml +9 -0
- data/rouge-5.0.0/lib/rouge/demos/r +8 -0
- data/rouge-5.0.0/lib/rouge/demos/racket +24 -0
- data/rouge-5.0.0/lib/rouge/demos/reasonml +12 -0
- data/rouge-5.0.0/lib/rouge/demos/rego +8 -0
- data/rouge-5.0.0/lib/rouge/demos/rescript +26 -0
- data/rouge-5.0.0/lib/rouge/demos/rml +33 -0
- data/rouge-5.0.0/lib/rouge/demos/robot_framework +27 -0
- data/rouge-5.0.0/lib/rouge/demos/rocq +16 -0
- data/rouge-5.0.0/lib/rouge/demos/ruby +9 -0
- data/rouge-5.0.0/lib/rouge/demos/rust +12 -0
- data/rouge-5.0.0/lib/rouge/demos/sas +13 -0
- data/rouge-5.0.0/lib/rouge/demos/sass +3 -0
- data/rouge-5.0.0/lib/rouge/demos/scala +3 -0
- data/rouge-5.0.0/lib/rouge/demos/scheme +4 -0
- data/rouge-5.0.0/lib/rouge/demos/scss +5 -0
- data/rouge-5.0.0/lib/rouge/demos/sed +4 -0
- data/rouge-5.0.0/lib/rouge/demos/shell +2 -0
- data/rouge-5.0.0/lib/rouge/demos/sieve +10 -0
- data/rouge-5.0.0/lib/rouge/demos/slice +10 -0
- data/rouge-5.0.0/lib/rouge/demos/slim +17 -0
- data/rouge-5.0.0/lib/rouge/demos/smalltalk +6 -0
- data/rouge-5.0.0/lib/rouge/demos/smarty +11 -0
- data/rouge-5.0.0/lib/rouge/demos/sml +4 -0
- data/rouge-5.0.0/lib/rouge/demos/sparql +6 -0
- data/rouge-5.0.0/lib/rouge/demos/sqf +14 -0
- data/rouge-5.0.0/lib/rouge/demos/sql +1 -0
- data/rouge-5.0.0/lib/rouge/demos/ssh +4 -0
- data/rouge-5.0.0/lib/rouge/demos/stan +13 -0
- data/rouge-5.0.0/lib/rouge/demos/stata +14 -0
- data/rouge-5.0.0/lib/rouge/demos/supercollider +11 -0
- data/rouge-5.0.0/lib/rouge/demos/svelte +29 -0
- data/rouge-5.0.0/lib/rouge/demos/swift +5 -0
- data/rouge-5.0.0/lib/rouge/demos/systemd +4 -0
- data/rouge-5.0.0/lib/rouge/demos/syzlang +15 -0
- data/rouge-5.0.0/lib/rouge/demos/syzprog +8 -0
- data/rouge-5.0.0/lib/rouge/demos/tap +5 -0
- data/rouge-5.0.0/lib/rouge/demos/tcl +1 -0
- data/rouge-5.0.0/lib/rouge/demos/terraform +16 -0
- data/rouge-5.0.0/lib/rouge/demos/tex +1 -0
- data/rouge-5.0.0/lib/rouge/demos/thrift +15 -0
- data/rouge-5.0.0/lib/rouge/demos/toml +9 -0
- data/rouge-5.0.0/lib/rouge/demos/tsx +17 -0
- data/rouge-5.0.0/lib/rouge/demos/ttcn3 +6 -0
- data/rouge-5.0.0/lib/rouge/demos/tulip +13 -0
- data/rouge-5.0.0/lib/rouge/demos/turtle +26 -0
- data/rouge-5.0.0/lib/rouge/demos/twig +9 -0
- data/rouge-5.0.0/lib/rouge/demos/typescript +1 -0
- data/rouge-5.0.0/lib/rouge/demos/vala +8 -0
- data/rouge-5.0.0/lib/rouge/demos/vb +4 -0
- data/rouge-5.0.0/lib/rouge/demos/vcl +12 -0
- data/rouge-5.0.0/lib/rouge/demos/velocity +9 -0
- data/rouge-5.0.0/lib/rouge/demos/verilog +27 -0
- data/rouge-5.0.0/lib/rouge/demos/veryl +24 -0
- data/rouge-5.0.0/lib/rouge/demos/vhdl +23 -0
- data/rouge-5.0.0/lib/rouge/demos/viml +14 -0
- data/rouge-5.0.0/lib/rouge/demos/vue +11 -0
- data/rouge-5.0.0/lib/rouge/demos/wollok +11 -0
- data/rouge-5.0.0/lib/rouge/demos/xml +2 -0
- data/rouge-5.0.0/lib/rouge/demos/xojo +14 -0
- data/rouge-5.0.0/lib/rouge/demos/xpath +2 -0
- data/rouge-5.0.0/lib/rouge/demos/xquery +22 -0
- data/rouge-5.0.0/lib/rouge/demos/yaml +4 -0
- data/rouge-5.0.0/lib/rouge/demos/yang +17 -0
- data/rouge-5.0.0/lib/rouge/demos/zig +6 -0
- data/rouge-5.0.0/lib/rouge/eager.rb +3 -0
- data/rouge-5.0.0/lib/rouge/formatter.rb +112 -0
- data/rouge-5.0.0/lib/rouge/formatters/html.rb +64 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_debug.rb +16 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_inline.rb +30 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_legacy.rb +56 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_legacy_table.rb +57 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_line_highlighter.rb +31 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_line_table.rb +56 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_linewise.rb +31 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_pygments.rb +23 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_table.rb +77 -0
- data/rouge-5.0.0/lib/rouge/formatters/null.rb +20 -0
- data/rouge-5.0.0/lib/rouge/formatters/terminal256.rb +198 -0
- data/rouge-5.0.0/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/rouge-5.0.0/lib/rouge/formatters/tex.rb +92 -0
- data/rouge-5.0.0/lib/rouge/guesser.rb +57 -0
- data/rouge-5.0.0/lib/rouge/guessers/disambiguation.rb +172 -0
- data/rouge-5.0.0/lib/rouge/guessers/filename.rb +27 -0
- data/rouge-5.0.0/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/rouge-5.0.0/lib/rouge/guessers/mimetype.rb +16 -0
- data/rouge-5.0.0/lib/rouge/guessers/modeline.rb +46 -0
- data/rouge-5.0.0/lib/rouge/guessers/source.rb +31 -0
- data/rouge-5.0.0/lib/rouge/guessers/util.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexer.rb +556 -0
- data/rouge-5.0.0/lib/rouge/lexers/abap/builtins.rb +187 -0
- data/rouge-5.0.0/lib/rouge/lexers/abap.rb +132 -0
- data/rouge-5.0.0/lib/rouge/lexers/actionscript.rb +196 -0
- data/rouge-5.0.0/lib/rouge/lexers/ada.rb +162 -0
- data/rouge-5.0.0/lib/rouge/lexers/apache/keywords.rb +16 -0
- data/rouge-5.0.0/lib/rouge/lexers/apache.rb +84 -0
- data/rouge-5.0.0/lib/rouge/lexers/apex.rb +128 -0
- data/rouge-5.0.0/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/rouge-5.0.0/lib/rouge/lexers/apple_script.rb +370 -0
- data/rouge-5.0.0/lib/rouge/lexers/armasm.rb +145 -0
- data/rouge-5.0.0/lib/rouge/lexers/augeas.rb +93 -0
- data/rouge-5.0.0/lib/rouge/lexers/awk.rb +162 -0
- data/rouge-5.0.0/lib/rouge/lexers/batchfile.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/rouge-5.0.0/lib/rouge/lexers/bibtex.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/bicep.rb +111 -0
- data/rouge-5.0.0/lib/rouge/lexers/biml.rb +70 -0
- data/rouge-5.0.0/lib/rouge/lexers/bpf.rb +118 -0
- data/rouge-5.0.0/lib/rouge/lexers/brainfuck.rb +54 -0
- data/rouge-5.0.0/lib/rouge/lexers/brightscript.rb +146 -0
- data/rouge-5.0.0/lib/rouge/lexers/bsl.rb +82 -0
- data/rouge-5.0.0/lib/rouge/lexers/c.rb +204 -0
- data/rouge-5.0.0/lib/rouge/lexers/ceylon.rb +96 -0
- data/rouge-5.0.0/lib/rouge/lexers/cfscript.rb +154 -0
- data/rouge-5.0.0/lib/rouge/lexers/cisco_ios.rb +83 -0
- data/rouge-5.0.0/lib/rouge/lexers/clean.rb +156 -0
- data/rouge-5.0.0/lib/rouge/lexers/clojure.rb +113 -0
- data/rouge-5.0.0/lib/rouge/lexers/cmake.rb +218 -0
- data/rouge-5.0.0/lib/rouge/lexers/cmhg.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/cobol.rb +137 -0
- data/rouge-5.0.0/lib/rouge/lexers/codeowners.rb +30 -0
- data/rouge-5.0.0/lib/rouge/lexers/coffeescript.rb +215 -0
- data/rouge-5.0.0/lib/rouge/lexers/common_lisp.rb +346 -0
- data/rouge-5.0.0/lib/rouge/lexers/conf.rb +25 -0
- data/rouge-5.0.0/lib/rouge/lexers/console.rb +196 -0
- data/rouge-5.0.0/lib/rouge/lexers/cpp.rb +102 -0
- data/rouge-5.0.0/lib/rouge/lexers/crystal.rb +435 -0
- data/rouge-5.0.0/lib/rouge/lexers/csharp.rb +118 -0
- data/rouge-5.0.0/lib/rouge/lexers/css.rb +337 -0
- data/rouge-5.0.0/lib/rouge/lexers/csvs.rb +44 -0
- data/rouge-5.0.0/lib/rouge/lexers/cuda.rb +35 -0
- data/rouge-5.0.0/lib/rouge/lexers/cypher.rb +116 -0
- data/rouge-5.0.0/lib/rouge/lexers/cython.rb +127 -0
- data/rouge-5.0.0/lib/rouge/lexers/d.rb +177 -0
- data/rouge-5.0.0/lib/rouge/lexers/dafny.rb +128 -0
- data/rouge-5.0.0/lib/rouge/lexers/dart.rb +108 -0
- data/rouge-5.0.0/lib/rouge/lexers/datastudio.rb +138 -0
- data/rouge-5.0.0/lib/rouge/lexers/diff.rb +47 -0
- data/rouge-5.0.0/lib/rouge/lexers/digdag.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/docker.rb +55 -0
- data/rouge-5.0.0/lib/rouge/lexers/dot.rb +70 -0
- data/rouge-5.0.0/lib/rouge/lexers/dylan.rb +109 -0
- data/rouge-5.0.0/lib/rouge/lexers/ecl.rb +175 -0
- data/rouge-5.0.0/lib/rouge/lexers/eex.rb +52 -0
- data/rouge-5.0.0/lib/rouge/lexers/eiffel.rb +65 -0
- data/rouge-5.0.0/lib/rouge/lexers/elixir.rb +158 -0
- data/rouge-5.0.0/lib/rouge/lexers/elm.rb +90 -0
- data/rouge-5.0.0/lib/rouge/lexers/email.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/epp.rb +51 -0
- data/rouge-5.0.0/lib/rouge/lexers/erb.rb +53 -0
- data/rouge-5.0.0/lib/rouge/lexers/erlang.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/escape.rb +58 -0
- data/rouge-5.0.0/lib/rouge/lexers/factor.rb +303 -0
- data/rouge-5.0.0/lib/rouge/lexers/fluent.rb +74 -0
- data/rouge-5.0.0/lib/rouge/lexers/fortran.rb +178 -0
- data/rouge-5.0.0/lib/rouge/lexers/freefem.rb +240 -0
- data/rouge-5.0.0/lib/rouge/lexers/fsharp.rb +120 -0
- data/rouge-5.0.0/lib/rouge/lexers/gdscript.rb +171 -0
- data/rouge-5.0.0/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/rouge-5.0.0/lib/rouge/lexers/ghc_core.rb +152 -0
- data/rouge-5.0.0/lib/rouge/lexers/gherkin/keywords.rb +23 -0
- data/rouge-5.0.0/lib/rouge/lexers/gherkin.rb +142 -0
- data/rouge-5.0.0/lib/rouge/lexers/gjs.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/glsl/builtins.rb +17 -0
- data/rouge-5.0.0/lib/rouge/lexers/glsl.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/go.rb +177 -0
- data/rouge-5.0.0/lib/rouge/lexers/gradle.rb +38 -0
- data/rouge-5.0.0/lib/rouge/lexers/graphql.rb +261 -0
- data/rouge-5.0.0/lib/rouge/lexers/groovy.rb +119 -0
- data/rouge-5.0.0/lib/rouge/lexers/gts.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/hack.rb +47 -0
- data/rouge-5.0.0/lib/rouge/lexers/haml.rb +226 -0
- data/rouge-5.0.0/lib/rouge/lexers/handlebars.rb +91 -0
- data/rouge-5.0.0/lib/rouge/lexers/haskell.rb +207 -0
- data/rouge-5.0.0/lib/rouge/lexers/haxe.rb +265 -0
- data/rouge-5.0.0/lib/rouge/lexers/hcl.rb +166 -0
- data/rouge-5.0.0/lib/rouge/lexers/hlsl.rb +166 -0
- data/rouge-5.0.0/lib/rouge/lexers/hocon.rb +86 -0
- data/rouge-5.0.0/lib/rouge/lexers/hql.rb +135 -0
- data/rouge-5.0.0/lib/rouge/lexers/html.rb +141 -0
- data/rouge-5.0.0/lib/rouge/lexers/http.rb +87 -0
- data/rouge-5.0.0/lib/rouge/lexers/hylang.rb +93 -0
- data/rouge-5.0.0/lib/rouge/lexers/idlang.rb +312 -0
- data/rouge-5.0.0/lib/rouge/lexers/idris.rb +210 -0
- data/rouge-5.0.0/lib/rouge/lexers/iecst.rb +92 -0
- data/rouge-5.0.0/lib/rouge/lexers/igorpro/builtins.rb +1530 -0
- data/rouge-5.0.0/lib/rouge/lexers/igorpro.rb +193 -0
- data/rouge-5.0.0/lib/rouge/lexers/ini.rb +56 -0
- data/rouge-5.0.0/lib/rouge/lexers/io.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/irb.rb +73 -0
- data/rouge-5.0.0/lib/rouge/lexers/isabelle.rb +251 -0
- data/rouge-5.0.0/lib/rouge/lexers/isbl.rb +61 -0
- data/rouge-5.0.0/lib/rouge/lexers/j.rb +244 -0
- data/rouge-5.0.0/lib/rouge/lexers/janet.rb +218 -0
- data/rouge-5.0.0/lib/rouge/lexers/java.rb +92 -0
- data/rouge-5.0.0/lib/rouge/lexers/javascript.rb +315 -0
- data/rouge-5.0.0/lib/rouge/lexers/jinja.rb +169 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsl.rb +66 -0
- data/rouge-5.0.0/lib/rouge/lexers/json.rb +72 -0
- data/rouge-5.0.0/lib/rouge/lexers/json5.rb +74 -0
- data/rouge-5.0.0/lib/rouge/lexers/json_doc.rb +26 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsonnet.rb +153 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsp.rb +119 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsx.rb +91 -0
- data/rouge-5.0.0/lib/rouge/lexers/julia.rb +293 -0
- data/rouge-5.0.0/lib/rouge/lexers/kick_assembler.rb +100 -0
- data/rouge-5.0.0/lib/rouge/lexers/kotlin.rb +150 -0
- data/rouge-5.0.0/lib/rouge/lexers/lasso/keywords.rb +20 -0
- data/rouge-5.0.0/lib/rouge/lexers/lasso.rb +212 -0
- data/rouge-5.0.0/lib/rouge/lexers/lean.rb +164 -0
- data/rouge-5.0.0/lib/rouge/lexers/liquid.rb +284 -0
- data/rouge-5.0.0/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/rouge-5.0.0/lib/rouge/lexers/livescript.rb +310 -0
- data/rouge-5.0.0/lib/rouge/lexers/llvm/keywords.rb +16 -0
- data/rouge-5.0.0/lib/rouge/lexers/llvm.rb +59 -0
- data/rouge-5.0.0/lib/rouge/lexers/lua/keywords.rb +26 -0
- data/rouge-5.0.0/lib/rouge/lexers/lua.rb +186 -0
- data/rouge-5.0.0/lib/rouge/lexers/lustre.rb +79 -0
- data/rouge-5.0.0/lib/rouge/lexers/lutin.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/m68k.rb +143 -0
- data/rouge-5.0.0/lib/rouge/lexers/magik.rb +127 -0
- data/rouge-5.0.0/lib/rouge/lexers/make.rb +148 -0
- data/rouge-5.0.0/lib/rouge/lexers/markdown.rb +183 -0
- data/rouge-5.0.0/lib/rouge/lexers/mason.rb +110 -0
- data/rouge-5.0.0/lib/rouge/lexers/mathematica/keywords.rb +15 -0
- data/rouge-5.0.0/lib/rouge/lexers/mathematica.rb +95 -0
- data/rouge-5.0.0/lib/rouge/lexers/matlab/keywords.rb +15 -0
- data/rouge-5.0.0/lib/rouge/lexers/matlab.rb +81 -0
- data/rouge-5.0.0/lib/rouge/lexers/meson.rb +158 -0
- data/rouge-5.0.0/lib/rouge/lexers/minizinc.rb +87 -0
- data/rouge-5.0.0/lib/rouge/lexers/mojo.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/moonscript.rb +117 -0
- data/rouge-5.0.0/lib/rouge/lexers/mosel.rb +228 -0
- data/rouge-5.0.0/lib/rouge/lexers/msgtrans.rb +26 -0
- data/rouge-5.0.0/lib/rouge/lexers/mxml.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/nasm.rb +73 -0
- data/rouge-5.0.0/lib/rouge/lexers/nesasm.rb +78 -0
- data/rouge-5.0.0/lib/rouge/lexers/nginx.rb +73 -0
- data/rouge-5.0.0/lib/rouge/lexers/nial.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/nim.rb +154 -0
- data/rouge-5.0.0/lib/rouge/lexers/nix.rb +213 -0
- data/rouge-5.0.0/lib/rouge/lexers/objective_c/common.rb +182 -0
- data/rouge-5.0.0/lib/rouge/lexers/objective_c.rb +21 -0
- data/rouge-5.0.0/lib/rouge/lexers/objective_cpp.rb +32 -0
- data/rouge-5.0.0/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/rouge-5.0.0/lib/rouge/lexers/ocaml.rb +65 -0
- data/rouge-5.0.0/lib/rouge/lexers/ocl.rb +84 -0
- data/rouge-5.0.0/lib/rouge/lexers/openedge.rb +632 -0
- data/rouge-5.0.0/lib/rouge/lexers/opentype_feature_file.rb +97 -0
- data/rouge-5.0.0/lib/rouge/lexers/p4.rb +81 -0
- data/rouge-5.0.0/lib/rouge/lexers/pascal.rb +68 -0
- data/rouge-5.0.0/lib/rouge/lexers/pdf.rb +109 -0
- data/rouge-5.0.0/lib/rouge/lexers/perl.rb +251 -0
- data/rouge-5.0.0/lib/rouge/lexers/php/keywords.rb +150 -0
- data/rouge-5.0.0/lib/rouge/lexers/php.rb +470 -0
- data/rouge-5.0.0/lib/rouge/lexers/plain_text.rb +27 -0
- data/rouge-5.0.0/lib/rouge/lexers/plist.rb +47 -0
- data/rouge-5.0.0/lib/rouge/lexers/plsql.rb +577 -0
- data/rouge-5.0.0/lib/rouge/lexers/pony.rb +94 -0
- data/rouge-5.0.0/lib/rouge/lexers/postscript.rb +93 -0
- data/rouge-5.0.0/lib/rouge/lexers/powershell.rb +248 -0
- data/rouge-5.0.0/lib/rouge/lexers/praat.rb +438 -0
- data/rouge-5.0.0/lib/rouge/lexers/prolog.rb +67 -0
- data/rouge-5.0.0/lib/rouge/lexers/prometheus.rb +122 -0
- data/rouge-5.0.0/lib/rouge/lexers/properties.rb +52 -0
- data/rouge-5.0.0/lib/rouge/lexers/protobuf.rb +71 -0
- data/rouge-5.0.0/lib/rouge/lexers/puppet.rb +129 -0
- data/rouge-5.0.0/lib/rouge/lexers/python.rb +340 -0
- data/rouge-5.0.0/lib/rouge/lexers/q.rb +125 -0
- data/rouge-5.0.0/lib/rouge/lexers/qml.rb +74 -0
- data/rouge-5.0.0/lib/rouge/lexers/r.rb +89 -0
- data/rouge-5.0.0/lib/rouge/lexers/racket.rb +568 -0
- data/rouge-5.0.0/lib/rouge/lexers/reasonml.rb +66 -0
- data/rouge-5.0.0/lib/rouge/lexers/rego.rb +60 -0
- data/rouge-5.0.0/lib/rouge/lexers/rescript.rb +119 -0
- data/rouge-5.0.0/lib/rouge/lexers/rml.rb +142 -0
- data/rouge-5.0.0/lib/rouge/lexers/robot_framework.rb +249 -0
- data/rouge-5.0.0/lib/rouge/lexers/rocq.rb +264 -0
- data/rouge-5.0.0/lib/rouge/lexers/ruby.rb +481 -0
- data/rouge-5.0.0/lib/rouge/lexers/rust.rb +261 -0
- data/rouge-5.0.0/lib/rouge/lexers/sas.rb +562 -0
- data/rouge-5.0.0/lib/rouge/lexers/sass/common.rb +182 -0
- data/rouge-5.0.0/lib/rouge/lexers/sass.rb +75 -0
- data/rouge-5.0.0/lib/rouge/lexers/scala.rb +172 -0
- data/rouge-5.0.0/lib/rouge/lexers/scheme.rb +113 -0
- data/rouge-5.0.0/lib/rouge/lexers/scss.rb +35 -0
- data/rouge-5.0.0/lib/rouge/lexers/sed.rb +173 -0
- data/rouge-5.0.0/lib/rouge/lexers/shell.rb +205 -0
- data/rouge-5.0.0/lib/rouge/lexers/sieve.rb +97 -0
- data/rouge-5.0.0/lib/rouge/lexers/slice.rb +32 -0
- data/rouge-5.0.0/lib/rouge/lexers/slim.rb +229 -0
- data/rouge-5.0.0/lib/rouge/lexers/smalltalk.rb +117 -0
- data/rouge-5.0.0/lib/rouge/lexers/smarty.rb +81 -0
- data/rouge-5.0.0/lib/rouge/lexers/sml.rb +345 -0
- data/rouge-5.0.0/lib/rouge/lexers/sparql.rb +131 -0
- data/rouge-5.0.0/lib/rouge/lexers/sqf/keywords.rb +14 -0
- data/rouge-5.0.0/lib/rouge/lexers/sqf.rb +108 -0
- data/rouge-5.0.0/lib/rouge/lexers/sql.rb +161 -0
- data/rouge-5.0.0/lib/rouge/lexers/ssh.rb +33 -0
- data/rouge-5.0.0/lib/rouge/lexers/stan.rb +445 -0
- data/rouge-5.0.0/lib/rouge/lexers/stata.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/supercollider.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/svelte.rb +91 -0
- data/rouge-5.0.0/lib/rouge/lexers/swift.rb +202 -0
- data/rouge-5.0.0/lib/rouge/lexers/systemd.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/syzlang.rb +316 -0
- data/rouge-5.0.0/lib/rouge/lexers/syzprog.rb +122 -0
- data/rouge-5.0.0/lib/rouge/lexers/tap.rb +88 -0
- data/rouge-5.0.0/lib/rouge/lexers/tcl.rb +198 -0
- data/rouge-5.0.0/lib/rouge/lexers/terraform.rb +121 -0
- data/rouge-5.0.0/lib/rouge/lexers/tex.rb +70 -0
- data/rouge-5.0.0/lib/rouge/lexers/thrift.rb +120 -0
- data/rouge-5.0.0/lib/rouge/lexers/toml.rb +124 -0
- data/rouge-5.0.0/lib/rouge/lexers/tsx.rb +33 -0
- data/rouge-5.0.0/lib/rouge/lexers/ttcn3.rb +117 -0
- data/rouge-5.0.0/lib/rouge/lexers/tulip.rb +107 -0
- data/rouge-5.0.0/lib/rouge/lexers/turtle.rb +61 -0
- data/rouge-5.0.0/lib/rouge/lexers/twig.rb +40 -0
- data/rouge-5.0.0/lib/rouge/lexers/typescript/common.rb +60 -0
- data/rouge-5.0.0/lib/rouge/lexers/typescript.rb +23 -0
- data/rouge-5.0.0/lib/rouge/lexers/vala.rb +78 -0
- data/rouge-5.0.0/lib/rouge/lexers/varnish.rb +168 -0
- data/rouge-5.0.0/lib/rouge/lexers/vb.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/velocity.rb +71 -0
- data/rouge-5.0.0/lib/rouge/lexers/verilog.rb +163 -0
- data/rouge-5.0.0/lib/rouge/lexers/veryl.rb +109 -0
- data/rouge-5.0.0/lib/rouge/lexers/vhdl.rb +98 -0
- data/rouge-5.0.0/lib/rouge/lexers/viml/keywords.rb +19 -0
- data/rouge-5.0.0/lib/rouge/lexers/viml.rb +68 -0
- data/rouge-5.0.0/lib/rouge/lexers/vue.rb +127 -0
- data/rouge-5.0.0/lib/rouge/lexers/wollok.rb +107 -0
- data/rouge-5.0.0/lib/rouge/lexers/xml.rb +56 -0
- data/rouge-5.0.0/lib/rouge/lexers/xojo.rb +61 -0
- data/rouge-5.0.0/lib/rouge/lexers/xpath.rb +332 -0
- data/rouge-5.0.0/lib/rouge/lexers/xquery.rb +146 -0
- data/rouge-5.0.0/lib/rouge/lexers/yaml.rb +388 -0
- data/rouge-5.0.0/lib/rouge/lexers/yang.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/zig.rb +139 -0
- data/rouge-5.0.0/lib/rouge/plugins/redcarpet.rb +38 -0
- data/rouge-5.0.0/lib/rouge/regex_lexer.rb +522 -0
- data/rouge-5.0.0/lib/rouge/template_lexer.rb +21 -0
- data/rouge-5.0.0/lib/rouge/tex_theme_renderer.rb +132 -0
- data/rouge-5.0.0/lib/rouge/text_analyzer.rb +50 -0
- data/rouge-5.0.0/lib/rouge/theme.rb +218 -0
- data/rouge-5.0.0/lib/rouge/themes/base16.rb +137 -0
- data/rouge-5.0.0/lib/rouge/themes/bw.rb +43 -0
- data/rouge-5.0.0/lib/rouge/themes/colorful.rb +70 -0
- data/rouge-5.0.0/lib/rouge/themes/github.rb +149 -0
- data/rouge-5.0.0/lib/rouge/themes/gruvbox.rb +176 -0
- data/rouge-5.0.0/lib/rouge/themes/igor_pro.rb +25 -0
- data/rouge-5.0.0/lib/rouge/themes/magritte.rb +80 -0
- data/rouge-5.0.0/lib/rouge/themes/molokai.rb +84 -0
- data/rouge-5.0.0/lib/rouge/themes/monokai.rb +95 -0
- data/rouge-5.0.0/lib/rouge/themes/monokai_sublime.rb +94 -0
- data/rouge-5.0.0/lib/rouge/themes/pastie.rb +72 -0
- data/rouge-5.0.0/lib/rouge/themes/thankful_eyes.rb +77 -0
- data/rouge-5.0.0/lib/rouge/themes/tulip.rb +72 -0
- data/rouge-5.0.0/lib/rouge/token.rb +192 -0
- data/rouge-5.0.0/lib/rouge/util.rb +102 -0
- data/rouge-5.0.0/lib/rouge/version.rb +8 -0
- data/rouge-5.0.0/lib/rouge.rb +117 -0
- data/rouge-5.0.0/lib/rubocop/cop/rouge/no_building_alternation_pattern_in_regexp.rb +71 -0
- data/rouge-5.0.0/lib/rubocop/cop/rouge/no_huge_collections.rb +37 -0
- data/rouge-5.0.0/rouge.gemspec +29 -0
- metadata +579 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Protobuf < RegexLexer
|
|
7
|
+
title 'Protobuf'
|
|
8
|
+
desc 'Google\'s language-neutral, platform-neutral, extensible mechanism for serializing structured data'
|
|
9
|
+
tag 'protobuf'
|
|
10
|
+
aliases 'proto'
|
|
11
|
+
filenames '*.proto'
|
|
12
|
+
mimetypes 'text/x-proto'
|
|
13
|
+
|
|
14
|
+
kw = /\b(ctype|default|extensions|import|max|oneof|option|optional|packed|repeated|required|returns|rpc|to)\b/
|
|
15
|
+
datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/
|
|
16
|
+
|
|
17
|
+
state :root do
|
|
18
|
+
rule %r/[\s]+/, Text
|
|
19
|
+
rule %r/[,;{}\[\]()]/, Punctuation
|
|
20
|
+
rule %r/\/(\\\n)?\/($|(.|\n)*?[^\\]$)/, Comment::Single
|
|
21
|
+
rule %r/\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
|
|
22
|
+
rule kw, Keyword
|
|
23
|
+
rule datatype, Keyword::Type
|
|
24
|
+
rule %r/true|false/, Keyword::Constant
|
|
25
|
+
rule %r/(package)(\s+)/ do
|
|
26
|
+
groups Keyword::Namespace, Text
|
|
27
|
+
push :package
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
rule %r/(message|extend)(\s+)/ do
|
|
31
|
+
groups Keyword::Declaration, Text
|
|
32
|
+
push :message
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
rule %r/(enum|group|service)(\s+)/ do
|
|
36
|
+
groups Keyword::Declaration, Text
|
|
37
|
+
push :type
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
rule %r/".*?"/, Str
|
|
41
|
+
rule %r/'.*?'/, Str
|
|
42
|
+
rule %r/(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float
|
|
43
|
+
rule %r/(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float
|
|
44
|
+
rule %r/(\-?(inf|nan))\b/, Num::Float
|
|
45
|
+
rule %r/0x[0-9a-fA-F]+[LlUu]*/, Num::Hex
|
|
46
|
+
rule %r/0[0-7]+[LlUu]*/, Num::Oct
|
|
47
|
+
rule %r/\d+[LlUu]*/, Num::Integer
|
|
48
|
+
rule %r/[+-=]/, Operator
|
|
49
|
+
rule %r/([a-zA-Z_][\w.]*)([ \t]*)(=)/ do
|
|
50
|
+
groups Name::Attribute, Text, Operator
|
|
51
|
+
end
|
|
52
|
+
rule %r/[a-zA-Z_][\w.]*/, Name
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
state :package do
|
|
56
|
+
rule %r/[a-zA-Z_]\w*/, Name::Namespace, :pop!
|
|
57
|
+
rule(//) { pop! }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
state :message do
|
|
61
|
+
rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
|
|
62
|
+
rule(//) { pop! }
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
state :type do
|
|
66
|
+
rule %r/[a-zA-Z_]\w*/, Name, :pop!
|
|
67
|
+
rule(//) { pop! }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Puppet < RegexLexer
|
|
7
|
+
title "Puppet"
|
|
8
|
+
desc 'The Puppet configuration management language (puppetlabs.org)'
|
|
9
|
+
tag 'puppet'
|
|
10
|
+
aliases 'pp'
|
|
11
|
+
filenames '*.pp'
|
|
12
|
+
|
|
13
|
+
def self.detect?(text)
|
|
14
|
+
return true if text.shebang? 'puppet-apply'
|
|
15
|
+
return true if text.shebang? 'puppet'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.keywords
|
|
19
|
+
@keywords ||= Set.new %w(
|
|
20
|
+
and case class default define else elsif if in import inherits
|
|
21
|
+
node unless
|
|
22
|
+
)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.constants
|
|
26
|
+
@constants ||= Set.new %w(
|
|
27
|
+
false true undef
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.metaparameters
|
|
32
|
+
@metaparameters ||= Set.new %w(
|
|
33
|
+
before require notify subscribe
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
id = /[a-z]\w*/
|
|
38
|
+
cap_id = /[A-Z]\w*/
|
|
39
|
+
qualname = /(::)?(#{id}::)*\w+/
|
|
40
|
+
|
|
41
|
+
state :whitespace do
|
|
42
|
+
rule %r/\s+/m, Text
|
|
43
|
+
rule %r/#.*?\n/, Comment
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
state :root do
|
|
47
|
+
mixin :whitespace
|
|
48
|
+
|
|
49
|
+
rule %r/[$]#{qualname}/, Name::Variable
|
|
50
|
+
rule %r/(#{id})(?=\s*[=+]>)/m do |m|
|
|
51
|
+
if self.class.metaparameters.include? m[0]
|
|
52
|
+
token Keyword::Pseudo
|
|
53
|
+
else
|
|
54
|
+
token Name::Property
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
rule %r/(#{qualname})(?=\s*[(])/m, Name::Function
|
|
59
|
+
rule cap_id, Name::Class
|
|
60
|
+
|
|
61
|
+
rule %r/[+=|~-]>|<[|~-]/, Punctuation
|
|
62
|
+
rule %r/[|:}();\[\]]/, Punctuation
|
|
63
|
+
|
|
64
|
+
# HACK for case statements and selectors
|
|
65
|
+
rule %r/{/, Punctuation, :regex_allowed
|
|
66
|
+
rule %r/,/, Punctuation, :regex_allowed
|
|
67
|
+
|
|
68
|
+
rule %r/(in|and|or)\b/, Operator::Word
|
|
69
|
+
rule %r/[=!<>]=/, Operator
|
|
70
|
+
rule %r/[=!]~/, Operator, :regex_allowed
|
|
71
|
+
rule %r([.=<>!+*/-]), Operator
|
|
72
|
+
|
|
73
|
+
rule %r/(class|include)(\s*)(#{qualname})/ do
|
|
74
|
+
groups Keyword, Text, Name::Class
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
rule %r/node\b/, Keyword, :regex_allowed
|
|
78
|
+
|
|
79
|
+
rule %r/'(\\[\\']|[^'])*'/m, Str::Single
|
|
80
|
+
rule %r/"/, Str::Double, :dquotes
|
|
81
|
+
|
|
82
|
+
rule %r/\d+([.]\d+)?(e[+-]\d+)?/, Num
|
|
83
|
+
|
|
84
|
+
# a valid regex. TODO: regexes are only allowed
|
|
85
|
+
# in certain places in puppet.
|
|
86
|
+
rule qualname do |m|
|
|
87
|
+
if self.class.keywords.include? m[0]
|
|
88
|
+
token Keyword
|
|
89
|
+
elsif self.class.constants.include? m[0]
|
|
90
|
+
token Keyword::Constant
|
|
91
|
+
else
|
|
92
|
+
token Name
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
state :regex_allowed do
|
|
98
|
+
mixin :whitespace
|
|
99
|
+
rule %r(/), Str::Regex, :regex
|
|
100
|
+
|
|
101
|
+
rule(//) { pop! }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :regex do
|
|
105
|
+
rule %r(/), Str::Regex, :pop!
|
|
106
|
+
rule %r/\\./, Str::Escape
|
|
107
|
+
rule %r/[(){}]/, Str::Interpol
|
|
108
|
+
rule %r/\[/, Str::Interpol, :regex_class
|
|
109
|
+
rule %r/./, Str::Regex
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
state :regex_class do
|
|
113
|
+
rule %r/\]/, Str::Interpol, :pop!
|
|
114
|
+
rule %r/(?<!\[)-(?=\])/, Str::Regex
|
|
115
|
+
rule %r/-/, Str::Interpol
|
|
116
|
+
rule %r/\\./, Str::Escape
|
|
117
|
+
rule %r/[^\\\]-]+/, Str::Regex
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
state :dquotes do
|
|
121
|
+
rule %r/"/, Str::Double, :pop!
|
|
122
|
+
rule %r/[^$\\"]+/m, Str::Double
|
|
123
|
+
rule %r/\\./m, Str::Escape
|
|
124
|
+
rule %r/[$]#{qualname}/, Name::Variable
|
|
125
|
+
rule %r/[$][{]#{qualname}[}]/, Name::Variable
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Python < RegexLexer
|
|
7
|
+
title "Python"
|
|
8
|
+
desc "The Python programming language (python.org)"
|
|
9
|
+
tag 'python'
|
|
10
|
+
aliases 'py'
|
|
11
|
+
filenames '*.py', '*.pyi', '*.pyw', '*.sc', 'SConstruct', 'SConscript',
|
|
12
|
+
'*.tac', '*.bzl', 'BUCK', 'BUILD', 'BUILD.bazel', 'WORKSPACE'
|
|
13
|
+
mimetypes 'text/x-python', 'application/x-python'
|
|
14
|
+
|
|
15
|
+
def self.detect?(text)
|
|
16
|
+
return true if text.shebang?(/pythonw?(?:[23](?:\.\d+)?)?/)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.keywords
|
|
20
|
+
@keywords ||= Set.new %w(
|
|
21
|
+
assert break continue del elif else except exec
|
|
22
|
+
finally for global if lambda pass print raise
|
|
23
|
+
return try while yield as with from import
|
|
24
|
+
async await nonlocal
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.builtins
|
|
29
|
+
@builtins ||= Set.new %w(
|
|
30
|
+
__import__ abs aiter all anext any apply ascii
|
|
31
|
+
basestring bin bool buffer breakpoint bytearray bytes
|
|
32
|
+
callable chr classmethod cmp coerce compile complex
|
|
33
|
+
delattr dict dir divmod enumerate eval exec execfile exit
|
|
34
|
+
file filter float format frozenset getattr globals
|
|
35
|
+
hasattr hash help hex
|
|
36
|
+
id input int intern isinstance issubclass iter len list locals long
|
|
37
|
+
map max memoryview min next object oct open ord pow print property
|
|
38
|
+
range raw_input reduce reload repr reversed round set setattr slice
|
|
39
|
+
sorted staticmethod str sum super tuple type unichr unicode vars
|
|
40
|
+
xrange zip
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.builtins_pseudo
|
|
45
|
+
@builtins_pseudo ||= Set.new %w(None Ellipsis NotImplemented False True)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.exceptions
|
|
49
|
+
@exceptions ||= Set.new %w(
|
|
50
|
+
ArithmeticError AssertionError AttributeError BaseException
|
|
51
|
+
BaseExceptionGroup BlockingIOError BrokenPipeError BufferError
|
|
52
|
+
BytesWarning ChildProcessError ConnectionAbortedError ConnectionError
|
|
53
|
+
ConnectionRefusedError ConnectionResetError DeprecationWarning
|
|
54
|
+
EOFError EnvironmentError EncodingWarning Exception ExceptionGroup
|
|
55
|
+
FileExistsError FileNotFoundError FloatingPointError FutureWarning
|
|
56
|
+
GeneratorExit IOError ImportError ImportWarning IndentationError
|
|
57
|
+
IndexError InterruptedError IsADirectoryError
|
|
58
|
+
KeyError KeyboardInterrupt LookupError
|
|
59
|
+
MemoryError ModuleNotFoundError
|
|
60
|
+
NameError NotADirectoryError NotImplemented NotImplementedError
|
|
61
|
+
OSError OverflowError OverflowWarning PendingDeprecationWarning
|
|
62
|
+
PermissionError ProcessLookupError PythonFinalizationError
|
|
63
|
+
RecursionError ReferenceError ResourceWarning RuntimeError RuntimeWarning
|
|
64
|
+
StandardError StopAsyncIteration StopIteration SyntaxError SyntaxWarning
|
|
65
|
+
SystemError SystemExit TabError TimeoutError TypeError
|
|
66
|
+
UnboundLocalError UnicodeDecodeError UnicodeEncodeError UnicodeError
|
|
67
|
+
UnicodeTranslateError UnicodeWarning UserWarning ValueError VMSError
|
|
68
|
+
Warning WindowsError
|
|
69
|
+
ZeroDivisionError
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
identifier = /[[:alpha:]_][[:alnum:]_]*/
|
|
74
|
+
dotted_identifier = /[[:alpha:]_.][[:alnum:]_.]*/
|
|
75
|
+
inline_ws = /(?:[ \t]|\\\n)*?/
|
|
76
|
+
inline_content = /(?:[^\\\n]|\\[\n.])*?/
|
|
77
|
+
|
|
78
|
+
def current_string
|
|
79
|
+
@current_string ||= StringRegister.new
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
operator_words = %r/(in|is|and|or|not)\b/
|
|
83
|
+
operators = %r{(<<|>>|//|[*][*])=?|!=|[-~+\/*%=<>&^|@]=?|!=}
|
|
84
|
+
|
|
85
|
+
start do
|
|
86
|
+
push :newline
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
state :inline_whitespace do
|
|
90
|
+
rule %r/[ \t]+/, Text
|
|
91
|
+
rule %r/\\\n/, Str::Escape
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
state :root do
|
|
95
|
+
rule %r/\n+/m, Text, :newline
|
|
96
|
+
rule %r/^(:)(\s*)([ru]{,2}""".*?""")/mi do
|
|
97
|
+
groups Punctuation, Text, Str::Doc
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
rule %r/\.\.\.\B$/, Name::Builtin::Pseudo
|
|
101
|
+
|
|
102
|
+
mixin :inline_whitespace
|
|
103
|
+
|
|
104
|
+
rule %r(#(.*)?\n?), Comment::Single, :newline
|
|
105
|
+
rule %r/[\[\]{}:(),;]/, Punctuation
|
|
106
|
+
rule %r/[.]/, Punctuation, :post_dot
|
|
107
|
+
rule %r/\\/, Str::Escape
|
|
108
|
+
|
|
109
|
+
rule %r/@#{dotted_identifier}/i, Name::Decorator
|
|
110
|
+
|
|
111
|
+
rule operator_words, Operator::Word
|
|
112
|
+
rule operators, Operator
|
|
113
|
+
|
|
114
|
+
rule %r/def\b/, Keyword, :funcname
|
|
115
|
+
|
|
116
|
+
rule %r/class\b/, Keyword, :classname
|
|
117
|
+
|
|
118
|
+
rule %r/`.*?`/, Str::Backtick
|
|
119
|
+
rule %r/([rtfbu]{0,2})('''|"""|['"])/i do |m|
|
|
120
|
+
groups Str::Affix, Str::Heredoc
|
|
121
|
+
current_string.register type: m[1].downcase, delim: m[2]
|
|
122
|
+
push :generic_string
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# using negative lookbehind so we don't match property names
|
|
126
|
+
rule %r/(?<!\.)#{identifier}/ do |m|
|
|
127
|
+
if self.class.keywords.include?(m[0])
|
|
128
|
+
token Keyword
|
|
129
|
+
elsif self.class.exceptions.include?(m[0])
|
|
130
|
+
token Name::Exception
|
|
131
|
+
elsif self.class.builtins.include?(m[0])
|
|
132
|
+
token Name::Builtin
|
|
133
|
+
elsif self.class.builtins_pseudo.include?(m[0])
|
|
134
|
+
token Name::Builtin::Pseudo
|
|
135
|
+
else
|
|
136
|
+
token Name
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
rule identifier, Name
|
|
141
|
+
|
|
142
|
+
digits = /[0-9](_?[0-9])*/
|
|
143
|
+
decimal = /((#{digits})?\.#{digits}|#{digits}\.)/
|
|
144
|
+
exponent = /e[+-]?#{digits}/i
|
|
145
|
+
rule %r/#{decimal}(#{exponent})?j?/i, Num::Float
|
|
146
|
+
rule %r/#{digits}#{exponent}j?/i, Num::Float
|
|
147
|
+
rule %r/#{digits}j/i, Num::Float
|
|
148
|
+
|
|
149
|
+
rule %r/0b(_?[0-1])+/i, Num::Bin
|
|
150
|
+
rule %r/0o(_?[0-7])+/i, Num::Oct
|
|
151
|
+
rule %r/0x(_?[a-f0-9])+/i, Num::Hex
|
|
152
|
+
rule %r/\d+L/, Num::Integer::Long
|
|
153
|
+
rule %r/([1-9](_?[0-9])*|0(_?0)*)/, Num::Integer
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
state :import do
|
|
157
|
+
mixin :inline_whitespace
|
|
158
|
+
rule dotted_identifier, Name::Namespace, :pop!
|
|
159
|
+
rule(//) { pop! }
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
state :from do
|
|
163
|
+
mixin :inline_whitespace
|
|
164
|
+
|
|
165
|
+
rule dotted_identifier do
|
|
166
|
+
token Name::Namespace
|
|
167
|
+
goto :from_import
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
rule(//) { pop! }
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# import after from, meaning we don't push the :import state
|
|
174
|
+
state :from_import do
|
|
175
|
+
mixin :inline_whitespace
|
|
176
|
+
rule %r/import\b/, Keyword::Namespace, :pop!
|
|
177
|
+
rule(//) { pop! }
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
state :post_dot do
|
|
181
|
+
mixin :inline_whitespace
|
|
182
|
+
rule %r/([A-Z]\w*)(?=#{inline_ws}[(])/m, Name::Class
|
|
183
|
+
rule %r/(#{identifier})(?=#{inline_ws}[(])/m, Name::Function
|
|
184
|
+
rule(//) { pop! }
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
state :newline do
|
|
188
|
+
mixin :inline_whitespace
|
|
189
|
+
|
|
190
|
+
rule %r/from\b/, Keyword::Namespace, :from
|
|
191
|
+
rule %r/import\b/, Keyword::Namespace, :import
|
|
192
|
+
|
|
193
|
+
# [jneen] This lookahead is a best-effort hack, since soft keywords are
|
|
194
|
+
# technically not possible to detect in the lexing stage. If we see an
|
|
195
|
+
# operator like `and`, `or`, inline `if`, etc which would expect an
|
|
196
|
+
# expression beforehand, we know that it is almost certainly not a keyword.
|
|
197
|
+
inline_ops = /#{operator_words}|if\b|#{operators}/
|
|
198
|
+
rule %r/(?:case|match)(?=#{inline_ws}#{inline_ops})/, Name::Other, :pop!
|
|
199
|
+
|
|
200
|
+
rule %r/(?:case|match)(?=#{inline_content}:#{inline_ws}[#\n])/ do |m|
|
|
201
|
+
token Keyword
|
|
202
|
+
if m[0] == 'case'
|
|
203
|
+
goto :case_pattern
|
|
204
|
+
else
|
|
205
|
+
pop!
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
rule(//) { pop! }
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
state :funcname do
|
|
213
|
+
mixin :inline_whitespace
|
|
214
|
+
rule identifier, Name::Function, :pop!
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
state :classname do
|
|
218
|
+
mixin :inline_whitespace
|
|
219
|
+
rule identifier, Name::Class, :pop!
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
state :case_pattern do
|
|
223
|
+
rule %r/\n/ do
|
|
224
|
+
token Text
|
|
225
|
+
goto :newline
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
rule %r/_\b/, Keyword
|
|
229
|
+
mixin :root
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
state :raise do
|
|
233
|
+
rule %r/from\b/, Keyword
|
|
234
|
+
rule %r/raise\b/, Keyword
|
|
235
|
+
rule %r/yield\b/, Keyword
|
|
236
|
+
rule %r/\n/, Text, :pop!
|
|
237
|
+
rule %r/;/, Punctuation, :pop!
|
|
238
|
+
mixin :root
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
state :yield do
|
|
242
|
+
mixin :raise
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
state :generic_string do
|
|
246
|
+
rule %r/\n/, Str, :generic_string_newline
|
|
247
|
+
rule %r/[^'"\\{\n]+/, Str
|
|
248
|
+
rule %r/{{/, Str
|
|
249
|
+
|
|
250
|
+
rule %r/'''|"""|['"]/ do |m|
|
|
251
|
+
token Str::Heredoc
|
|
252
|
+
if current_string.delim? m[0]
|
|
253
|
+
current_string.remove
|
|
254
|
+
pop!
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
rule %r/(?=\\)/, Str, :generic_escape
|
|
259
|
+
|
|
260
|
+
rule %r/{/ do |m|
|
|
261
|
+
if current_string.type? "f"
|
|
262
|
+
token Str::Interpol
|
|
263
|
+
push :generic_interpol
|
|
264
|
+
else
|
|
265
|
+
token Str
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
state :generic_string_newline do
|
|
271
|
+
rule %r/[ \t]+/, Str
|
|
272
|
+
rule %r/(>>>|\.\.\.)\B/ do
|
|
273
|
+
token Generic::Prompt
|
|
274
|
+
goto :doctest
|
|
275
|
+
end
|
|
276
|
+
rule(//) { pop! }
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
state :generic_escape do
|
|
280
|
+
rule %r(\\
|
|
281
|
+
( [\\abfnrtv"']
|
|
282
|
+
| \n
|
|
283
|
+
| newline
|
|
284
|
+
| N{[a-zA-Z][a-zA-Z ]+[a-zA-Z]}
|
|
285
|
+
| u[a-fA-F0-9]{4}
|
|
286
|
+
| U[a-fA-F0-9]{8}
|
|
287
|
+
| x[a-fA-F0-9]{2}
|
|
288
|
+
| [0-7]{1,3}
|
|
289
|
+
)
|
|
290
|
+
)x do
|
|
291
|
+
current_string.type?("r") ? token(Str) : token(Str::Escape)
|
|
292
|
+
pop!
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
rule %r/\\./, Str, :pop!
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
state :doctest do
|
|
299
|
+
rule %r/\n\n/, Text, :pop!
|
|
300
|
+
|
|
301
|
+
rule %r/'''|"""/ do
|
|
302
|
+
token Str::Heredoc
|
|
303
|
+
pop!(2) if in_state?(:generic_string) # pop :doctest and :generic_string
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
mixin :root
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
state :generic_interpol do
|
|
310
|
+
rule %r/[^{}!:]+/ do |m|
|
|
311
|
+
recurse m[0]
|
|
312
|
+
end
|
|
313
|
+
rule %r/![asr]/, Str::Interpol
|
|
314
|
+
rule %r/:/, Str::Interpol
|
|
315
|
+
rule %r/{/, Str::Interpol, :generic_interpol
|
|
316
|
+
rule %r/}/, Str::Interpol, :pop!
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
class StringRegister < Array
|
|
320
|
+
def delim?(delim)
|
|
321
|
+
self.last[1] == delim
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def register(type: "u", delim: "'")
|
|
325
|
+
self.push [type, delim]
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
def remove
|
|
329
|
+
self.pop
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
def type?(type)
|
|
333
|
+
self.last[0].include? type
|
|
334
|
+
end
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
private_constant :StringRegister
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Q < RegexLexer
|
|
6
|
+
title 'Q'
|
|
7
|
+
desc 'The Q programming language (kx.com)'
|
|
8
|
+
tag 'q'
|
|
9
|
+
aliases 'kdb+'
|
|
10
|
+
filenames '*.q'
|
|
11
|
+
mimetypes 'text/x-q', 'application/x-q'
|
|
12
|
+
|
|
13
|
+
identifier = /\.?[a-z][a-z0-9_.]*/i
|
|
14
|
+
|
|
15
|
+
def self.keywords
|
|
16
|
+
@keywords ||= %w[do if while select update delete exec from by]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.word_operators
|
|
20
|
+
@word_operators ||= %w[
|
|
21
|
+
and or except inter like each cross vs sv within where in asof bin binr cor cov cut ej fby
|
|
22
|
+
div ij insert lj ljf mavg mcount mdev mmax mmin mmu mod msum over prior peach pj scan scov setenv ss
|
|
23
|
+
sublist uj union upsert wavg wsum xasc xbar xcol xcols xdesc xexp xgroup xkey xlog xprev xrank
|
|
24
|
+
]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.builtins
|
|
28
|
+
@builtins ||= %w[
|
|
29
|
+
first enlist value type get set count string key max min sum prd last flip distinct raze neg
|
|
30
|
+
desc differ dsave dev eval exit exp fills fkeys floor getenv group gtime hclose hcount hdel hopen hsym
|
|
31
|
+
iasc idesc inv keys load log lsq ltime ltrim maxs md5 med meta mins next parse plist prds prev rand rank ratios
|
|
32
|
+
read0 read1 reciprocal reverse rload rotate rsave rtrim save sdev show signum sin sqrt ssr sums svar system
|
|
33
|
+
tables tan til trim txf ungroup var view views wj wj1 ww
|
|
34
|
+
]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
state :root do
|
|
38
|
+
# q allows a file to start with a shebang
|
|
39
|
+
rule %r/#!(.*?)$/, Comment::Preproc, :top
|
|
40
|
+
rule %r//, Text, :top
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
state :top do
|
|
44
|
+
# indented lines at the top of the file are ignored by q
|
|
45
|
+
rule %r/^[ \t\r]+.*$/, Comment::Special
|
|
46
|
+
rule %r/\n+/, Text
|
|
47
|
+
rule %r//, Text, :base
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
state :base do
|
|
51
|
+
rule %r/\n+/m, Text
|
|
52
|
+
rule(/^.\)/, Keyword::Declaration)
|
|
53
|
+
|
|
54
|
+
# Identifiers, word operators, etc.
|
|
55
|
+
rule %r/#{identifier}/ do |m|
|
|
56
|
+
if self.class.keywords.include? m[0]
|
|
57
|
+
token Keyword
|
|
58
|
+
elsif self.class.word_operators.include? m[0]
|
|
59
|
+
token Operator::Word
|
|
60
|
+
elsif self.class.builtins.include? m[0]
|
|
61
|
+
token Name::Builtin
|
|
62
|
+
elsif /^\.[zQqho]\./ =~ m[0]
|
|
63
|
+
token Name::Constant
|
|
64
|
+
else
|
|
65
|
+
token Name
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# White space and comments
|
|
70
|
+
rule(%r{\s+/.*}, Comment::Single)
|
|
71
|
+
rule(/[ \t\r]+/, Text::Whitespace)
|
|
72
|
+
rule(%r{^/$.*?^\\$}m, Comment::Multiline)
|
|
73
|
+
rule(%r{^\/[^\n]*$(\n[^\S\n]+.*$)*}, Comment::Multiline)
|
|
74
|
+
# til EOF comment
|
|
75
|
+
rule(/^\\$/, Comment, :bottom)
|
|
76
|
+
rule(/^\\\\\s+/, Keyword, :bottom)
|
|
77
|
+
|
|
78
|
+
# Literals
|
|
79
|
+
## strings
|
|
80
|
+
rule(/"/, Str, :string)
|
|
81
|
+
## timespan/stamp constants
|
|
82
|
+
rule(/(?:\d+D|\d{4}\.[01]\d\.[0123]\d[DT])(?:[012]\d:[0-5]\d(?::[0-5]\d(?:\.\d+)?)?|([012]\d)?)[zpn]?\b/,
|
|
83
|
+
Literal::Date)
|
|
84
|
+
## time/minute/second constants
|
|
85
|
+
rule(/[012]\d:[0-5]\d(?::[0-5]\d(\.\d+)?)?[uvtpn]?\b/, Literal::Date)
|
|
86
|
+
## date constants
|
|
87
|
+
rule(/\d{4}\.[01]\d\.[0-3]\d[dpnzm]?\b/, Literal::Date)
|
|
88
|
+
## special values
|
|
89
|
+
rule(/0[nNwW][hijefcpmdznuvt]?/, Keyword::Constant)
|
|
90
|
+
|
|
91
|
+
# operators to match before numbers
|
|
92
|
+
rule(%r{'|\/:|\\:|':|\\|\/|0:|1:|2:}, Operator)
|
|
93
|
+
|
|
94
|
+
## numbers
|
|
95
|
+
rule(/(\d+[.]\d*|[.]\d+)(e[+-]?\d+)?[ef]?/, Num::Float)
|
|
96
|
+
rule(/\d+e[+-]?\d+[ef]?/, Num::Float)
|
|
97
|
+
rule(/\d+[ef]/, Num::Float)
|
|
98
|
+
rule(/0x[0-9a-f]+/i, Num::Hex)
|
|
99
|
+
rule(/[01]+b/, Num::Bin)
|
|
100
|
+
rule(/[0-9]+[hij]?/, Num::Integer)
|
|
101
|
+
## symbols and paths
|
|
102
|
+
rule(%r{(`:[:a-z0-9._\/]*|`(?:[a-z0-9.][:a-z0-9._]*)?)}i, Str::Symbol)
|
|
103
|
+
rule(/(?:<=|>=|<>|::)|[?:$%&|@._#*^\-+~,!><=]:?/, Operator)
|
|
104
|
+
|
|
105
|
+
rule %r/[{}\[\]();]/, Punctuation
|
|
106
|
+
|
|
107
|
+
# commands
|
|
108
|
+
rule(/\\.*\n/, Text)
|
|
109
|
+
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
state :string do
|
|
113
|
+
rule %r/\\"/, Str
|
|
114
|
+
rule %r/"/, Str, :pop!
|
|
115
|
+
rule %r/\\([\\nr]|[01][0-7]{2})/, Str::Escape
|
|
116
|
+
rule %r/[^\\"\n]+/, Str
|
|
117
|
+
rule %r/\\/, Str # stray backslash
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
state :bottom do
|
|
121
|
+
rule %r/.+\z/m, Comment::Multiline
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|