rouge 3.18.0
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/Gemfile +40 -0
- data/LICENSE +186 -0
- data/bin/rougify +18 -0
- data/lib/rouge.rb +107 -0
- data/lib/rouge/cli.rb +498 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/bsl +7 -0
- data/lib/rouge/demos/c +8 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cfscript +18 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/coffeescript +5 -0
- data/lib/rouge/demos/common_lisp +1 -0
- data/lib/rouge/demos/conf +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/coq +13 -0
- data/lib/rouge/demos/cpp +8 -0
- data/lib/rouge/demos/crystal +45 -0
- data/lib/rouge/demos/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/elixir +1 -0
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/gherkin +17 -0
- data/lib/rouge/demos/glsl +14 -0
- data/lib/rouge/demos/go +7 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/groovy +9 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/demos/haml +5 -0
- data/lib/rouge/demos/handlebars +7 -0
- data/lib/rouge/demos/haskell +6 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hcl +7 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/jsx +17 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/kotlin +3 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/liquid +10 -0
- data/lib/rouge/demos/literate_coffeescript +3 -0
- data/lib/rouge/demos/literate_haskell +7 -0
- data/lib/rouge/demos/llvm +20 -0
- data/lib/rouge/demos/lua +12 -0
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/nginx +5 -0
- data/lib/rouge/demos/nim +27 -0
- data/lib/rouge/demos/nix +19 -0
- data/lib/rouge/demos/objective_c +18 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/pascal +14 -0
- data/lib/rouge/demos/perl +5 -0
- data/lib/rouge/demos/php +3 -0
- data/lib/rouge/demos/plaintext +1 -0
- data/lib/rouge/demos/plist +11 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +13 -0
- data/lib/rouge/demos/praat +26 -0
- data/lib/rouge/demos/prolog +9 -0
- data/lib/rouge/demos/prometheus +9 -0
- data/lib/rouge/demos/properties +7 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/puppet +6 -0
- data/lib/rouge/demos/python +6 -0
- data/lib/rouge/demos/q +8 -0
- data/lib/rouge/demos/qml +9 -0
- data/lib/rouge/demos/r +8 -0
- data/lib/rouge/demos/racket +24 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/ruby +9 -0
- data/lib/rouge/demos/rust +12 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/sass +3 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/scheme +4 -0
- data/lib/rouge/demos/scss +5 -0
- data/lib/rouge/demos/sed +4 -0
- data/lib/rouge/demos/shell +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/slim +17 -0
- data/lib/rouge/demos/smalltalk +6 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/sql +1 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/swift +5 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/tcl +1 -0
- data/lib/rouge/demos/terraform +16 -0
- data/lib/rouge/demos/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/tulip +13 -0
- data/lib/rouge/demos/turtle +26 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/vala +8 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/demos/vcl +12 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/vhdl +23 -0
- data/lib/rouge/demos/viml +14 -0
- data/lib/rouge/demos/vue +11 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/demos/xml +2 -0
- data/lib/rouge/demos/xojo +14 -0
- data/lib/rouge/demos/xpath +2 -0
- data/lib/rouge/demos/xquery +22 -0
- data/lib/rouge/demos/yaml +4 -0
- data/lib/rouge/demos/yang +17 -0
- data/lib/rouge/formatter.rb +112 -0
- data/lib/rouge/formatters/html.rb +56 -0
- data/lib/rouge/formatters/html_inline.rb +31 -0
- data/lib/rouge/formatters/html_legacy.rb +45 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +23 -0
- data/lib/rouge/formatters/html_pygments.rb +18 -0
- data/lib/rouge/formatters/html_table.rb +51 -0
- data/lib/rouge/formatters/null.rb +20 -0
- data/lib/rouge/formatters/terminal256.rb +198 -0
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +57 -0
- data/lib/rouge/guessers/disambiguation.rb +136 -0
- data/lib/rouge/guessers/filename.rb +27 -0
- data/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/lib/rouge/guessers/mimetype.rb +16 -0
- data/lib/rouge/guessers/modeline.rb +46 -0
- data/lib/rouge/guessers/source.rb +31 -0
- data/lib/rouge/guessers/util.rb +34 -0
- data/lib/rouge/lexer.rb +517 -0
- data/lib/rouge/lexers/abap.rb +240 -0
- data/lib/rouge/lexers/actionscript.rb +196 -0
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +69 -0
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/lib/rouge/lexers/apple_script.rb +370 -0
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +162 -0
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +43 -0
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +82 -0
- data/lib/rouge/lexers/c.rb +190 -0
- data/lib/rouge/lexers/ceylon.rb +96 -0
- data/lib/rouge/lexers/cfscript.rb +154 -0
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +113 -0
- data/lib/rouge/lexers/cmake.rb +208 -0
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +215 -0
- data/lib/rouge/lexers/common_lisp.rb +346 -0
- data/lib/rouge/lexers/conf.rb +25 -0
- data/lib/rouge/lexers/console.rb +190 -0
- data/lib/rouge/lexers/coq.rb +191 -0
- data/lib/rouge/lexers/cpp.rb +89 -0
- data/lib/rouge/lexers/crystal.rb +430 -0
- data/lib/rouge/lexers/csharp.rb +114 -0
- data/lib/rouge/lexers/css.rb +274 -0
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +177 -0
- data/lib/rouge/lexers/dart.rb +105 -0
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +37 -0
- data/lib/rouge/lexers/digdag.rb +70 -0
- data/lib/rouge/lexers/docker.rb +51 -0
- data/lib/rouge/lexers/dot.rb +69 -0
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +66 -0
- data/lib/rouge/lexers/elixir.rb +149 -0
- data/lib/rouge/lexers/elm.rb +90 -0
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +53 -0
- data/lib/rouge/lexers/erlang.rb +115 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +303 -0
- data/lib/rouge/lexers/fortran.rb +178 -0
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +120 -0
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +140 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
- data/lib/rouge/lexers/glsl.rb +132 -0
- data/lib/rouge/lexers/go.rb +175 -0
- data/lib/rouge/lexers/gradle.rb +38 -0
- data/lib/rouge/lexers/graphql.rb +261 -0
- data/lib/rouge/lexers/groovy.rb +111 -0
- data/lib/rouge/lexers/hack.rb +49 -0
- data/lib/rouge/lexers/haml.rb +226 -0
- data/lib/rouge/lexers/handlebars.rb +91 -0
- data/lib/rouge/lexers/haskell.rb +199 -0
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +163 -0
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +141 -0
- data/lib/rouge/lexers/http.rb +81 -0
- data/lib/rouge/lexers/hylang.rb +94 -0
- data/lib/rouge/lexers/idlang.rb +312 -0
- data/lib/rouge/lexers/igorpro.rb +664 -0
- data/lib/rouge/lexers/ini.rb +54 -0
- data/lib/rouge/lexers/io.rb +69 -0
- data/lib/rouge/lexers/irb.rb +67 -0
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +91 -0
- data/lib/rouge/lexers/javascript.rb +279 -0
- data/lib/rouge/lexers/jinja.rb +154 -0
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +72 -0
- data/lib/rouge/lexers/json_doc.rb +26 -0
- data/lib/rouge/lexers/jsonnet.rb +152 -0
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +104 -0
- data/lib/rouge/lexers/julia.rb +290 -0
- data/lib/rouge/lexers/kotlin.rb +131 -0
- data/lib/rouge/lexers/lasso.rb +210 -0
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +285 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/lib/rouge/lexers/llvm.rb +97 -0
- data/lib/rouge/lexers/lua.rb +164 -0
- data/lib/rouge/lexers/lua/builtins.rb +24 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/m68k.rb +143 -0
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +135 -0
- data/lib/rouge/lexers/markdown.rb +182 -0
- data/lib/rouge/lexers/mason.rb +110 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +80 -0
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +115 -0
- data/lib/rouge/lexers/mosel.rb +232 -0
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +69 -0
- data/lib/rouge/lexers/nasm.rb +72 -0
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +72 -0
- data/lib/rouge/lexers/nim.rb +154 -0
- data/lib/rouge/lexers/nix.rb +211 -0
- data/lib/rouge/lexers/objective_c.rb +21 -0
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/ocaml.rb +65 -0
- data/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/lib/rouge/lexers/openedge.rb +429 -0
- data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
- data/lib/rouge/lexers/pascal.rb +67 -0
- data/lib/rouge/lexers/perl.rb +231 -0
- data/lib/rouge/lexers/php.rb +231 -0
- data/lib/rouge/lexers/php/builtins.rb +203 -0
- data/lib/rouge/lexers/plain_text.rb +27 -0
- data/lib/rouge/lexers/plist.rb +47 -0
- data/lib/rouge/lexers/pony.rb +94 -0
- data/lib/rouge/lexers/powershell.rb +230 -0
- data/lib/rouge/lexers/praat.rb +351 -0
- data/lib/rouge/lexers/prolog.rb +67 -0
- data/lib/rouge/lexers/prometheus.rb +123 -0
- data/lib/rouge/lexers/properties.rb +52 -0
- data/lib/rouge/lexers/protobuf.rb +71 -0
- data/lib/rouge/lexers/puppet.rb +129 -0
- data/lib/rouge/lexers/python.rb +257 -0
- data/lib/rouge/lexers/q.rb +126 -0
- data/lib/rouge/lexers/qml.rb +74 -0
- data/lib/rouge/lexers/r.rb +89 -0
- data/lib/rouge/lexers/racket.rb +568 -0
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +454 -0
- data/lib/rouge/lexers/rust.rb +193 -0
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +75 -0
- data/lib/rouge/lexers/sass/common.rb +181 -0
- data/lib/rouge/lexers/scala.rb +169 -0
- data/lib/rouge/lexers/scheme.rb +113 -0
- data/lib/rouge/lexers/scss.rb +35 -0
- data/lib/rouge/lexers/sed.rb +173 -0
- data/lib/rouge/lexers/shell.rb +201 -0
- data/lib/rouge/lexers/sieve.rb +97 -0
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +229 -0
- data/lib/rouge/lexers/smalltalk.rb +117 -0
- data/lib/rouge/lexers/smarty.rb +81 -0
- data/lib/rouge/lexers/sml.rb +345 -0
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sql.rb +161 -0
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +186 -0
- data/lib/rouge/lexers/tap.rb +89 -0
- data/lib/rouge/lexers/tcl.rb +193 -0
- data/lib/rouge/lexers/terraform.rb +128 -0
- data/lib/rouge/lexers/tex.rb +70 -0
- data/lib/rouge/lexers/toml.rb +106 -0
- data/lib/rouge/lexers/tsx.rb +20 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +108 -0
- data/lib/rouge/lexers/turtle.rb +61 -0
- data/lib/rouge/lexers/twig.rb +40 -0
- data/lib/rouge/lexers/typescript.rb +34 -0
- data/lib/rouge/lexers/typescript/common.rb +34 -0
- data/lib/rouge/lexers/vala.rb +78 -0
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +165 -0
- data/lib/rouge/lexers/verilog.rb +163 -0
- data/lib/rouge/lexers/vhdl.rb +98 -0
- data/lib/rouge/lexers/viml.rb +102 -0
- data/lib/rouge/lexers/viml/keywords.rb +14 -0
- data/lib/rouge/lexers/vue.rb +127 -0
- data/lib/rouge/lexers/wollok.rb +104 -0
- data/lib/rouge/lexers/xml.rb +54 -0
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/lexers/xpath.rb +332 -0
- data/lib/rouge/lexers/xquery.rb +145 -0
- data/lib/rouge/lexers/yaml.rb +376 -0
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +37 -0
- data/lib/rouge/regex_lexer.rb +443 -0
- data/lib/rouge/template_lexer.rb +21 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +50 -0
- data/lib/rouge/theme.rb +218 -0
- data/lib/rouge/themes/base16.rb +131 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +68 -0
- data/lib/rouge/themes/github.rb +72 -0
- data/lib/rouge/themes/gruvbox.rb +168 -0
- data/lib/rouge/themes/igor_pro.rb +21 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +83 -0
- data/lib/rouge/themes/monokai.rb +93 -0
- data/lib/rouge/themes/monokai_sublime.rb +93 -0
- data/lib/rouge/themes/pastie.rb +70 -0
- data/lib/rouge/themes/thankful_eyes.rb +75 -0
- data/lib/rouge/themes/tulip.rb +70 -0
- data/lib/rouge/token.rb +191 -0
- data/lib/rouge/util.rb +102 -0
- data/lib/rouge/version.rb +8 -0
- data/rouge.gemspec +26 -0
- metadata +491 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class GDScript < RegexLexer
|
|
7
|
+
title "GDScript"
|
|
8
|
+
desc "The Godot Engine programming language (https://godotengine.org/)"
|
|
9
|
+
tag 'gdscript'
|
|
10
|
+
aliases 'gd', 'gdscript'
|
|
11
|
+
filenames '*.gd'
|
|
12
|
+
mimetypes 'text/x-gdscript', 'application/x-gdscript'
|
|
13
|
+
|
|
14
|
+
def self.keywords
|
|
15
|
+
@keywords = %w(
|
|
16
|
+
and in not or as breakpoint class class_name extends is func setget
|
|
17
|
+
signal tool const enum export onready static var break continue
|
|
18
|
+
if elif else for pass return match while remote master puppet
|
|
19
|
+
remotesync mastersync puppetsync
|
|
20
|
+
).join('|')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Reserved for future implementation
|
|
24
|
+
def self.keywords_reserved
|
|
25
|
+
@keywords_reserved = %w(
|
|
26
|
+
do switch case
|
|
27
|
+
).join('|')
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.builtins
|
|
31
|
+
builtins = %w(
|
|
32
|
+
Color8 ColorN abs acos asin assert atan atan2 bytes2var ceil char
|
|
33
|
+
clamp convert cos cosh db2linear decimals dectime deg2rad dict2inst
|
|
34
|
+
ease exp floor fmod fposmod funcref hash inst2dict instance_from_id
|
|
35
|
+
is_inf is_nan lerp linear2db load log max min nearest_po2 pow
|
|
36
|
+
preload print print_stack printerr printraw prints printt rad2deg
|
|
37
|
+
rand_range rand_seed randf randi randomize range round seed sign
|
|
38
|
+
sin sinh sqrt stepify str str2var tan tan tanh type_exist typeof
|
|
39
|
+
var2bytes var2str weakref yield
|
|
40
|
+
).join('|')
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.builtins_type
|
|
44
|
+
@builtins_type = %w(
|
|
45
|
+
bool int float String Vector2 Rect2 Transform2D Vector3 AABB
|
|
46
|
+
Plane Quat Basis Transform Color RID Object NodePath Dictionary
|
|
47
|
+
Array PoolByteArray PoolIntArray PoolRealArray PoolStringArray
|
|
48
|
+
PoolVector2Array PoolVector3Array PoolColorArray null
|
|
49
|
+
).join('|')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
state :root do
|
|
53
|
+
rule %r/\n/, Text
|
|
54
|
+
rule %r/[^\S\n]+/, Text
|
|
55
|
+
rule %r/#.*/, Comment::Single
|
|
56
|
+
rule %r/[\[\]{}:(),;]/, Punctuation
|
|
57
|
+
rule %r/\\\n/, Text
|
|
58
|
+
rule %r/(in|and|or|not)\b/, Operator::Word
|
|
59
|
+
rule %r/!=|==|<<|>>|&&|\+=|-=|\*=|\/=|%=|&=|\|=|\|\||[-~+\/*%=<>&^.!|$]/, Operator
|
|
60
|
+
rule %r/(func)((?:\s|\\)+)/ do
|
|
61
|
+
groups Keyword, Text
|
|
62
|
+
push :funcname
|
|
63
|
+
end
|
|
64
|
+
rule %r/(class)((?:\s|\\)+)/ do
|
|
65
|
+
groups Keyword, Text
|
|
66
|
+
push :classname
|
|
67
|
+
end
|
|
68
|
+
mixin :keywords
|
|
69
|
+
mixin :builtins
|
|
70
|
+
rule %r/"""/, Str::Double, :escape_tdqs
|
|
71
|
+
rule %r/'''/, Str::Double, :escape_tsqs
|
|
72
|
+
rule %r/"/, Str::Double, :escape_dqs
|
|
73
|
+
rule %r/'/, Str::Double, :escape_sqs
|
|
74
|
+
mixin :name
|
|
75
|
+
mixin :numbers
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
state :keywords do
|
|
79
|
+
rule %r/\b(#{GDScript.keywords})\b/, Keyword
|
|
80
|
+
rule %r/\b(#{GDScript.keywords_reserved})\b/, Keyword::Reserved
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
state :builtins do
|
|
84
|
+
rule %r/\b(#{GDScript.builtins})\b/, Name::Builtin
|
|
85
|
+
rule %r/\b((self|false|true)|(PI|TAU|NAN|INF))\b/, Name::Builtin::Pseudo
|
|
86
|
+
rule %r/\b(#{GDScript.builtins_type})\b/, Keyword::Type
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
state :numbers do
|
|
90
|
+
rule %r/(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, Num::Float
|
|
91
|
+
rule %r/\d+[eE][+-]?[0-9]+j?/, Num::Float
|
|
92
|
+
rule %r/0[xX][a-fA-F0-9]+/, Num::Hex
|
|
93
|
+
rule %r/\d+j?/, Num::Integer
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
state :name do
|
|
97
|
+
rule %r/[a-zA-Z_]\w*/, Name
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
state :funcname do
|
|
101
|
+
rule %r/[a-zA-Z_]\w*/, Name::Function, :pop!
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :classname do
|
|
105
|
+
rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
state :string_escape do
|
|
109
|
+
rule %r/\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})/, Str::Escape
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
state :strings_single do
|
|
113
|
+
rule %r/%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]/, Str::Interpol
|
|
114
|
+
rule %r/[^\\'%\n]+/, Str::Single
|
|
115
|
+
rule %r/["\\]/, Str::Single
|
|
116
|
+
rule %r/%/, Str::Single
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
state :strings_double do
|
|
120
|
+
rule %r/%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%]/, Str::Interpol
|
|
121
|
+
rule %r/[^\\"%\n]+/, Str::Double
|
|
122
|
+
rule %r/['\\]/, Str::Double
|
|
123
|
+
rule %r/%/, Str::Double
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
state :dqs do
|
|
127
|
+
rule %r/"/, Str::Double, :pop!
|
|
128
|
+
rule %r/\\\\|\\"|\\\n/, Str::Escape
|
|
129
|
+
mixin :strings_double
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
state :escape_dqs do
|
|
133
|
+
mixin :string_escape
|
|
134
|
+
mixin :dqs
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
state :sqs do
|
|
138
|
+
rule %r/'/, Str::Single, :pop!
|
|
139
|
+
rule %r/\\\\|\\'|\\\n/, Str::Escape
|
|
140
|
+
mixin :strings_single
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
state :escape_sqs do
|
|
144
|
+
mixin :string_escape
|
|
145
|
+
mixin :sqs
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
state :tdqs do
|
|
149
|
+
rule %r/"""/, Str::Double, :pop!
|
|
150
|
+
mixin :strings_double
|
|
151
|
+
rule %r/\n/, Str::Double
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
state :escape_tdqs do
|
|
155
|
+
mixin :string_escape
|
|
156
|
+
mixin :tdqs
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
state :tsqs do
|
|
160
|
+
rule %r/'''/, Str::Single, :pop!
|
|
161
|
+
mixin :strings_single
|
|
162
|
+
rule %r/\n/, Str::Single
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
state :escape_tsqs do
|
|
166
|
+
mixin :string_escape
|
|
167
|
+
mixin :tsqs
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# C minus minus (Cmm) is a pun on the name C++. It's an intermediate language
|
|
5
|
+
# of the Glasgow Haskell Compiler (GHC) that is very similar to C, but with
|
|
6
|
+
# many features missing and some special constructs.
|
|
7
|
+
#
|
|
8
|
+
# Cmm is a dialect of C--. The goal of this lexer is to use what GHC produces
|
|
9
|
+
# and parses (Cmm); C-- itself is not supported.
|
|
10
|
+
#
|
|
11
|
+
# https://gitlab.haskell.org/ghc/ghc/wikis/commentary/compiler/cmm-syntax
|
|
12
|
+
#
|
|
13
|
+
module Rouge
|
|
14
|
+
module Lexers
|
|
15
|
+
class GHCCmm < RegexLexer
|
|
16
|
+
title "GHC Cmm (C--)"
|
|
17
|
+
desc "GHC Cmm is the intermediate representation of the GHC Haskell compiler"
|
|
18
|
+
tag 'ghc-cmm'
|
|
19
|
+
filenames '*.cmm', '*.dump-cmm', '*.dump-cmm-*'
|
|
20
|
+
aliases 'cmm'
|
|
21
|
+
|
|
22
|
+
ws = %r(\s|//.*?\n|/[*](?:[^*]|(?:[*][^/]))*[*]+/)mx
|
|
23
|
+
|
|
24
|
+
# Make sure that this is not a preprocessor macro, e.g. `#if` or `#define`.
|
|
25
|
+
id = %r((?!#[a-zA-Z])[\w#\$%_']+)
|
|
26
|
+
|
|
27
|
+
complex_id = %r(
|
|
28
|
+
(?:[\w#$%_']|\(\)|\(,\)|\[\]|[0-9])*
|
|
29
|
+
(?:[\w#$%_']+)
|
|
30
|
+
)mx
|
|
31
|
+
|
|
32
|
+
state :root do
|
|
33
|
+
rule %r/\s+/m, Text
|
|
34
|
+
|
|
35
|
+
# sections markers
|
|
36
|
+
rule %r/^=====.*=====$/, Generic::Heading
|
|
37
|
+
|
|
38
|
+
# timestamps
|
|
39
|
+
rule %r/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d+ UTC$/, Comment::Single
|
|
40
|
+
|
|
41
|
+
mixin :detect_section
|
|
42
|
+
mixin :preprocessor_macros
|
|
43
|
+
|
|
44
|
+
mixin :info_tbls
|
|
45
|
+
mixin :comments
|
|
46
|
+
mixin :literals
|
|
47
|
+
mixin :keywords
|
|
48
|
+
mixin :types
|
|
49
|
+
mixin :infos
|
|
50
|
+
mixin :names
|
|
51
|
+
mixin :operators
|
|
52
|
+
|
|
53
|
+
# escaped newline
|
|
54
|
+
rule %r/\\\n/, Text
|
|
55
|
+
|
|
56
|
+
# rest is Text
|
|
57
|
+
rule %r/./, Text
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
state :detect_section do
|
|
61
|
+
rule %r/(section)(\s+)/ do |m|
|
|
62
|
+
token Keyword, m[1]
|
|
63
|
+
token Text, m[2]
|
|
64
|
+
push :section
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
state :section do
|
|
69
|
+
rule %r/"(data|cstring|text|rodata|relrodata|bss)"/, Name::Builtin
|
|
70
|
+
|
|
71
|
+
rule %r/{/, Punctuation, :pop!
|
|
72
|
+
|
|
73
|
+
mixin :names
|
|
74
|
+
mixin :operators
|
|
75
|
+
mixin :keywords
|
|
76
|
+
|
|
77
|
+
rule %r/\s+/, Text
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
state :preprocessor_macros do
|
|
81
|
+
rule %r/#(include|endif|else|if)/, Comment::Preproc
|
|
82
|
+
|
|
83
|
+
rule %r{
|
|
84
|
+
(\#define)
|
|
85
|
+
(#{ws}*)
|
|
86
|
+
(#{id})
|
|
87
|
+
}mx do |m|
|
|
88
|
+
token Comment::Preproc, m[1]
|
|
89
|
+
recurse m[2]
|
|
90
|
+
token Name::Label, m[3]
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
state :info_tbls do
|
|
95
|
+
rule %r/({ )(info_tbls)(:)/ do |m|
|
|
96
|
+
token Punctuation, m[1]
|
|
97
|
+
token Name::Entity, m[2]
|
|
98
|
+
token Punctuation, m[3]
|
|
99
|
+
|
|
100
|
+
push :info_tbls_body
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :info_tbls_body do
|
|
105
|
+
rule %r/}/, Punctuation, :pop!
|
|
106
|
+
rule %r/{/, Punctuation, :info_tbls_body
|
|
107
|
+
|
|
108
|
+
rule %r/(?=label:)/ do
|
|
109
|
+
push :label
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
rule %r{(\()(#{complex_id})(,)}mx do |m|
|
|
113
|
+
token Punctuation, m[1]
|
|
114
|
+
token Name::Label, m[2]
|
|
115
|
+
token Punctuation, m[3]
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
mixin :literals
|
|
119
|
+
mixin :infos
|
|
120
|
+
mixin :keywords
|
|
121
|
+
mixin :operators
|
|
122
|
+
|
|
123
|
+
rule %r/#{id}/, Text
|
|
124
|
+
rule %r/\s+/, Text
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
state :label do
|
|
128
|
+
mixin :infos
|
|
129
|
+
mixin :names
|
|
130
|
+
mixin :keywords
|
|
131
|
+
mixin :operators
|
|
132
|
+
|
|
133
|
+
rule %r/[^\S\n]+/, Text # Tab, space, etc. but not newline!
|
|
134
|
+
rule %r/\n/, Text, :pop!
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
state :comments do
|
|
138
|
+
rule %r/\/{2}.*/, Comment::Single
|
|
139
|
+
rule %r/\(likely.*?\)/, Comment
|
|
140
|
+
rule %r/\/\*.*?\*\//m, Comment::Multiline
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
state :literals do
|
|
144
|
+
rule %r/-?[0-9]+\.[0-9]+/, Literal::Number::Float
|
|
145
|
+
rule %r/-?[0-9]+/, Literal::Number::Integer
|
|
146
|
+
rule %r/"/, Literal::String::Delimiter, :literal_string
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
state :literal_string do
|
|
150
|
+
# quotes
|
|
151
|
+
rule %r/\\./, Literal::String::Escape
|
|
152
|
+
rule %r/%./, Literal::String::Symbol
|
|
153
|
+
rule %r/"/, Literal::String::Delimiter, :pop!
|
|
154
|
+
rule %r/./, Literal::String
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
state :operators do
|
|
158
|
+
rule %r/\.\./, Operator
|
|
159
|
+
rule %r/[+\-*\/<>=!&|~]/, Operator
|
|
160
|
+
rule %r/[\[\].{}:;,()]/, Punctuation
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
state :keywords do
|
|
164
|
+
rule %r/(const)(\s+)/ do |m|
|
|
165
|
+
token Keyword::Constant, m[1]
|
|
166
|
+
token Text, m[2]
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
rule %r/"/, Literal::String::Double
|
|
170
|
+
|
|
171
|
+
rule %r/(switch)([^{]*)({)/ do |m|
|
|
172
|
+
token Keyword, m[1]
|
|
173
|
+
recurse m[2]
|
|
174
|
+
token Punctuation, m[3]
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
rule %r/(arg|result)(#{ws}+)(hints)(:)/ do |m|
|
|
178
|
+
token Name::Property, m[1]
|
|
179
|
+
recurse m[2]
|
|
180
|
+
token Name::Property, m[3]
|
|
181
|
+
token Punctuation, m[4]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
rule %r/(returns)(#{ws}*)(to)/ do |m|
|
|
185
|
+
token Keyword, m[1]
|
|
186
|
+
recurse m[2]
|
|
187
|
+
token Keyword, m[3]
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
rule %r/(never)(#{ws}*)(returns)/ do |m|
|
|
191
|
+
token Keyword, m[1]
|
|
192
|
+
recurse m[2]
|
|
193
|
+
token Keyword, m[3]
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
rule %r{(return)(#{ws}*)(\()} do |m|
|
|
197
|
+
token Keyword, m[1]
|
|
198
|
+
recurse m[2]
|
|
199
|
+
token Punctuation, m[3]
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
rule %r{(if|else|goto|call|offset|import|jump|ccall|foreign|prim|case|unwind|export|reserve|push)(#{ws})} do |m|
|
|
203
|
+
token Keyword, m[1]
|
|
204
|
+
recurse m[2]
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
rule %r{(default)(#{ws}*)(:)} do |m|
|
|
208
|
+
token Keyword, m[1]
|
|
209
|
+
recurse m[2]
|
|
210
|
+
token Punctuation, m[3]
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
state :types do
|
|
215
|
+
# Memory access: `type[42]`
|
|
216
|
+
# Note: Only a token for type is produced.
|
|
217
|
+
rule %r/(#{id})(?=\[[^\]])/ do |m|
|
|
218
|
+
token Keyword::Type, m[1]
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
# Array type: `type[]`
|
|
222
|
+
rule %r/(#{id}\[\])/ do |m|
|
|
223
|
+
token Keyword::Type, m[1]
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
# Capture macro substitutions before lexing typed declarations
|
|
227
|
+
# I.e. there is no type in `PREPROCESSOR_MACRO_VARIABLE someFun()`
|
|
228
|
+
rule %r{
|
|
229
|
+
(^#{id})
|
|
230
|
+
(#{ws}+)
|
|
231
|
+
(#{id})
|
|
232
|
+
(#{ws}*)
|
|
233
|
+
(\()
|
|
234
|
+
}mx do |m|
|
|
235
|
+
token Name::Label, m[1]
|
|
236
|
+
recurse m[2]
|
|
237
|
+
token Name::Function, m[3]
|
|
238
|
+
recurse m[4]
|
|
239
|
+
token Punctuation, m[5]
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Type in variable or parameter declaration:
|
|
243
|
+
# `type /* optional whitespace */ var_name /* optional whitespace */;`
|
|
244
|
+
# `type /* optional whitespace */ var_name /* optional whitespace */, var_name2`
|
|
245
|
+
# `(type /* optional whitespace */ var_name /* optional whitespace */)`
|
|
246
|
+
# Note: Only the token for type is produced here.
|
|
247
|
+
rule %r{
|
|
248
|
+
(^#{id})
|
|
249
|
+
(#{ws}+)
|
|
250
|
+
(#{id})
|
|
251
|
+
}mx do |m|
|
|
252
|
+
token Keyword::Type, m[1]
|
|
253
|
+
recurse m[2]
|
|
254
|
+
token Name::Label, m[3]
|
|
255
|
+
end
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
state :infos do
|
|
259
|
+
rule %r/(args|res|upd|label|rep|srt|arity|fun_type|arg_space|updfr_space)(:)/ do |m|
|
|
260
|
+
token Name::Property, m[1]
|
|
261
|
+
token Punctuation, m[2]
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
rule %r/(stack_info)(:)/ do |m|
|
|
265
|
+
token Name::Entity, m[1]
|
|
266
|
+
token Punctuation, m[2]
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
state :names do
|
|
271
|
+
rule %r/(::)(#{ws}*)([A-Z]\w+)/ do |m|
|
|
272
|
+
token Operator, m[1]
|
|
273
|
+
recurse m[2]
|
|
274
|
+
token Keyword::Type, m[3]
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
rule %r/<(#{id})>/, Name::Builtin
|
|
278
|
+
|
|
279
|
+
rule %r/(Sp|SpLim|Hp|HpLim|HpAlloc|BaseReg|CurrentNursery|CurrentTSO|R\d{1,2}|gcptr)(?!#{id})/, Name::Variable::Global
|
|
280
|
+
rule %r/([A-Z]#{id})(\.)/ do |m|
|
|
281
|
+
token Name::Namespace, m[1]
|
|
282
|
+
token Punctuation, m[2]
|
|
283
|
+
push :namespace_name
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
# Inline function calls:
|
|
287
|
+
# ```
|
|
288
|
+
# arg1 `lt` arg2
|
|
289
|
+
# ```
|
|
290
|
+
rule %r/(`)(#{id})(`)/ do |m|
|
|
291
|
+
token Punctuation, m[1]
|
|
292
|
+
token Name::Function, m[2]
|
|
293
|
+
token Punctuation, m[3]
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
# Function: `name /* optional whitespace */ (`
|
|
297
|
+
# Function (arguments via explicit stack handling): `name /* optional whitespace */ {`
|
|
298
|
+
rule %r{(?=
|
|
299
|
+
#{complex_id}
|
|
300
|
+
#{ws}*
|
|
301
|
+
[\{\(]
|
|
302
|
+
)}mx do
|
|
303
|
+
push :function
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
rule %r/CLOSURE/, Keyword::Type
|
|
307
|
+
rule %r/#{complex_id}/, Name::Label
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
state :namespace_name do
|
|
311
|
+
rule %r/([A-Z]#{id})(\.)/ do |m|
|
|
312
|
+
token Name::Namespace, m[1]
|
|
313
|
+
token Punctuation, m[2]
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
rule %r{(#{complex_id})(#{ws}*)([\{\(])}mx do |m|
|
|
317
|
+
token Name::Function, m[1]
|
|
318
|
+
recurse m[2]
|
|
319
|
+
token Punctuation, m[3]
|
|
320
|
+
pop!
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
rule %r/#{complex_id}/, Name::Label, :pop!
|
|
324
|
+
|
|
325
|
+
rule %r/(?=.)/m do
|
|
326
|
+
pop!
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
state :function do
|
|
331
|
+
rule %r/INFO_TABLE_FUN|INFO_TABLE_CONSTR|INFO_TABLE_SELECTOR|INFO_TABLE_RET|INFO_TABLE/, Name::Builtin
|
|
332
|
+
rule %r/%#{id}/, Name::Builtin
|
|
333
|
+
rule %r/#{complex_id}/, Name::Function
|
|
334
|
+
rule %r/\s+/, Text
|
|
335
|
+
rule %r/[({]/, Punctuation, :pop!
|
|
336
|
+
mixin :comments
|
|
337
|
+
end
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
end
|