nano-clean-pkg 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-clean-pkg.gemspec +11 -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 +578 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Awk < RegexLexer
|
|
7
|
+
title "Awk"
|
|
8
|
+
desc "pattern-directed scanning and processing language"
|
|
9
|
+
|
|
10
|
+
tag 'awk'
|
|
11
|
+
filenames '*.awk'
|
|
12
|
+
mimetypes 'application/x-awk'
|
|
13
|
+
|
|
14
|
+
def self.detect?(text)
|
|
15
|
+
return true if text.shebang?('awk')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
id = /[$a-zA-Z_][a-zA-Z0-9_]*/
|
|
19
|
+
|
|
20
|
+
def self.keywords
|
|
21
|
+
@keywords ||= Set.new %w(
|
|
22
|
+
if else while for do break continue return next nextfile delete
|
|
23
|
+
exit print printf getline
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.declarations
|
|
28
|
+
@declarations ||= Set.new %w(function)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.reserved
|
|
32
|
+
@reserved ||= Set.new %w(BEGIN END)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.constants
|
|
36
|
+
@constants ||= Set.new %w(
|
|
37
|
+
CONVFMT FS NF NR FNR FILENAME RS OFS ORS OFMT SUBSEP ARGC ARGV
|
|
38
|
+
ENVIRON
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.builtins
|
|
43
|
+
@builtins ||= %w(
|
|
44
|
+
exp log sqrt sin cos atan2 length rand srand int substr index match
|
|
45
|
+
split sub gsub sprintf system tolower toupper
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
state :comments_and_whitespace do
|
|
50
|
+
rule %r/\s+/, Text
|
|
51
|
+
rule %r(#.*?$), Comment::Single
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
state :expr_start do
|
|
55
|
+
mixin :comments_and_whitespace
|
|
56
|
+
rule %r(/) do
|
|
57
|
+
token Str::Regex
|
|
58
|
+
goto :regex
|
|
59
|
+
end
|
|
60
|
+
rule %r//, Text, :pop!
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
state :regex do
|
|
64
|
+
rule %r(/) do
|
|
65
|
+
token Str::Regex
|
|
66
|
+
goto :regex_end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
rule %r([^/]\n), Error, :pop!
|
|
70
|
+
|
|
71
|
+
rule %r/\n/, Error, :pop!
|
|
72
|
+
rule %r/\[\^/, Str::Escape, :regex_group
|
|
73
|
+
rule %r/\[/, Str::Escape, :regex_group
|
|
74
|
+
rule %r/\\./, Str::Escape
|
|
75
|
+
rule %r{[(][?][:=<!]}, Str::Escape
|
|
76
|
+
rule %r/[{][\d,]+[}]/, Str::Escape
|
|
77
|
+
rule %r/[()?]/, Str::Escape
|
|
78
|
+
rule %r/./, Str::Regex
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
state :regex_end do
|
|
82
|
+
rule(//) { pop! }
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
state :regex_group do
|
|
86
|
+
# specially highlight / in a group to indicate that it doesn't
|
|
87
|
+
# close the regex
|
|
88
|
+
rule %r(/), Str::Escape
|
|
89
|
+
|
|
90
|
+
rule %r([^/]\n) do
|
|
91
|
+
token Error
|
|
92
|
+
pop! 2
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
rule %r/\]/, Str::Escape, :pop!
|
|
96
|
+
rule %r/\\./, Str::Escape
|
|
97
|
+
rule %r/./, Str::Regex
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
state :bad_regex do
|
|
101
|
+
rule %r/[^\n]+/, Error, :pop!
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :root do
|
|
105
|
+
mixin :comments_and_whitespace
|
|
106
|
+
rule %r((?<=\n)(?=\s|/)), Text, :expr_start
|
|
107
|
+
rule %r([-<>+*/%\^!=]=?|in\b|\+\+|--|\|), Operator, :expr_start
|
|
108
|
+
rule %r(&&|\|\||~!?), Operator, :expr_start
|
|
109
|
+
rule %r/[(\[,]/, Punctuation, :expr_start
|
|
110
|
+
rule %r/;/, Punctuation, :statement
|
|
111
|
+
rule %r/[)\].]/, Punctuation
|
|
112
|
+
|
|
113
|
+
rule %r/[?]/ do
|
|
114
|
+
token Punctuation
|
|
115
|
+
push :ternary
|
|
116
|
+
push :expr_start
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
rule %r/[{}]/, Punctuation, :statement
|
|
120
|
+
|
|
121
|
+
rule id do |m|
|
|
122
|
+
if self.class.keywords.include? m[0]
|
|
123
|
+
token Keyword
|
|
124
|
+
push :expr_start
|
|
125
|
+
elsif self.class.declarations.include? m[0]
|
|
126
|
+
token Keyword::Declaration
|
|
127
|
+
push :expr_start
|
|
128
|
+
elsif self.class.reserved.include? m[0]
|
|
129
|
+
token Keyword::Reserved
|
|
130
|
+
elsif self.class.constants.include? m[0]
|
|
131
|
+
token Keyword::Constant
|
|
132
|
+
elsif self.class.builtins.include? m[0]
|
|
133
|
+
token Name::Builtin
|
|
134
|
+
elsif m[0] =~ /^\$/
|
|
135
|
+
token Name::Variable
|
|
136
|
+
else
|
|
137
|
+
token Name::Other
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
rule %r/[0-9]+\.[0-9]+/, Num::Float
|
|
142
|
+
rule %r/[0-9]+/, Num::Integer
|
|
143
|
+
rule %r/"(\\[\\"]|[^"])*"/, Str::Double
|
|
144
|
+
rule %r/:/, Punctuation
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
state :statement do
|
|
148
|
+
rule %r/[{}]/, Punctuation
|
|
149
|
+
mixin :expr_start
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
state :ternary do
|
|
153
|
+
rule %r/:/ do
|
|
154
|
+
token Punctuation
|
|
155
|
+
goto :expr_start
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
mixin :root
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Batchfile < RegexLexer
|
|
7
|
+
title "Batchfile"
|
|
8
|
+
desc "Windows Batch File"
|
|
9
|
+
|
|
10
|
+
tag 'batchfile'
|
|
11
|
+
aliases 'bat', 'batch', 'dosbatch', 'winbatch'
|
|
12
|
+
filenames '*.bat', '*.cmd'
|
|
13
|
+
|
|
14
|
+
mimetypes 'application/bat', 'application/x-bat', 'application/x-msdos-program'
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= %w(
|
|
18
|
+
if else for in do goto call exit
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.operator_words
|
|
23
|
+
@operator_words ||= %w(
|
|
24
|
+
exist defined errorlevel cmdextversion not equ neq lss leq gtr geq
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.devices
|
|
29
|
+
@devices ||= %w(
|
|
30
|
+
con prn aux nul com1 com2 com3 com4 com5 com6 com7 com8 com9 lpt1 lpt2
|
|
31
|
+
lpt3 lpt4 lpt5 lpt6 lpt7 lpt8 lpt9
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.builtin_commands
|
|
36
|
+
@builtin_commands ||= %w(
|
|
37
|
+
assoc attrib break bcdedit cacls cd chcp chdir chkdsk chkntfs choice
|
|
38
|
+
cls cmd color comp compact convert copy date del dir diskpart doskey
|
|
39
|
+
dpath driverquery echo endlocal erase fc find findstr format fsutil
|
|
40
|
+
ftype gpresult graftabl help icacls label md mkdir mklink mode more
|
|
41
|
+
move openfiles path pause popd print prompt pushd rd recover ren
|
|
42
|
+
rename replace rmdir robocopy setlocal sc schtasks shift shutdown sort
|
|
43
|
+
start subst systeminfo takeown tasklist taskkill time timeout title
|
|
44
|
+
tree type ver verify vol xcopy waitfor wmic
|
|
45
|
+
)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.other_commands
|
|
49
|
+
@other_commands ||= %w(
|
|
50
|
+
addusers admodcmd ansicon arp at bcdboot bitsadmin browstat certreq
|
|
51
|
+
certutil change cidiag cipher cleanmgr clip cmdkey compress convertcp
|
|
52
|
+
coreinfo csccmd csvde cscript curl debug defrag delprof deltree devcon
|
|
53
|
+
diamond dirquota diruse diskshadow diskuse dism dnscmd dsacls dsadd
|
|
54
|
+
dsget dsquery dsmod dsmove dsrm dsmgmt dsregcmd edlin eventcreate
|
|
55
|
+
expand extract fdisk fltmc forfiles freedisk ftp getmac gpupdate
|
|
56
|
+
hostname ifmember inuse ipconfig kill lgpo lodctr logman logoff
|
|
57
|
+
logtime makecab mapisend mbsacli mem mountvol moveuser msg mshta
|
|
58
|
+
msiexec msinfo32 mstsc nbtstat net net1 netdom netsh netstat nlsinfo
|
|
59
|
+
nltest now nslookup ntbackup ntdsutil ntoskrnl ntrights nvspbind
|
|
60
|
+
pathping perms ping portqry powercfg pngout pnputil printbrm prncnfg
|
|
61
|
+
prnmngr procdump psexec psfile psgetsid psinfo pskill pslist
|
|
62
|
+
psloggedon psloglist pspasswd psping psservice psshutdown pssuspend
|
|
63
|
+
qbasic qgrep qprocess query quser qwinsta rasdial reg reg1 regdump
|
|
64
|
+
regedt32 regsvr32 regini reset restore rundll32 rmtshare route rpcping
|
|
65
|
+
run runas scandisk setspn setx sfc share shellrunas shortcut sigcheck
|
|
66
|
+
sleep slmgr strings subinacl sysmon telnet tftp tlist touch tracerpt
|
|
67
|
+
tracert tscon tsdiscon tskill tttracer typeperf tzutil undelete
|
|
68
|
+
unformat verifier vmconnect vssadmin w32tm wbadmin wecutil wevtutil
|
|
69
|
+
wget where whoami windiff winrm winrs wpeutil wpr wusa wuauclt wscript
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def self.attributes
|
|
74
|
+
@attributes ||= %w(
|
|
75
|
+
on off disable enableextensions enabledelayedexpansion
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
state :basic do
|
|
80
|
+
# Comments
|
|
81
|
+
rule %r/@?\brem\b.*$/i, Comment
|
|
82
|
+
|
|
83
|
+
# Empty Labels
|
|
84
|
+
rule %r/^::.*$/, Comment
|
|
85
|
+
|
|
86
|
+
# Labels
|
|
87
|
+
rule %r/:[a-z]+/i, Name::Label
|
|
88
|
+
|
|
89
|
+
rule %r/([a-z]\w*)(\.exe|com|bat|cmd|msi)?/i do |m|
|
|
90
|
+
if self.class.devices.include? m[1]
|
|
91
|
+
groups Keyword::Reserved, Error
|
|
92
|
+
elsif self.class.keywords.include? m[1]
|
|
93
|
+
groups Keyword, Error
|
|
94
|
+
elsif self.class.operator_words.include? m[1]
|
|
95
|
+
groups Operator::Word, Error
|
|
96
|
+
elsif self.class.builtin_commands.include? m[1]
|
|
97
|
+
token Name::Builtin
|
|
98
|
+
elsif self.class.other_commands.include? m[1]
|
|
99
|
+
token Name::Builtin
|
|
100
|
+
elsif self.class.attributes.include? m[1]
|
|
101
|
+
groups Name::Attribute, Error
|
|
102
|
+
elsif "set".casecmp m[1]
|
|
103
|
+
groups Keyword::Declaration, Error
|
|
104
|
+
else
|
|
105
|
+
token Text
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
rule %r/((?:[\/\+]|--?)[a-z]+)\s*/i, Name::Attribute
|
|
110
|
+
|
|
111
|
+
mixin :expansions
|
|
112
|
+
|
|
113
|
+
rule %r/[<>&|(){}\[\]\-+=;,~?*]/, Operator
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
state :escape do
|
|
117
|
+
rule %r/\^./m, Str::Escape
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
state :expansions do
|
|
121
|
+
# Normal and Delayed expansion
|
|
122
|
+
rule %r/[%!]+([a-z_$@#]+)[%!]+/i, Name::Variable
|
|
123
|
+
# For Variables
|
|
124
|
+
rule %r/(\%+~?[a-z]+\d?)/i, Name::Variable::Magic
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
state :double_quotes do
|
|
128
|
+
mixin :escape
|
|
129
|
+
rule %r/["]/, Str::Double, :pop!
|
|
130
|
+
mixin :expansions
|
|
131
|
+
rule %r/[^\^"%!]+/, Str::Double
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :single_quotes do
|
|
135
|
+
mixin :escape
|
|
136
|
+
rule %r/[']/, Str::Single, :pop!
|
|
137
|
+
mixin :expansions
|
|
138
|
+
rule %r/[^\^'%!]+/, Str::Single
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
state :backtick do
|
|
142
|
+
mixin :escape
|
|
143
|
+
rule %r/[`]/, Str::Backtick, :pop!
|
|
144
|
+
mixin :expansions
|
|
145
|
+
rule %r/[^\^`%!]+/, Str::Backtick
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
state :data do
|
|
149
|
+
rule %r/\s+/, Text
|
|
150
|
+
rule %r/0x[0-9a-f]+/i, Literal::Number::Hex
|
|
151
|
+
rule %r/[0-9]/, Literal::Number
|
|
152
|
+
rule %r/["]/, Str::Double, :double_quotes
|
|
153
|
+
rule %r/[']/, Str::Single, :single_quotes
|
|
154
|
+
rule %r/[`]/, Str::Backtick, :backtick
|
|
155
|
+
rule %r/[^\s&|()\[\]{}\^=;!%+\-,"'`~?*]+/, Text
|
|
156
|
+
mixin :escape
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
state :root do
|
|
160
|
+
mixin :basic
|
|
161
|
+
mixin :data
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class BBCBASIC < RegexLexer
|
|
7
|
+
title "BBCBASIC"
|
|
8
|
+
desc "BBC BASIC syntax"
|
|
9
|
+
tag 'bbcbasic'
|
|
10
|
+
filenames '*,fd1'
|
|
11
|
+
|
|
12
|
+
def self.punctuation
|
|
13
|
+
@punctuation ||= %w(
|
|
14
|
+
[,;'~] SPC TAB
|
|
15
|
+
)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.function
|
|
19
|
+
@function ||= %w(
|
|
20
|
+
ABS ACS ADVAL ASC ASN ATN BEATS BEAT BGET# CHR\$ COS COUNT DEG DIM
|
|
21
|
+
EOF# ERL ERR EVAL EXP EXT# FN GET\$# GET\$ GET HIMEM INKEY\$ INKEY
|
|
22
|
+
INSTR INT LEFT\$ LEN LN LOG LOMEM MID\$ OPENIN OPENOUT OPENUP PAGE
|
|
23
|
+
POINT POS PTR# RAD REPORT\$ RIGHT\$ RND SGN SIN SQR STR\$ STRING\$ SUM
|
|
24
|
+
SUMLEN TAN TEMPO TIME\$ TIME TOP USR VAL VPOS
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.statement
|
|
29
|
+
@statement ||= %w(
|
|
30
|
+
BEATS BPUT# CALL CASE CHAIN CLEAR CLG CLOSE# CLS COLOR COLOUR DATA
|
|
31
|
+
ELSE ENDCASE ENDIF ENDPROC ENDWHILE END ENVELOPE FOR GCOL GOSUB GOTO
|
|
32
|
+
IF INSTALL LET LIBRARY MODE NEXT OFF OF ON ORIGIN OSCI OTHERWISE
|
|
33
|
+
OVERLAY PLOT PRINT# PRINT PROC QUIT READ REPEAT REPORT RETURN SOUND
|
|
34
|
+
STEP STEREO STOP SWAP SYS THEN TINT TO VDU VOICES VOICE UNTIL WAIT
|
|
35
|
+
WHEN WHILE WIDTH
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.operator
|
|
40
|
+
@operator ||= %w(
|
|
41
|
+
<< <= <> < >= >>> >> > [-!$()*+/=?^|] AND DIV EOR MOD NOT OR
|
|
42
|
+
)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.constant
|
|
46
|
+
@constant ||= %w(
|
|
47
|
+
FALSE TRUE
|
|
48
|
+
)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
state :expression do
|
|
52
|
+
rule %r/#{BBCBASIC.function.join('|')}/o, Name::Builtin # function or pseudo-variable
|
|
53
|
+
rule %r/#{BBCBASIC.operator.join('|')}/o, Operator
|
|
54
|
+
rule %r/#{BBCBASIC.constant.join('|')}/o, Name::Constant
|
|
55
|
+
rule %r/"[^"]*"/o, Literal::String
|
|
56
|
+
rule %r/[a-z_`][\w`]*[$%]?/io, Name::Variable
|
|
57
|
+
rule %r/@%/o, Name::Variable
|
|
58
|
+
rule %r/[\d.]+/o, Literal::Number
|
|
59
|
+
rule %r/%[01]+/o, Literal::Number::Bin
|
|
60
|
+
rule %r/&[\h]+/o, Literal::Number::Hex
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
state :root do
|
|
64
|
+
rule %r/(:+)( *)(\*)(.*)/ do
|
|
65
|
+
groups Punctuation, Text, Keyword, Text # CLI command
|
|
66
|
+
end
|
|
67
|
+
rule %r/(\n+ *)(\*)(.*)/ do
|
|
68
|
+
groups Text, Keyword, Text # CLI command
|
|
69
|
+
end
|
|
70
|
+
rule %r/(ELSE|OTHERWISE|REPEAT|THEN)( *)(\*)(.*)/ do
|
|
71
|
+
groups Keyword, Text, Keyword, Text # CLI command
|
|
72
|
+
end
|
|
73
|
+
rule %r/[ \n]+/o, Text
|
|
74
|
+
rule %r/:+/o, Punctuation
|
|
75
|
+
rule %r/[\[]/o, Keyword, :assembly1
|
|
76
|
+
rule %r/REM *>.*/o, Comment::Special
|
|
77
|
+
rule %r/REM.*/o, Comment
|
|
78
|
+
rule %r/(?:#{BBCBASIC.statement.join('|')}|CIRCLE(?: *FILL)?|DEF *(?:FN|PROC)|DRAW(?: *BY)?|DIM(?!\()|ELLIPSE(?: *FILL)?|ERROR(?: *EXT)?|FILL(?: *BY)?|INPUT(?:#| *LINE)?|LINE(?: *INPUT)?|LOCAL(?: *DATA| *ERROR)?|MOUSE(?: *COLOUR| *OFF| *ON| *RECTANGLE| *STEP| *TO)?|MOVE(?: *BY)?|ON(?! *ERROR)|ON *ERROR *(?:LOCAL|OFF)?|POINT(?: *BY)?(?!\()|RECTANGE(?: *FILL)?|RESTORE(?: *DATA| *ERROR)?|TRACE(?: *CLOSE| *ENDPROC| *OFF| *STEP(?: *FN| *ON| *PROC)?| *TO)?)/o, Keyword
|
|
79
|
+
mixin :expression
|
|
80
|
+
rule %r/#{BBCBASIC.punctuation.join('|')}/o, Punctuation
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Assembly statements are parsed as
|
|
84
|
+
# {label} {directive|opcode |']' {expressions}} {comment}
|
|
85
|
+
# Technically, you don't need whitespace between opcodes and arguments,
|
|
86
|
+
# but this is rare in uncrunched source and trying to enumerate all
|
|
87
|
+
# possible opcodes here is impractical so we colour it as though
|
|
88
|
+
# the whitespace is required. Opcodes and directives can only easily be
|
|
89
|
+
# distinguished from the symbols that make up expressions by looking at
|
|
90
|
+
# their position within the statement. Similarly, ']' is treated as a
|
|
91
|
+
# keyword at the start of a statement or as punctuation elsewhere. This
|
|
92
|
+
# requires a two-state state machine.
|
|
93
|
+
|
|
94
|
+
state :assembly1 do
|
|
95
|
+
rule %r/ +/o, Text
|
|
96
|
+
rule %r/]/o, Keyword, :pop!
|
|
97
|
+
rule %r/[:\n]/o, Punctuation
|
|
98
|
+
rule %r/\.[a-z_`][\w`]*%? */io, Name::Label
|
|
99
|
+
rule %r/(?:REM|;)[^:\n]*/o, Comment
|
|
100
|
+
rule %r/[^ :\n]+/o, Keyword, :assembly2
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
state :assembly2 do
|
|
104
|
+
rule %r/ +/o, Text
|
|
105
|
+
rule %r/[:\n]/o, Punctuation, :pop!
|
|
106
|
+
rule %r/(?:REM|;)[^:\n]*/o, Comment, :pop!
|
|
107
|
+
mixin :expression
|
|
108
|
+
rule %r/[!#,@\[\]^{}]/, Punctuation
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# Regular expressions based on https://github.com/SaswatPadhi/prismjs-bibtex
|
|
5
|
+
# and https://github.com/alecthomas/chroma/blob/master/lexers/b/bibtex.go
|
|
6
|
+
|
|
7
|
+
module Rouge
|
|
8
|
+
module Lexers
|
|
9
|
+
class BibTeX < RegexLexer
|
|
10
|
+
title 'BibTeX'
|
|
11
|
+
desc "BibTeX"
|
|
12
|
+
tag 'bibtex'
|
|
13
|
+
aliases 'bib'
|
|
14
|
+
filenames '*.bib'
|
|
15
|
+
|
|
16
|
+
valid_punctuation = Regexp.quote("@!$&.\\:;<>?[]^`|~*/+-")
|
|
17
|
+
valid_name = /[a-z_#{valid_punctuation}][\w#{valid_punctuation}]*/io
|
|
18
|
+
|
|
19
|
+
state :root do
|
|
20
|
+
mixin :whitespace
|
|
21
|
+
|
|
22
|
+
rule %r/@(#{valid_name})/o do |m|
|
|
23
|
+
match = m[1].downcase
|
|
24
|
+
|
|
25
|
+
if match == "comment"
|
|
26
|
+
token Comment
|
|
27
|
+
elsif match == "preamble"
|
|
28
|
+
token Name::Class
|
|
29
|
+
push :closing_brace
|
|
30
|
+
push :value
|
|
31
|
+
push :opening_brace
|
|
32
|
+
elsif match == "string"
|
|
33
|
+
token Name::Class
|
|
34
|
+
push :closing_brace
|
|
35
|
+
push :field
|
|
36
|
+
push :opening_brace
|
|
37
|
+
else
|
|
38
|
+
token Name::Class
|
|
39
|
+
push :closing_brace
|
|
40
|
+
push :command_body
|
|
41
|
+
push :opening_brace
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
rule %r/.+/, Comment
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
state :opening_brace do
|
|
49
|
+
mixin :whitespace
|
|
50
|
+
rule %r/[{(]/, Punctuation, :pop!
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
state :closing_brace do
|
|
54
|
+
mixin :whitespace
|
|
55
|
+
rule %r/[})]/, Punctuation, :pop!
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
state :command_body do
|
|
59
|
+
mixin :whitespace
|
|
60
|
+
rule %r/[^\s\,\}]+/ do
|
|
61
|
+
token Name::Label
|
|
62
|
+
pop!
|
|
63
|
+
push :fields
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
state :fields do
|
|
68
|
+
mixin :whitespace
|
|
69
|
+
rule %r/,/, Punctuation, :field
|
|
70
|
+
rule(//) { pop! }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
state :field do
|
|
74
|
+
mixin :whitespace
|
|
75
|
+
rule valid_name do
|
|
76
|
+
token Name::Attribute
|
|
77
|
+
push :value
|
|
78
|
+
push :equal_sign
|
|
79
|
+
end
|
|
80
|
+
rule(//) { pop! }
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
state :equal_sign do
|
|
84
|
+
mixin :whitespace
|
|
85
|
+
rule %r/=/, Punctuation, :pop!
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :value do
|
|
89
|
+
mixin :whitespace
|
|
90
|
+
rule valid_name, Name::Variable
|
|
91
|
+
rule %r/"/, Literal::String, :quoted_string
|
|
92
|
+
rule %r/\{/, Literal::String, :braced_string
|
|
93
|
+
rule %r/\d+/, Literal::Number
|
|
94
|
+
rule %r/#/, Punctuation
|
|
95
|
+
rule(//) { pop! }
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
state :quoted_string do
|
|
99
|
+
rule %r/\{/, Literal::String, :braced_string
|
|
100
|
+
rule %r/"/, Literal::String, :pop!
|
|
101
|
+
rule %r/[^\{\"]+/, Literal::String
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :braced_string do
|
|
105
|
+
rule %r/\{/, Literal::String, :braced_string
|
|
106
|
+
rule %r/\}/, Literal::String, :pop!
|
|
107
|
+
rule %r/[^\{\}]+/, Literal::String
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
state :whitespace do
|
|
111
|
+
rule %r/\s+/, Text
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
module Rouge
|
|
2
|
+
module Lexers
|
|
3
|
+
class Bicep < Rouge::RegexLexer
|
|
4
|
+
tag 'bicep'
|
|
5
|
+
filenames '*.bicep'
|
|
6
|
+
|
|
7
|
+
title "Bicep"
|
|
8
|
+
desc 'Bicep is a domain-specific language (DSL) that uses declarative syntax to deploy Azure resources.'
|
|
9
|
+
|
|
10
|
+
def self.keywords
|
|
11
|
+
@keywords ||= Set.new %w(
|
|
12
|
+
as assert existing extends extension false for from func if import in metadata module
|
|
13
|
+
none null output param provider resource targetScope test true type using var void with
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.datatypes
|
|
18
|
+
@datatypes ||= Set.new %w(array bool int object string)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.functions
|
|
22
|
+
@functions ||= Set.new %w(
|
|
23
|
+
array base64 base64ToJson base64ToString bool cidrHost cidrSubnet concat contains dataUri
|
|
24
|
+
dataUriToString dateTimeAdd dateTimeFromEpoch dateTimeToEpoch deployer deployment empty endsWith
|
|
25
|
+
environment extensionResourceId fail filter first flatten format getSecret groupBy guid indexOf int
|
|
26
|
+
intersection items join json last lastIndexOf length list* listAccountSas listKeys listSecrets loadFileAsBase64
|
|
27
|
+
loadJsonContent loadTextContent loadYamlContent managementGroup managementGroupResourceId map mapValue max min
|
|
28
|
+
newGuid objectKeys padLeft parseCidr pickZones range readEnvironmentVariable reduce reference replace resourceGroup
|
|
29
|
+
resourceId shallowMerge skip sort split startsWith string subscription subscriptionResourceId substring take tenant
|
|
30
|
+
tenantResourceId toLogicalZone toLower toObject toPhysicalZone toUpper trim union uniqueString uri uriComponent
|
|
31
|
+
uriComponentToString utcNow
|
|
32
|
+
)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
operators = %w(+ - * / % < <= > >= == != =~ !~ && || ! ?? ... .?)
|
|
36
|
+
|
|
37
|
+
punctuations = %w(( ) { } [ ] , : ; = .)
|
|
38
|
+
|
|
39
|
+
state :root do
|
|
40
|
+
mixin :comments
|
|
41
|
+
|
|
42
|
+
# Match strings
|
|
43
|
+
rule %r/'/, Str::Single, :string
|
|
44
|
+
|
|
45
|
+
# Match numbers
|
|
46
|
+
rule %r/\b\d+\b/, Num
|
|
47
|
+
|
|
48
|
+
# Rules for sets of reserved keywords
|
|
49
|
+
rule %r/\b\w+\b/ do |m|
|
|
50
|
+
if self.class.keywords.include? m[0]
|
|
51
|
+
token Keyword
|
|
52
|
+
elsif self.class.datatypes.include? m[0]
|
|
53
|
+
token Keyword::Type
|
|
54
|
+
elsif self.class.functions.include? m[0]
|
|
55
|
+
token Name::Function
|
|
56
|
+
else
|
|
57
|
+
token Name
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Match operators
|
|
62
|
+
rule %r/#{operators.map { |o| Regexp.escape(o) }.join('|')}/, Operator
|
|
63
|
+
|
|
64
|
+
# Enter a state when encountering an opening curly bracket
|
|
65
|
+
rule %r/{/, Punctuation::Indicator, :block
|
|
66
|
+
|
|
67
|
+
# Match punctuation
|
|
68
|
+
rule %r/#{punctuations.map { |p| Regexp.escape(p) }.join('|')}/, Punctuation
|
|
69
|
+
|
|
70
|
+
# Match identifiers
|
|
71
|
+
rule %r/[a-zA-Z_]\w*/, Name
|
|
72
|
+
|
|
73
|
+
# Match decorators
|
|
74
|
+
rule %r/@[a-zA-Z_]\w*/, Name::Decorator
|
|
75
|
+
|
|
76
|
+
# Ignore whitespace
|
|
77
|
+
rule %r/\s+/, Text
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
state :comments do
|
|
81
|
+
rule %r(//[^\n\r]+), Comment::Single
|
|
82
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
state :string do
|
|
86
|
+
rule %r/[^'$}]+/, Str::Single
|
|
87
|
+
rule %r/\$(?!\{)/, Str::Single
|
|
88
|
+
rule %r/\$[\{]/, Str::Interpol, :interp
|
|
89
|
+
rule %r/\'/, Str::Single, :pop!
|
|
90
|
+
rule %r/\$+/, Str::Single
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
state :interp do
|
|
94
|
+
rule %r/\}/, Str::Interpol, :pop!
|
|
95
|
+
mixin :root
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# State for matching code blocks between curly brackets
|
|
99
|
+
state :block do
|
|
100
|
+
# Match property names
|
|
101
|
+
rule %r/\b([a-zA-Z_]\w*)\b(?=\s*:)/, Name::Property
|
|
102
|
+
|
|
103
|
+
# Match closing curly brackets
|
|
104
|
+
rule %r/}/, Punctuation::Indicator, :pop!
|
|
105
|
+
|
|
106
|
+
# Include the root state for nested tokens
|
|
107
|
+
mixin :root
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|