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,108 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Cypher < RegexLexer
|
|
7
|
+
tag 'cypher'
|
|
8
|
+
aliases 'cypher'
|
|
9
|
+
filenames '*.cypher'
|
|
10
|
+
mimetypes 'application/x-cypher-query'
|
|
11
|
+
|
|
12
|
+
title "Cypher"
|
|
13
|
+
desc 'The Cypher query language (neo4j.com/docs/cypher-manual)'
|
|
14
|
+
|
|
15
|
+
def self.functions
|
|
16
|
+
@functions ||= Set.new %w(
|
|
17
|
+
ABS ACOS ALLSHORTESTPATHS ASIN ATAN ATAN2 AVG CEIL COALESCE COLLECT
|
|
18
|
+
COS COT COUNT DATE DEGREES E ENDNODE EXP EXTRACT FILTER FLOOR
|
|
19
|
+
HAVERSIN HEAD ID KEYS LABELS LAST LEFT LENGTH LOG LOG10 LOWER LTRIM
|
|
20
|
+
MAX MIN NODE NODES PERCENTILECONT PERCENTILEDISC PI RADIANS RAND
|
|
21
|
+
RANGE REDUCE REL RELATIONSHIP RELATIONSHIPS REPLACE REVERSE RIGHT
|
|
22
|
+
ROUND RTRIM SHORTESTPATH SIGN SIN SIZE SPLIT SQRT STARTNODE STDEV
|
|
23
|
+
STDEVP STR SUBSTRING SUM TAIL TAN TIMESTAMP TOFLOAT TOINT TOINTEGER
|
|
24
|
+
TOSTRING TRIM TYPE UPPER
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.predicates
|
|
29
|
+
@predicates ||= Set.new %w(
|
|
30
|
+
ALL AND ANY CONTAINS EXISTS HAS IN NONE NOT OR SINGLE XOR
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.keywords
|
|
35
|
+
@keywords ||= Set.new %w(
|
|
36
|
+
AS ASC ASCENDING ASSERT BY CASE COMMIT CONSTRAINT CREATE CSV CYPHER
|
|
37
|
+
DELETE DESC DESCENDING DETACH DISTINCT DROP ELSE END ENDS EXPLAIN
|
|
38
|
+
FALSE FIELDTERMINATOR FOREACH FROM HEADERS IN INDEX IS JOIN LIMIT
|
|
39
|
+
LOAD MATCH MERGE NULL ON OPTIONAL ORDER PERIODIC PROFILE REMOVE
|
|
40
|
+
RETURN SCAN SET SKIP START STARTS THEN TRUE UNION UNIQUE UNWIND USING
|
|
41
|
+
WHEN WHERE WITH CALL YIELD
|
|
42
|
+
)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
state :root do
|
|
46
|
+
rule %r/[\s]+/, Text
|
|
47
|
+
rule %r(//.*?$), Comment::Single
|
|
48
|
+
|
|
49
|
+
rule %r([*+\-<>=&|~%^]), Operator
|
|
50
|
+
rule %r/[{}),;\[\]]/, Str::Symbol
|
|
51
|
+
|
|
52
|
+
# literal number
|
|
53
|
+
rule %r/(\w+)(:)(\s*)(-?[._\d]+)/ do
|
|
54
|
+
groups Name::Label, Str::Delimiter, Text::Whitespace, Num
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# function-like
|
|
58
|
+
# - "name("
|
|
59
|
+
# - "name ("
|
|
60
|
+
# - "name ("
|
|
61
|
+
rule %r/(\w+)(\s*)(\()/ do |m|
|
|
62
|
+
name = m[1].upcase
|
|
63
|
+
if self.class.functions.include? name
|
|
64
|
+
groups Name::Function, Text::Whitespace, Str::Symbol
|
|
65
|
+
elsif self.class.keywords.include? name
|
|
66
|
+
groups Keyword, Text::Whitespace, Str::Symbol
|
|
67
|
+
else
|
|
68
|
+
groups Name, Text::Whitespace, Str::Symbol
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
rule %r/:\w+/, Name::Class
|
|
73
|
+
|
|
74
|
+
# number range
|
|
75
|
+
rule %r/(-?\d+)(\.\.)(-?\d+)/ do
|
|
76
|
+
groups Num, Operator, Num
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# numbers
|
|
80
|
+
rule %r/(\d+\.\d*|\d*\.\d+)(e[+-]?\d+)?/i, Num::Float
|
|
81
|
+
rule %r/\d+e[+-]?\d+/i, Num::Float
|
|
82
|
+
rule %r/0[0-7]+/, Num::Oct
|
|
83
|
+
rule %r/0x[a-f0-9]+/i, Num::Hex
|
|
84
|
+
rule %r/\d+/, Num::Integer
|
|
85
|
+
|
|
86
|
+
rule %r([.\w]+:), Name::Property
|
|
87
|
+
|
|
88
|
+
# remaining "("
|
|
89
|
+
rule %r/\(/, Str::Symbol
|
|
90
|
+
|
|
91
|
+
rule %r/[.\w$]+/ do |m|
|
|
92
|
+
match = m[0].upcase
|
|
93
|
+
if self.class.predicates.include? match
|
|
94
|
+
token Operator::Word
|
|
95
|
+
elsif self.class.keywords.include? match
|
|
96
|
+
token Keyword
|
|
97
|
+
else
|
|
98
|
+
token Name
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
|
|
103
|
+
rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
|
|
104
|
+
rule %r/`(\\\\|\\`|[^`])*`/, Str::Backtick
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
load_lexer 'python.rb'
|
|
7
|
+
|
|
8
|
+
class Cython < Python
|
|
9
|
+
title "Cython"
|
|
10
|
+
desc "Cython and Pyrex source code (cython.org)"
|
|
11
|
+
tag 'cython'
|
|
12
|
+
aliases 'pyx', 'pyrex'
|
|
13
|
+
filenames '*.pyx', '*.pxd', '*.pxi'
|
|
14
|
+
mimetypes 'text/x-cython', 'application/x-cython'
|
|
15
|
+
|
|
16
|
+
def initialize(opts = {})
|
|
17
|
+
super opts
|
|
18
|
+
@indentation = nil
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.keywords
|
|
22
|
+
@keywords ||= super + %w(
|
|
23
|
+
by except? fused gil nogil
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.c_keywords
|
|
28
|
+
@ckeywords ||= %w(
|
|
29
|
+
public readonly extern api inline enum union
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
identifier = /[a-z_]\w*/i
|
|
34
|
+
dotted_identifier = /[a-z_.][\w.]*/i
|
|
35
|
+
|
|
36
|
+
prepend :root do
|
|
37
|
+
rule %r/cp?def|ctypedef/ do
|
|
38
|
+
token Keyword
|
|
39
|
+
push :c_definitions
|
|
40
|
+
push :c_start
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
rule %r/(from)((?:\\\s|\s)+)(#{dotted_identifier})((?:\\\s|\s)+)(cimport)/ do
|
|
44
|
+
groups Keyword::Namespace,
|
|
45
|
+
Text,
|
|
46
|
+
Name::Namespace,
|
|
47
|
+
Text,
|
|
48
|
+
Keyword::Namespace
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
rule %r/(cimport)(\s+)(#{dotted_identifier})/ do
|
|
52
|
+
groups Keyword::Namespace, Text, Name::Namespace
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
rule %r/(struct)((?:\\\s|\s)+)/ do
|
|
56
|
+
groups Keyword, Text
|
|
57
|
+
push :classname
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
mixin :func_call_fix
|
|
61
|
+
|
|
62
|
+
rule %r/[(,]/, Punctuation, :c_start
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
prepend :classname do
|
|
66
|
+
rule %r/(?:\\\s|\s)+/, Text
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
prepend :funcname do
|
|
70
|
+
rule %r/(?:\\\s|\s)+/, Text
|
|
71
|
+
end
|
|
72
|
+
# This is a fix for the way that function calls are lexed in the Python
|
|
73
|
+
# lexer. This should be moved to the Python lexer once confirmed that it
|
|
74
|
+
# does not cause any regressions.
|
|
75
|
+
state :func_call_fix do
|
|
76
|
+
rule %r/#{identifier}(?=\()/ do |m|
|
|
77
|
+
if self.class.keywords.include? m[0]
|
|
78
|
+
token Keyword
|
|
79
|
+
elsif self.class.exceptions.include? m[0]
|
|
80
|
+
token Name::Builtin
|
|
81
|
+
elsif self.class.builtins.include? m[0]
|
|
82
|
+
token Name::Builtin
|
|
83
|
+
elsif self.class.builtins_pseudo.include? m[0]
|
|
84
|
+
token Name::Builtin::Pseudo
|
|
85
|
+
else
|
|
86
|
+
token Name::Function
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# The Cython lexer adds three states to those already in the Python lexer.
|
|
92
|
+
# Calls to `cdef`, `cpdef` and `ctypedef` move the lexer into the :c_start
|
|
93
|
+
# state. The primary purpose of this state is to highlight datatypes. Once
|
|
94
|
+
# this has been done, the lexer moves to the :c_definitions state where
|
|
95
|
+
# the majority of text in a definition is lexed. Finally, newlines cause
|
|
96
|
+
# the lexer to move to :c_indent. This state is used to check whether we
|
|
97
|
+
# have moved out of a C block.
|
|
98
|
+
|
|
99
|
+
state :c_start do
|
|
100
|
+
rule %r/[^\S\n]+/, Text
|
|
101
|
+
|
|
102
|
+
rule %r/cp?def|ctypedef/, Keyword
|
|
103
|
+
|
|
104
|
+
rule %r/(?:un)?signed/, Keyword::Type
|
|
105
|
+
|
|
106
|
+
# This rule matches identifiers that could be type declarations. The
|
|
107
|
+
# lookahead matches (1) pointers, (2) arrays and (3) variable names.
|
|
108
|
+
rule %r/#{identifier}(?=(?:\*+)|(?:[ \t]*\[)|(?:[ \t]+\w))/ do |m|
|
|
109
|
+
if self.class.keywords.include? m[0]
|
|
110
|
+
token Keyword
|
|
111
|
+
pop!
|
|
112
|
+
elsif %w(def).include? m[0]
|
|
113
|
+
token Keyword
|
|
114
|
+
goto :funcname
|
|
115
|
+
elsif %w(struct class).include? m[0]
|
|
116
|
+
token Keyword::Reserved
|
|
117
|
+
goto :classname
|
|
118
|
+
elsif self.class.c_keywords.include? m[0]
|
|
119
|
+
token Keyword::Reserved
|
|
120
|
+
else
|
|
121
|
+
token Keyword::Type
|
|
122
|
+
pop!
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
rule(//) { pop! }
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
state :c_definitions do
|
|
130
|
+
rule %r/\n/, Text, :c_indent
|
|
131
|
+
mixin :root
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :c_indent do
|
|
135
|
+
rule %r/[ \t]+/ do |m|
|
|
136
|
+
token Text
|
|
137
|
+
goto :c_start
|
|
138
|
+
|
|
139
|
+
if @indentation.nil?
|
|
140
|
+
@indentation = m[0]
|
|
141
|
+
elsif @indentation.length > m[0].length
|
|
142
|
+
@indentation = nil
|
|
143
|
+
pop! 2 # Pop :c_start and :c_definitions
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
rule(//) { @indentation = nil; reset_stack }
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
end
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class D < RegexLexer
|
|
7
|
+
tag 'd'
|
|
8
|
+
aliases 'dlang'
|
|
9
|
+
filenames '*.d', '*.di'
|
|
10
|
+
mimetypes 'application/x-dsrc', 'text/x-dsrc'
|
|
11
|
+
|
|
12
|
+
title "D"
|
|
13
|
+
desc 'The D programming language(dlang.org)'
|
|
14
|
+
|
|
15
|
+
keywords = %w(
|
|
16
|
+
abstract alias align asm assert auto body
|
|
17
|
+
break case cast catch class const continue
|
|
18
|
+
debug default delegate delete deprecated do else
|
|
19
|
+
enum export extern finally final foreach_reverse
|
|
20
|
+
foreach for function goto if immutable import
|
|
21
|
+
interface invariant inout in is lazy mixin
|
|
22
|
+
module new nothrow out override package pragma
|
|
23
|
+
private protected public pure ref return scope
|
|
24
|
+
shared static struct super switch synchronized
|
|
25
|
+
template this throw try typedef typeid typeof
|
|
26
|
+
union unittest version volatile while with
|
|
27
|
+
__gshared __traits __vector __parameters
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
keywords_type = %w(
|
|
31
|
+
bool byte cdouble cent cfloat char creal
|
|
32
|
+
dchar double float idouble ifloat int ireal
|
|
33
|
+
long real short ubyte ucent uint ulong
|
|
34
|
+
ushort void wchar
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
keywords_pseudo = %w(
|
|
38
|
+
__FILE__ __FILE_FULL_PATH__ __MODULE__ __LINE__ __FUNCTION__
|
|
39
|
+
__PRETTY_FUNCTION__ __DATE__ __EOF__ __TIME__ __TIMESTAMP__
|
|
40
|
+
__VENDOR__ __VERSION__
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
state :whitespace do
|
|
44
|
+
rule %r/\n/m, Text
|
|
45
|
+
rule %r/\s+/m, Text
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
state :root do
|
|
49
|
+
mixin :whitespace
|
|
50
|
+
# Comments
|
|
51
|
+
rule %r(//.*), Comment::Single
|
|
52
|
+
rule %r(/(\\\n)?[*](.|\n)*?[*](\\\n)?/), Comment::Multiline
|
|
53
|
+
rule %r(/\+), Comment::Multiline, :nested_comment
|
|
54
|
+
# Keywords
|
|
55
|
+
rule %r/(#{keywords.join('|')})\b/, Keyword
|
|
56
|
+
rule %r/(#{keywords_type.join('|')})\b/, Keyword::Type
|
|
57
|
+
rule %r/(false|true|null)\b/, Keyword::Constant
|
|
58
|
+
rule %r/(#{keywords_pseudo.join('|')})\b/, Keyword::Pseudo
|
|
59
|
+
rule %r/macro\b/, Keyword::Reserved
|
|
60
|
+
rule %r/(string|wstring|dstring|size_t|ptrdiff_t)\b/, Name::Builtin
|
|
61
|
+
# Literals
|
|
62
|
+
# HexFloat
|
|
63
|
+
rule %r/0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)[pP][+\-]?[0-9_]+[fFL]?[i]?/, Num::Float
|
|
64
|
+
# DecimalFloat
|
|
65
|
+
rule %r/[0-9_]+(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)[fFL]?[i]?/, Num::Float
|
|
66
|
+
rule %r/\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[fFL]?[i]?/, Num::Float
|
|
67
|
+
# IntegerLiteral
|
|
68
|
+
# Binary
|
|
69
|
+
rule %r/0[Bb][01_]+/, Num::Bin
|
|
70
|
+
# Octal
|
|
71
|
+
# TODO: 0[0-7] isn't supported use octal![0-7] instead
|
|
72
|
+
rule %r/0[0-7_]+/, Num::Oct
|
|
73
|
+
# Hexadecimal
|
|
74
|
+
rule %r/0[xX][0-9a-fA-F_]+/, Num::Hex
|
|
75
|
+
# Decimal
|
|
76
|
+
rule %r/(0|[1-9][0-9_]*)([LUu]|Lu|LU|uL|UL)?/, Num::Integer
|
|
77
|
+
# CharacterLiteral
|
|
78
|
+
rule %r/'(\\['"?\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\&\w+;|.)'/, Str::Char
|
|
79
|
+
# StringLiteral
|
|
80
|
+
# WysiwygString
|
|
81
|
+
rule %r/r"[^"]*"[cwd]?/, Str
|
|
82
|
+
# Alternate WysiwygString
|
|
83
|
+
rule %r/`[^`]*`[cwd]?/, Str
|
|
84
|
+
# DoubleQuotedString
|
|
85
|
+
rule %r/"(\\\\|\\"|[^"])*"[cwd]?/, Str
|
|
86
|
+
# EscapeSequence
|
|
87
|
+
rule %r/\\(['\"?\\abfnrtv]|x[0-9a-fA-F]{2}|[0-7]{1,3}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&\w+;)/, Str
|
|
88
|
+
# HexString
|
|
89
|
+
rule %r/x"[0-9a-fA-F_\s]*"[cwd]?/, Str
|
|
90
|
+
# DelimitedString
|
|
91
|
+
rule %r/q"\[/, Str, :delimited_bracket
|
|
92
|
+
rule %r/q"\(/, Str, :delimited_parenthesis
|
|
93
|
+
rule %r/q"</, Str, :delimited_angle
|
|
94
|
+
rule %r/q"\{/, Str, :delimited_curly
|
|
95
|
+
rule %r/q"([a-zA-Z_]\w*)\n.*?\n\1"/, Str
|
|
96
|
+
rule %r/q"(.).*?\1"/, Str
|
|
97
|
+
# TokenString
|
|
98
|
+
rule %r/q\{/, Str, :token_string
|
|
99
|
+
# Attributes
|
|
100
|
+
rule %r/@([a-zA-Z_]\w*)?/, Name::Decorator
|
|
101
|
+
# Tokens
|
|
102
|
+
rule %r`(~=|\^=|%=|\*=|==|!>=|!<=|!<>=|!<>|!<|!>|!=|>>>=|>>>|>>=|>>|>=|<>=|<>|<<=|<<|<=|\+\+|\+=|--|-=|\|\||\|=|&&|&=|\.\.\.|\.\.|/=)|[/.&|\-+<>!()\[\]{}?,;:$=*%^~]`, Punctuation
|
|
103
|
+
# Identifier
|
|
104
|
+
rule %r/[a-zA-Z_]\w*/, Name
|
|
105
|
+
# Line
|
|
106
|
+
rule %r/#line\s.*\n/, Comment::Special
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
state :nested_comment do
|
|
110
|
+
rule %r([^+/]+), Comment::Multiline
|
|
111
|
+
rule %r(/\+), Comment::Multiline, :push
|
|
112
|
+
rule %r(\+/), Comment::Multiline, :pop!
|
|
113
|
+
rule %r([+/]), Comment::Multiline
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
state :token_string do
|
|
117
|
+
rule %r/\{/, Punctuation, :token_string_nest
|
|
118
|
+
rule %r/\}/, Str, :pop!
|
|
119
|
+
mixin :root
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
state :token_string_nest do
|
|
123
|
+
rule %r/\{/, Punctuation, :push
|
|
124
|
+
rule %r/\}/, Punctuation, :pop!
|
|
125
|
+
mixin :root
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
state :delimited_bracket do
|
|
129
|
+
rule %r/[^\[\]]+/, Str
|
|
130
|
+
rule %r/\[/, Str, :delimited_inside_bracket
|
|
131
|
+
rule %r/\]"/, Str, :pop!
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :delimited_inside_bracket do
|
|
135
|
+
rule %r/[^\[\]]+/, Str
|
|
136
|
+
rule %r/\[/, Str, :push
|
|
137
|
+
rule %r/\]/, Str, :pop!
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
state :delimited_parenthesis do
|
|
141
|
+
rule %r/[^()]+/, Str
|
|
142
|
+
rule %r/\(/, Str, :delimited_inside_parenthesis
|
|
143
|
+
rule %r/\)"/, Str, :pop!
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
state :delimited_inside_parenthesis do
|
|
147
|
+
rule %r/[^()]+/, Str
|
|
148
|
+
rule %r/\(/, Str, :push
|
|
149
|
+
rule %r/\)/, Str, :pop!
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
state :delimited_angle do
|
|
153
|
+
rule %r/[^<>]+/, Str
|
|
154
|
+
rule %r/</, Str, :delimited_inside_angle
|
|
155
|
+
rule %r/>"/, Str, :pop!
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
state :delimited_inside_angle do
|
|
159
|
+
rule %r/[^<>]+/, Str
|
|
160
|
+
rule %r/</, Str, :push
|
|
161
|
+
rule %r/>/, Str, :pop!
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
state :delimited_curly do
|
|
165
|
+
rule %r/[^{}]+/, Str
|
|
166
|
+
rule %r/\{/, Str, :delimited_inside_curly
|
|
167
|
+
rule %r/\}"/, Str, :pop!
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
state :delimited_inside_curly do
|
|
171
|
+
rule %r/[^{}]+/, Str
|
|
172
|
+
rule %r/\{/, Str, :push
|
|
173
|
+
rule %r/\}/, Str, :pop!
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Dart < RegexLexer
|
|
7
|
+
title "Dart"
|
|
8
|
+
desc "The Dart programming language (dartlang.com)"
|
|
9
|
+
|
|
10
|
+
tag 'dart'
|
|
11
|
+
filenames '*.dart'
|
|
12
|
+
mimetypes 'text/x-dart'
|
|
13
|
+
|
|
14
|
+
keywords = %w(
|
|
15
|
+
as assert break case catch continue default do else finally for
|
|
16
|
+
if in is new rethrow return super switch this throw try while with
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
declarations = %w(
|
|
20
|
+
abstract dynamic const external extends factory final get implements
|
|
21
|
+
native operator set static typedef var
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
types = %w(bool double Dynamic enum int num Object Set String void)
|
|
25
|
+
|
|
26
|
+
imports = %w(import export library part\s*of part source)
|
|
27
|
+
|
|
28
|
+
id = /[a-zA-Z_]\w*/
|
|
29
|
+
|
|
30
|
+
state :root do
|
|
31
|
+
rule %r(^
|
|
32
|
+
(\s*(?:[a-zA-Z_][a-zA-Z\d_.\[\]]*\s+)+?) # return arguments
|
|
33
|
+
([a-zA-Z_]\w*) # method name
|
|
34
|
+
(\s*)(\() # signature start
|
|
35
|
+
)mx do |m|
|
|
36
|
+
# TODO: do this better, this shouldn't need a delegation
|
|
37
|
+
delegate Dart, m[1]
|
|
38
|
+
token Name::Function, m[2]
|
|
39
|
+
token Text, m[3]
|
|
40
|
+
token Punctuation, m[4]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
rule %r/\s+/, Text
|
|
44
|
+
rule %r(//.*?$), Comment::Single
|
|
45
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
46
|
+
rule %r/"/, Str, :dqs
|
|
47
|
+
rule %r/'/, Str, :sqs
|
|
48
|
+
rule %r/r"[^"]*"/, Str::Other
|
|
49
|
+
rule %r/r'[^']*'/, Str::Other
|
|
50
|
+
rule %r/##{id}*/i, Str::Symbol
|
|
51
|
+
rule %r/@#{id}/, Name::Decorator
|
|
52
|
+
rule %r/(?:#{keywords.join('|')})\b/, Keyword
|
|
53
|
+
rule %r/(?:#{declarations.join('|')})\b/, Keyword::Declaration
|
|
54
|
+
rule %r/(?:#{types.join('|')})\b/, Keyword::Type
|
|
55
|
+
rule %r/(?:true|false|null)\b/, Keyword::Constant
|
|
56
|
+
rule %r/(?:class|interface)\b/, Keyword::Declaration, :class
|
|
57
|
+
rule %r/(?:#{imports.join('|')})\b/, Keyword::Namespace, :import
|
|
58
|
+
rule %r/(\.)(#{id})/ do
|
|
59
|
+
groups Operator, Name::Attribute
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
rule %r/#{id}:/, Name::Label
|
|
63
|
+
rule %r/\$?#{id}/, Name
|
|
64
|
+
rule %r/[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator
|
|
65
|
+
rule %r/\d*\.\d+([eE]\-?\d+)?/, Num::Float
|
|
66
|
+
rule %r/0x[\da-fA-F]+/, Num::Hex
|
|
67
|
+
rule %r/\d+L?/, Num::Integer
|
|
68
|
+
rule %r/\n/, Text
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
state :class do
|
|
72
|
+
rule %r/\s+/m, Text
|
|
73
|
+
rule id, Name::Class, :pop!
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :dqs do
|
|
77
|
+
rule %r/"/, Str, :pop!
|
|
78
|
+
rule %r/[^\\\$"]+/, Str
|
|
79
|
+
mixin :string
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
state :sqs do
|
|
83
|
+
rule %r/'/, Str, :pop!
|
|
84
|
+
rule %r/[^\\\$']+/, Str
|
|
85
|
+
mixin :string
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :import do
|
|
89
|
+
rule %r/;/, Operator, :pop!
|
|
90
|
+
rule %r/(?:show|hide)\b/, Keyword::Declaration
|
|
91
|
+
mixin :root
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
state :string do
|
|
95
|
+
mixin :interpolation
|
|
96
|
+
rule %r/\\[nrt\"\'\\]/, Str::Escape
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
state :interpolation do
|
|
100
|
+
rule %r/\$#{id}/, Str::Interpol
|
|
101
|
+
rule %r/\$\{[^\}]+\}/, Str::Interpol
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|