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,34 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class LiterateCoffeescript < RegexLexer
|
|
7
|
+
tag 'literate_coffeescript'
|
|
8
|
+
title "Literate CoffeeScript"
|
|
9
|
+
desc 'Literate coffeescript'
|
|
10
|
+
aliases 'litcoffee'
|
|
11
|
+
filenames '*.litcoffee'
|
|
12
|
+
|
|
13
|
+
def markdown
|
|
14
|
+
@markdown ||= Markdown.new(options)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def coffee
|
|
18
|
+
@coffee ||= Coffeescript.new(options)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
start { markdown.reset!; coffee.reset! }
|
|
22
|
+
|
|
23
|
+
state :root do
|
|
24
|
+
rule %r/^( .*?\n)+/m do
|
|
25
|
+
delegate coffee
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
rule %r/^([ ]{0,3}(\S.*?|)\n)*/m do
|
|
29
|
+
delegate markdown
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class LiterateHaskell < RegexLexer
|
|
7
|
+
title "Literate Haskell"
|
|
8
|
+
desc 'Literate haskell'
|
|
9
|
+
tag 'literate_haskell'
|
|
10
|
+
aliases 'lithaskell', 'lhaskell', 'lhs'
|
|
11
|
+
filenames '*.lhs'
|
|
12
|
+
mimetypes 'text/x-literate-haskell'
|
|
13
|
+
|
|
14
|
+
def haskell
|
|
15
|
+
@haskell ||= Haskell.new(options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
start { haskell.reset! }
|
|
19
|
+
|
|
20
|
+
# TODO: support TeX versions as well.
|
|
21
|
+
state :root do
|
|
22
|
+
rule %r/\s*?\n(?=>)/, Text, :code
|
|
23
|
+
rule %r/.*?\n/, Text
|
|
24
|
+
rule %r/.+\z/, Text
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
state :code do
|
|
28
|
+
rule %r/(>)( .*?(\n|\z))/ do |m|
|
|
29
|
+
token Name::Label, m[1]
|
|
30
|
+
delegate haskell, m[2]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
rule %r/\s*\n(?=\s*[^>])/, Text, :pop!
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class LLVM < RegexLexer
|
|
7
|
+
title "LLVM"
|
|
8
|
+
desc 'The LLVM Compiler Infrastructure (http://llvm.org/)'
|
|
9
|
+
tag 'llvm'
|
|
10
|
+
|
|
11
|
+
filenames '*.ll'
|
|
12
|
+
mimetypes 'text/x-llvm'
|
|
13
|
+
|
|
14
|
+
string = /"[^"]*?"/
|
|
15
|
+
identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
|
|
16
|
+
|
|
17
|
+
def self.keywords
|
|
18
|
+
@keywords ||= Set.new %w(
|
|
19
|
+
addrspace addrspacecast alias align alignstack allocsize alwaysinline
|
|
20
|
+
appending arcp argmemonly arm_aapcs_vfpcc arm_aapcscc arm_apcscc asm
|
|
21
|
+
attributes available_externally begin builtin byval c cc ccc cold
|
|
22
|
+
coldcc common constant convergent datalayout dbg declare default
|
|
23
|
+
define dllexport dllimport end eq exact extern_weak external false
|
|
24
|
+
fast fastcc gc global hidden inaccessiblemem_or_argmemonly
|
|
25
|
+
inaccessiblememonly inbounds inlinehint inreg internal jumptable
|
|
26
|
+
landingpad linker_private linkonce linkonce_odr minsize module naked
|
|
27
|
+
ne nest ninf nnan no-jump-tables noalias nobuiltin nocapture
|
|
28
|
+
nocf_check noduplicate noimplicitfloat noinline nonlazybind norecurse
|
|
29
|
+
noredzone noredzone noreturn nounwind nsw nsz null nuw oeq oge ogt
|
|
30
|
+
ole olt one opaque optforfuzzing optnone optsize ord personality
|
|
31
|
+
private protected ptx_device ptx_kernel readnone readonly
|
|
32
|
+
returns_twice safestack sanitize_address sanitize_hwaddress
|
|
33
|
+
sanitize_memory sanitize_thread section sge sgt shadowcallstack
|
|
34
|
+
sideeffect signext sle slt speculatable speculative_load_hardening
|
|
35
|
+
sret ssp sspreq sspstrong strictfp tail target thread_local to triple
|
|
36
|
+
true type ueq uge ugt ule ult undef une unnamed_addr uno uwtable
|
|
37
|
+
volatile weak weak_odr writeonly x x86_fastcallcc x86_stdcallcc
|
|
38
|
+
zeroext zeroinitializer
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.instructions
|
|
43
|
+
@instructions ||= Set.new %w(
|
|
44
|
+
add alloca and ashr bitcast br call catch cleanup extractelement
|
|
45
|
+
extractvalue fadd fcmp fdiv fmul fpext fptosi fptoui fptrunc free
|
|
46
|
+
frem fsub getelementptr getresult icmp insertelement insertvalue
|
|
47
|
+
inttoptr invoke load lshr malloc mul or phi ptrtoint resume ret sdiv
|
|
48
|
+
select sext shl shufflevector sitofp srem store sub switch trunc udiv
|
|
49
|
+
uitofp unreachable unwind urem va_arg xor zext
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.types
|
|
54
|
+
@types ||= Set.new %w(
|
|
55
|
+
double float fp128 half label metadata ppc_fp128 void x86_fp80 x86mmx
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
state :basic do
|
|
60
|
+
rule %r/;.*?$/, Comment::Single
|
|
61
|
+
rule %r/\s+/, Text
|
|
62
|
+
|
|
63
|
+
rule %r/#{identifier}\s*:/, Name::Label
|
|
64
|
+
|
|
65
|
+
rule %r/@(#{identifier}|\d+)/, Name::Variable::Global
|
|
66
|
+
rule %r/#\d+/, Name::Variable::Global
|
|
67
|
+
rule %r/(%|!)#{identifier}/, Name::Variable
|
|
68
|
+
rule %r/(%|!)\d+/, Name::Variable
|
|
69
|
+
|
|
70
|
+
rule %r/c?#{string}/, Str
|
|
71
|
+
|
|
72
|
+
rule %r/0[xX][a-fA-F0-9]+/, Num
|
|
73
|
+
rule %r/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
|
|
74
|
+
|
|
75
|
+
rule %r/[=<>{}\[\]()*.,!]|x/, Punctuation
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
state :root do
|
|
79
|
+
mixin :basic
|
|
80
|
+
|
|
81
|
+
rule %r/i[1-9]\d*/, Keyword::Type
|
|
82
|
+
|
|
83
|
+
rule %r/\w+/ do |m|
|
|
84
|
+
if self.class.types.include? m[0]
|
|
85
|
+
token Keyword::Type
|
|
86
|
+
elsif self.class.instructions.include? m[0]
|
|
87
|
+
token Keyword
|
|
88
|
+
elsif self.class.keywords.include? m[0]
|
|
89
|
+
token Keyword
|
|
90
|
+
else
|
|
91
|
+
token Error
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Lua < RegexLexer
|
|
7
|
+
title "Lua"
|
|
8
|
+
desc "Lua (http://www.lua.org)"
|
|
9
|
+
tag 'lua'
|
|
10
|
+
filenames '*.lua', '*.wlua'
|
|
11
|
+
|
|
12
|
+
mimetypes 'text/x-lua', 'application/x-lua'
|
|
13
|
+
|
|
14
|
+
option :function_highlighting, 'Whether to highlight builtin functions (default: true)'
|
|
15
|
+
option :disabled_modules, 'builtin modules to disable'
|
|
16
|
+
|
|
17
|
+
def initialize(opts={})
|
|
18
|
+
@function_highlighting = opts.delete(:function_highlighting) { true }
|
|
19
|
+
@disabled_modules = opts.delete(:disabled_modules) { [] }
|
|
20
|
+
super(opts)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.detect?(text)
|
|
24
|
+
return true if text.shebang? 'lua'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.builtins
|
|
28
|
+
load File.join(Lexers::BASE_DIR, 'lua/builtins.rb')
|
|
29
|
+
self.builtins
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def builtins
|
|
33
|
+
return [] unless @function_highlighting
|
|
34
|
+
|
|
35
|
+
@builtins ||= Set.new.tap do |builtins|
|
|
36
|
+
self.class.builtins.each do |mod, fns|
|
|
37
|
+
next if @disabled_modules.include? mod
|
|
38
|
+
builtins.merge(fns)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
state :root do
|
|
44
|
+
# lua allows a file to start with a shebang
|
|
45
|
+
rule %r(#!(.*?)$), Comment::Preproc
|
|
46
|
+
rule %r//, Text, :base
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
state :base do
|
|
50
|
+
rule %r(--\[(=*)\[.*?\]\1\])m, Comment::Multiline
|
|
51
|
+
rule %r(--.*$), Comment::Single
|
|
52
|
+
|
|
53
|
+
rule %r((?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?'), Num::Float
|
|
54
|
+
rule %r((?i)\d+e[+-]?\d+), Num::Float
|
|
55
|
+
rule %r((?i)0x[0-9a-f]*), Num::Hex
|
|
56
|
+
rule %r(\d+), Num::Integer
|
|
57
|
+
|
|
58
|
+
rule %r(\n), Text
|
|
59
|
+
rule %r([^\S\n]), Text
|
|
60
|
+
# multiline strings
|
|
61
|
+
rule %r(\[(=*)\[.*?\]\1\])m, Str
|
|
62
|
+
|
|
63
|
+
rule %r((==|~=|<=|>=|\.\.\.|\.\.|[=+\-*/%^<>#])), Operator
|
|
64
|
+
rule %r([\[\]\{\}\(\)\.,:;]), Punctuation
|
|
65
|
+
rule %r((and|or|not)\b), Operator::Word
|
|
66
|
+
|
|
67
|
+
rule %r((break|do|else|elseif|end|for|if|in|repeat|return|then|until|while)\b), Keyword
|
|
68
|
+
rule %r((local)\b), Keyword::Declaration
|
|
69
|
+
rule %r((true|false|nil)\b), Keyword::Constant
|
|
70
|
+
|
|
71
|
+
rule %r((function)\b), Keyword, :function_name
|
|
72
|
+
|
|
73
|
+
rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m|
|
|
74
|
+
name = m[0]
|
|
75
|
+
if name == "gsub"
|
|
76
|
+
token Name::Builtin
|
|
77
|
+
push :gsub
|
|
78
|
+
elsif self.builtins.include?(name)
|
|
79
|
+
token Name::Builtin
|
|
80
|
+
elsif name =~ /\./
|
|
81
|
+
a, b = name.split('.', 2)
|
|
82
|
+
token Name, a
|
|
83
|
+
token Punctuation, '.'
|
|
84
|
+
token Name, b
|
|
85
|
+
else
|
|
86
|
+
token Name
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
rule %r('), Str::Single, :escape_sqs
|
|
91
|
+
rule %r("), Str::Double, :escape_dqs
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
state :function_name do
|
|
95
|
+
rule %r/\s+/, Text
|
|
96
|
+
rule %r((?:([A-Za-z_][A-Za-z0-9_]*)(\.))?([A-Za-z_][A-Za-z0-9_]*)) do
|
|
97
|
+
groups Name::Class, Punctuation, Name::Function
|
|
98
|
+
pop!
|
|
99
|
+
end
|
|
100
|
+
# inline function
|
|
101
|
+
rule %r(\(), Punctuation, :pop!
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
state :gsub do
|
|
105
|
+
rule %r/\)/, Punctuation, :pop!
|
|
106
|
+
rule %r/[(,]/, Punctuation
|
|
107
|
+
rule %r/\s+/, Text
|
|
108
|
+
rule %r/"/, Str::Regex, :regex
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
state :regex do
|
|
112
|
+
rule %r(") do
|
|
113
|
+
token Str::Regex
|
|
114
|
+
goto :regex_end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
rule %r/\[\^?/, Str::Escape, :regex_group
|
|
118
|
+
rule %r/\\./, Str::Escape
|
|
119
|
+
rule %r{[(][?][:=<!]}, Str::Escape
|
|
120
|
+
rule %r/[{][\d,]+[}]/, Str::Escape
|
|
121
|
+
rule %r/[()?]/, Str::Escape
|
|
122
|
+
rule %r/./, Str::Regex
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
state :regex_end do
|
|
126
|
+
rule %r/[$]+/, Str::Regex, :pop!
|
|
127
|
+
rule(//) { pop! }
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
state :regex_group do
|
|
131
|
+
rule %r(/), Str::Escape
|
|
132
|
+
rule %r/\]/, Str::Escape, :pop!
|
|
133
|
+
rule %r/(\\)(.)/ do |m|
|
|
134
|
+
groups Str::Escape, Str::Regex
|
|
135
|
+
end
|
|
136
|
+
rule %r/./, Str::Regex
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
state :escape_sqs do
|
|
140
|
+
mixin :string_escape
|
|
141
|
+
mixin :sqs
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
state :escape_dqs do
|
|
145
|
+
mixin :string_escape
|
|
146
|
+
mixin :dqs
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
state :string_escape do
|
|
150
|
+
rule %r(\\([abfnrtv\\"']|\d{1,3})), Str::Escape
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
state :sqs do
|
|
154
|
+
rule %r('), Str::Single, :pop!
|
|
155
|
+
rule %r([^']+), Str::Single
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
state :dqs do
|
|
159
|
+
rule %r("), Str::Double, :pop!
|
|
160
|
+
rule %r([^"]+), Str::Double
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# automatically generated by `rake builtins:lua`
|
|
5
|
+
module Rouge
|
|
6
|
+
module Lexers
|
|
7
|
+
class Lua
|
|
8
|
+
def self.builtins
|
|
9
|
+
@builtins ||= {}.tap do |b|
|
|
10
|
+
b["basic"] = Set.new %w(_G _VERSION assert collectgarbage dofile error getmetatable ipairs load loadfile next pairs pcall print rawequal rawget rawlen rawset select setmetatable tonumber tostring type xpcall file:close file:flush file:lines file:read file:seek file:setvbuf file:write LUA_CPATH LUA_CPATH_5_2 LUA_INIT LUA_INIT_5_2 LUA_PATH LUA_PATH_5_2 luaopen_base luaopen_bit32 luaopen_coroutine luaopen_debug luaopen_io luaopen_math luaopen_os luaopen_package luaopen_string luaopen_table LUA_ERRERR LUA_ERRFILE LUA_ERRGCMM LUA_ERRMEM LUA_ERRRUN LUA_ERRSYNTAX LUA_HOOKCALL LUA_HOOKCOUNT LUA_HOOKLINE LUA_HOOKRET LUA_HOOKTAILCALL LUA_MASKCALL LUA_MASKCOUNT LUA_MASKLINE LUA_MASKRET LUA_MINSTACK LUA_MULTRET LUA_NOREF LUA_OK LUA_OPADD LUA_OPDIV LUA_OPEQ LUA_OPLE LUA_OPLT LUA_OPMOD LUA_OPMUL LUA_OPPOW LUA_OPSUB LUA_OPUNM LUA_REFNIL LUA_REGISTRYINDEX LUA_RIDX_GLOBALS LUA_RIDX_MAINTHREAD LUA_TBOOLEAN LUA_TFUNCTION LUA_TLIGHTUSERDATA LUA_TNIL LUA_TNONE LUA_TNUMBER LUA_TSTRING LUA_TTABLE LUA_TTHREAD LUA_TUSERDATA LUA_USE_APICHECK LUA_YIELD LUAL_BUFFERSIZE)
|
|
11
|
+
b["modules"] = Set.new %w(require package.config package.cpath package.loaded package.loadlib package.path package.preload package.searchers package.searchpath)
|
|
12
|
+
b["bit32"] = Set.new %w(bit32.arshift bit32.band bit32.bnot bit32.bor bit32.btest bit32.bxor bit32.extract bit32.lrotate bit32.lshift bit32.replace bit32.rrotate bit32.rshift)
|
|
13
|
+
b["coroutine"] = Set.new %w(coroutine.create coroutine.resume coroutine.running coroutine.status coroutine.wrap coroutine.yield)
|
|
14
|
+
b["debug"] = Set.new %w(debug.debug debug.getuservalue debug.gethook debug.getinfo debug.getlocal debug.getmetatable debug.getregistry debug.getupvalue debug.setuservalue debug.sethook debug.setlocal debug.setmetatable debug.setupvalue debug.traceback debug.upvalueid debug.upvaluejoin)
|
|
15
|
+
b["io"] = Set.new %w(io.close io.flush io.input io.lines io.open io.output io.popen io.read io.stderr io.stdin io.stdout io.tmpfile io.type io.write)
|
|
16
|
+
b["math"] = Set.new %w(math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.cosh math.deg math.exp math.floor math.fmod math.frexp math.huge math.ldexp math.log math.max math.min math.modf math.pi math.pow math.rad math.random math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh)
|
|
17
|
+
b["os"] = Set.new %w(os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename os.setlocale os.time os.tmpname)
|
|
18
|
+
b["string"] = Set.new %w(string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.rep string.reverse string.sub string.upper)
|
|
19
|
+
b["table"] = Set.new %w(table.concat table.insert table.pack table.remove table.sort table.unpack)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Lustre < RegexLexer
|
|
7
|
+
title "Lustre"
|
|
8
|
+
desc 'The Lustre programming language (Verimag)'
|
|
9
|
+
tag 'lustre'
|
|
10
|
+
filenames '*.lus'
|
|
11
|
+
mimetypes 'text/x-lustre'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= Set.new %w(
|
|
15
|
+
extern unsafe assert const current enum function let node operator
|
|
16
|
+
returns step struct tel type var model package needs provides uses is
|
|
17
|
+
body end include merge
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.word_operators
|
|
22
|
+
@word_operators ||= Set.new %w(
|
|
23
|
+
div and xor mod or not nor if then else fby pre when with
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.primitives
|
|
28
|
+
@primitives ||= Set.new %w(int real bool)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
operator = %r([,!$%&*+./:<=>?@^|~#-]+)
|
|
32
|
+
id = /[a-z_][\w']*/i
|
|
33
|
+
|
|
34
|
+
state :root do
|
|
35
|
+
rule %r/\s+/m, Text
|
|
36
|
+
rule %r/false|true/, Keyword::Constant
|
|
37
|
+
rule %r(\-\-.*), Comment::Single
|
|
38
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
39
|
+
rule %r(\(\*.*?\*\))m, Comment::Multiline
|
|
40
|
+
rule id do |m|
|
|
41
|
+
match = m[0]
|
|
42
|
+
if self.class.keywords.include? match
|
|
43
|
+
token Keyword
|
|
44
|
+
elsif self.class.word_operators.include? match
|
|
45
|
+
token Operator::Word
|
|
46
|
+
elsif self.class.primitives.include? match
|
|
47
|
+
token Keyword::Type
|
|
48
|
+
else
|
|
49
|
+
token Name
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
rule %r/[(){}\[\];]+/, Punctuation
|
|
54
|
+
rule operator, Operator
|
|
55
|
+
|
|
56
|
+
rule %r/-?\d[\d_]*(.[\d_]*)?(e[+-]?\d[\d_]*)/i, Num::Float
|
|
57
|
+
rule %r/\d[\d_]*/, Num::Integer
|
|
58
|
+
|
|
59
|
+
rule %r/'(?:(\\[\\"'ntbr ])|(\\[0-9]{3})|(\\x\h{2}))'/, Str::Char
|
|
60
|
+
rule %r/'[.]'/, Str::Char
|
|
61
|
+
rule %r/"/, Str::Double, :string
|
|
62
|
+
rule %r/[~?]#{id}/, Name::Variable
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
state :string do
|
|
66
|
+
rule %r/[^\\"]+/, Str::Double
|
|
67
|
+
mixin :escape_sequence
|
|
68
|
+
rule %r/\\\n/, Str::Double
|
|
69
|
+
rule %r/"/, Str::Double, :pop!
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
state :escape_sequence do
|
|
73
|
+
rule %r/\\[\\"'ntbr]/, Str::Escape
|
|
74
|
+
rule %r/\\\d{3}/, Str::Escape
|
|
75
|
+
rule %r/\\x\h{2}/, Str::Escape
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
#
|
|
4
|
+
# adapted from lustre.rf (adapted from ocaml.rb), hence some ocaml-ism migth remains
|
|
5
|
+
module Rouge
|
|
6
|
+
module Lexers
|
|
7
|
+
load_lexer 'lustre.rb'
|
|
8
|
+
|
|
9
|
+
class Lutin < Lustre
|
|
10
|
+
title "Lutin"
|
|
11
|
+
desc 'The Lutin programming language (Verimag)'
|
|
12
|
+
tag 'lutin'
|
|
13
|
+
filenames '*.lut'
|
|
14
|
+
mimetypes 'text/x-lutin'
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= Set.new %w(
|
|
18
|
+
let in node extern system returns weak strong assert raise try catch
|
|
19
|
+
trap do exist erun run type ref exception include false true
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.word_operators
|
|
24
|
+
@word_operators ||= Set.new %w(
|
|
25
|
+
div and xor mod or not nor if then else pre)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.primitives
|
|
29
|
+
@primitives ||= Set.new %w(int real bool trace loop fby)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|