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,96 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Ceylon < RegexLexer
|
|
7
|
+
tag 'ceylon'
|
|
8
|
+
filenames '*.ceylon'
|
|
9
|
+
mimetypes 'text/x-ceylon'
|
|
10
|
+
|
|
11
|
+
title "Ceylon"
|
|
12
|
+
desc 'Say more, more clearly.'
|
|
13
|
+
|
|
14
|
+
state :whitespace do
|
|
15
|
+
rule %r([^\S\n]+), Text
|
|
16
|
+
rule %r(//.*?\n), Comment::Single
|
|
17
|
+
rule %r(/\*), Comment::Multiline
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
state :root do
|
|
21
|
+
mixin :whitespace
|
|
22
|
+
|
|
23
|
+
rule %r((shared|abstract|formal|default|actual|variable|deprecated|small|
|
|
24
|
+
late|literal|doc|by|see|throws|optional|license|tagged|final|native|
|
|
25
|
+
annotation|sealed)\b), Name::Decorator
|
|
26
|
+
|
|
27
|
+
rule %r((break|case|catch|continue|else|finally|for|in|
|
|
28
|
+
if|return|switch|this|throw|try|while|is|exists|dynamic|
|
|
29
|
+
nonempty|then|outer|assert|let)\b), Keyword
|
|
30
|
+
|
|
31
|
+
rule %r((abstracts|extends|satisfies|super|given|of|out|assign)\b), Keyword::Declaration
|
|
32
|
+
|
|
33
|
+
rule %r((function|value|void|new)\b), Keyword::Type
|
|
34
|
+
|
|
35
|
+
rule %r((assembly|module|package)(\s+)) do
|
|
36
|
+
groups Keyword::Namespace, Text
|
|
37
|
+
push :import
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
rule %r((true|false|null)\b), Keyword::Constant
|
|
41
|
+
|
|
42
|
+
rule %r((class|interface|object|alias)(\s+)) do
|
|
43
|
+
groups Keyword::Declaration, Text
|
|
44
|
+
push :class
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
rule %r((import)(\s+)) do
|
|
48
|
+
groups Keyword::Namespace, Text
|
|
49
|
+
push :import
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
rule %r("(\\\\|\\"|[^"])*"), Literal::String
|
|
53
|
+
rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
|
|
54
|
+
rule %r(".*``.*``.*"', String::Interpol
|
|
55
|
+
rule %r(\.)([a-z_]\w*)) do
|
|
56
|
+
groups Operator, Name::Attribute
|
|
57
|
+
end
|
|
58
|
+
rule %r([a-zA-Z_]\w*:), Name::Label
|
|
59
|
+
rule %r((\\I[a-z]|[A-Z])\w*), Name::Decorator
|
|
60
|
+
rule %r([a-zA-Z_]\w*), Name
|
|
61
|
+
rule %r([~^*!%&\[\](){}<>|+=:;,./?`-]), Operator
|
|
62
|
+
rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
|
|
63
|
+
rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
|
|
64
|
+
Literal::Number::Float
|
|
65
|
+
rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
|
|
66
|
+
rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
|
|
67
|
+
Literal::Number::Float
|
|
68
|
+
rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex
|
|
69
|
+
rule %r(#[0-9a-fA-F]+), Literal::Number::Hex
|
|
70
|
+
rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin
|
|
71
|
+
rule %r(\$[01]+), Literal::Number::Bin
|
|
72
|
+
rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer
|
|
73
|
+
rule %r([0-9]+[kMGTP]?), Literal::Number::Integer
|
|
74
|
+
rule %r(\n), Text
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
state :class do
|
|
79
|
+
mixin :whitespace
|
|
80
|
+
rule %r([A-Za-z_]\w*), Name::Class, :pop!
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
state :import do
|
|
84
|
+
rule %r([a-z][\w.]*), Name::Namespace, :pop!
|
|
85
|
+
rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop!
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :comment do
|
|
89
|
+
rule %r([^*/]), Comment.Multiline
|
|
90
|
+
rule %r(/\*), Comment::Multiline, :push!
|
|
91
|
+
rule %r(\*/), Comment::Multiline, :pop!
|
|
92
|
+
rule %r([*/]), Comment::Multiline
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
|
|
7
|
+
class Cfscript < RegexLexer
|
|
8
|
+
title "CFScript"
|
|
9
|
+
desc 'CFScript, the CFML scripting language'
|
|
10
|
+
tag 'cfscript'
|
|
11
|
+
aliases 'cfc'
|
|
12
|
+
filenames '*.cfc'
|
|
13
|
+
|
|
14
|
+
def self.keywords
|
|
15
|
+
@keywords ||= %w(
|
|
16
|
+
if else var xml default break switch do try catch throw in continue for return while required
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.declarations
|
|
21
|
+
@declarations ||= %w(
|
|
22
|
+
component property function remote public package private
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.types
|
|
27
|
+
@types ||= %w(
|
|
28
|
+
any array binary boolean component date guid numeric query string struct uuid void xml
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
constants = %w(application session client cookie super this variables arguments cgi)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
operators = %w(\+\+ -- && \|\| <= >= < > == != mod eq lt gt lte gte not is and or xor eqv imp equal contains \? )
|
|
36
|
+
dotted_id = /[$a-zA-Z_][a-zA-Z0-9_.]*/
|
|
37
|
+
|
|
38
|
+
state :root do
|
|
39
|
+
mixin :comments_and_whitespace
|
|
40
|
+
rule %r/(?:#{operators.join('|')}|does not contain|greater than(?: or equal to)?|less than(?: or equal to)?)\b/i, Operator, :expr_start
|
|
41
|
+
rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
|
|
42
|
+
|
|
43
|
+
rule %r/[(\[,]/, Punctuation, :expr_start
|
|
44
|
+
rule %r/;/, Punctuation, :statement
|
|
45
|
+
rule %r/[)\].]/, Punctuation
|
|
46
|
+
|
|
47
|
+
rule %r/[?]/ do
|
|
48
|
+
token Punctuation
|
|
49
|
+
push :ternary
|
|
50
|
+
push :expr_start
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
rule %r/[{}]/, Punctuation, :statement
|
|
54
|
+
|
|
55
|
+
rule %r/(?:#{constants.join('|')})\b/, Name::Constant
|
|
56
|
+
rule %r/(?:true|false|null)\b/, Keyword::Constant
|
|
57
|
+
rule %r/import\b/, Keyword::Namespace, :import
|
|
58
|
+
rule %r/(#{dotted_id})(\s*)(:)(\s*)/ do
|
|
59
|
+
groups Name, Text, Punctuation, Text
|
|
60
|
+
push :expr_start
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
rule %r/([A-Za-z_$][\w.]*)(\s*)(\()/ do |m|
|
|
64
|
+
if self.class.keywords.include? m[1]
|
|
65
|
+
token Keyword, m[1]
|
|
66
|
+
token Text, m[2]
|
|
67
|
+
token Punctuation, m[3]
|
|
68
|
+
else
|
|
69
|
+
token Name::Function, m[1]
|
|
70
|
+
token Text, m[2]
|
|
71
|
+
token Punctuation, m[3]
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
rule dotted_id do |m|
|
|
76
|
+
if self.class.declarations.include? m[0]
|
|
77
|
+
token Keyword::Declaration
|
|
78
|
+
push :expr_start
|
|
79
|
+
elsif self.class.keywords.include? m[0]
|
|
80
|
+
token Keyword
|
|
81
|
+
push :expr_start
|
|
82
|
+
elsif self.class.types.include? m[0]
|
|
83
|
+
token Keyword::Type
|
|
84
|
+
push :expr_start
|
|
85
|
+
else
|
|
86
|
+
token Name::Other
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
rule %r/[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
91
|
+
rule %r/0x[0-9a-fA-F]+/, Num::Hex
|
|
92
|
+
rule %r/[0-9]+/, Num::Integer
|
|
93
|
+
rule %r/"(\\\\|\\"|[^"])*"/, Str::Double
|
|
94
|
+
rule %r/'(\\\\|\\'|[^'])*'/, Str::Single
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# same as java, broken out
|
|
99
|
+
state :comments_and_whitespace do
|
|
100
|
+
rule %r/\s+/, Text
|
|
101
|
+
rule %r(//.*?$), Comment::Single
|
|
102
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
state :expr_start do
|
|
106
|
+
mixin :comments_and_whitespace
|
|
107
|
+
|
|
108
|
+
rule %r/[{]/, Punctuation, :object
|
|
109
|
+
|
|
110
|
+
rule %r//, Text, :pop!
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
state :statement do
|
|
114
|
+
|
|
115
|
+
rule %r/[{}]/, Punctuation
|
|
116
|
+
|
|
117
|
+
mixin :expr_start
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# object literals
|
|
121
|
+
state :object do
|
|
122
|
+
mixin :comments_and_whitespace
|
|
123
|
+
rule %r/[}]/ do
|
|
124
|
+
token Punctuation
|
|
125
|
+
push :expr_start
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
rule %r/(#{dotted_id})(\s*)(:)/ do
|
|
129
|
+
groups Name::Other, Text, Punctuation
|
|
130
|
+
push :expr_start
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
rule %r/:/, Punctuation
|
|
134
|
+
mixin :root
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# ternary expressions, where <dotted_id>: is not a label!
|
|
138
|
+
state :ternary do
|
|
139
|
+
rule %r/:/ do
|
|
140
|
+
token Punctuation
|
|
141
|
+
goto :expr_start
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
mixin :root
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
state :import do
|
|
148
|
+
rule %r/\s+/m, Text
|
|
149
|
+
rule %r/[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Clean < RegexLexer
|
|
7
|
+
title "Clean"
|
|
8
|
+
desc "The Clean programming language (clean.cs.ru.nl)"
|
|
9
|
+
|
|
10
|
+
tag 'clean'
|
|
11
|
+
filenames '*.dcl', '*.icl'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= Set.new %w(
|
|
15
|
+
if otherwise
|
|
16
|
+
let in
|
|
17
|
+
with where
|
|
18
|
+
case of
|
|
19
|
+
infix infixl infixr
|
|
20
|
+
class instance
|
|
21
|
+
generic derive
|
|
22
|
+
special
|
|
23
|
+
implementation definition system module
|
|
24
|
+
from import qualified as
|
|
25
|
+
dynamic
|
|
26
|
+
code inline foreign export ccall stdcall
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# These are literal patterns common to the ABC intermediate language and
|
|
31
|
+
# Clean. Clean has more extensive literal patterns (see :basic below).
|
|
32
|
+
state :common_literals do
|
|
33
|
+
rule %r/'(?:[^'\\]|\\(?:x[0-9a-fA-F]+|\d+|.))'/, Str::Char
|
|
34
|
+
|
|
35
|
+
rule %r/[+~-]?\d+\.\d+(?:E[+-]?\d+)?\b/, Num::Float
|
|
36
|
+
rule %r/[+~-]?\d+E[+-]?\d+\b/, Num::Float
|
|
37
|
+
rule %r/[+~-]?\d+/, Num::Integer
|
|
38
|
+
|
|
39
|
+
rule %r/"/, Str::Double, :string
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
state :basic do
|
|
43
|
+
rule %r/\s+/m, Text::Whitespace
|
|
44
|
+
|
|
45
|
+
rule %r/\/\/\*.*/, Comment::Doc
|
|
46
|
+
rule %r/\/\/.*/, Comment::Single
|
|
47
|
+
rule %r/\/\*\*/, Comment::Doc, :comment_doc
|
|
48
|
+
rule %r/\/\*/, Comment::Multiline, :comment
|
|
49
|
+
|
|
50
|
+
rule %r/[+~-]?0[0-7]+/, Num::Oct
|
|
51
|
+
rule %r/[+~-]?0x[0-9a-fA-F]+/, Num::Hex
|
|
52
|
+
mixin :common_literals
|
|
53
|
+
rule %r/(\[)(\s*)(')(?=.*?'\])/ do
|
|
54
|
+
groups Punctuation, Text::Whitespace, Str::Single, Punctuation
|
|
55
|
+
push :charlist
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# nested commenting
|
|
60
|
+
state :comment_doc do
|
|
61
|
+
rule %r/\*\//, Comment::Doc, :pop!
|
|
62
|
+
rule %r/\/\/.*/, Comment::Doc # Singleline comments in multiline comments are skipped
|
|
63
|
+
rule %r/\/\*/, Comment::Doc, :comment
|
|
64
|
+
rule %r/[^*\/]+/, Comment::Doc
|
|
65
|
+
rule %r/[*\/]/, Comment::Doc
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# This is the same as the above, but with Multiline instead of Doc
|
|
69
|
+
state :comment do
|
|
70
|
+
rule %r/\*\//, Comment::Multiline, :pop!
|
|
71
|
+
rule %r/\/\/.*/, Comment::Multiline # Singleline comments in multiline comments are skipped
|
|
72
|
+
rule %r/\/\*/, Comment::Multiline, :comment
|
|
73
|
+
rule %r/[^*\/]+/, Comment::Multiline
|
|
74
|
+
rule %r/[*\/]/, Comment::Multiline
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
state :root do
|
|
78
|
+
mixin :basic
|
|
79
|
+
|
|
80
|
+
rule %r/code(\s+inline)?\s*{/, Comment::Preproc, :abc
|
|
81
|
+
|
|
82
|
+
rule %r/_*[a-z][\w_`]*/ do |m|
|
|
83
|
+
if self.class.keywords.include?(m[0])
|
|
84
|
+
token Keyword
|
|
85
|
+
else
|
|
86
|
+
token Name
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
rule %r/_*[A-Z][\w_`]*/ do |m|
|
|
91
|
+
if m[0]=='True' || m[0]=='False'
|
|
92
|
+
token Keyword::Constant
|
|
93
|
+
else
|
|
94
|
+
token Keyword::Type
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
rule %r/[^\w_\s`]/, Punctuation
|
|
99
|
+
rule %r/_\b/, Punctuation
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
state :escapes do
|
|
103
|
+
rule %r/\\x[0-9a-fA-F]{1,2}/i, Str::Escape
|
|
104
|
+
rule %r/\\d\d{0,3}/i, Str::Escape
|
|
105
|
+
rule %r/\\0[0-7]{0,3}/, Str::Escape
|
|
106
|
+
rule %r/\\[0-7]{1,3}/, Str::Escape
|
|
107
|
+
rule %r/\\[nrfbtv\\"']/, Str::Escape
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
state :string do
|
|
111
|
+
rule %r/"/, Str::Double, :pop!
|
|
112
|
+
mixin :escapes
|
|
113
|
+
rule %r/[^\\"]+/, Str::Double
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
state :charlist do
|
|
117
|
+
rule %r/(')(\])/ do
|
|
118
|
+
groups Str::Single, Punctuation
|
|
119
|
+
pop!
|
|
120
|
+
end
|
|
121
|
+
mixin :escapes
|
|
122
|
+
rule %r/[^\\']/, Str::Single
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
state :abc_basic do
|
|
126
|
+
rule %r/\s+/, Text::Whitespace
|
|
127
|
+
rule %r/\|.*/, Comment::Single
|
|
128
|
+
mixin :common_literals
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# The ABC intermediate language can be included, similar to C's inline
|
|
132
|
+
# assembly. For some information about ABC, see:
|
|
133
|
+
# https://en.wikipedia.org/wiki/Clean_(programming_language)#The_ABC-Machine
|
|
134
|
+
state :abc do
|
|
135
|
+
mixin :abc_basic
|
|
136
|
+
|
|
137
|
+
rule %r/}/, Comment::Preproc, :pop!
|
|
138
|
+
rule %r/\.\w*/, Keyword, :abc_rest_of_line
|
|
139
|
+
rule %r/[\w_]+/, Name::Builtin, :abc_rest_of_line
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
state :abc_rest_of_line do
|
|
143
|
+
rule %r/\n/, Text::Whitespace, :pop!
|
|
144
|
+
rule %r/}/ do
|
|
145
|
+
token Comment::Preproc
|
|
146
|
+
pop!
|
|
147
|
+
pop!
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
mixin :abc_basic
|
|
151
|
+
|
|
152
|
+
rule %r/\S+/, Name
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Clojure < RegexLexer
|
|
7
|
+
title "Clojure"
|
|
8
|
+
desc "The Clojure programming language (clojure.org)"
|
|
9
|
+
|
|
10
|
+
tag 'clojure'
|
|
11
|
+
aliases 'clj', 'cljs'
|
|
12
|
+
|
|
13
|
+
filenames '*.clj', '*.cljs', '*.cljc', 'build.boot', '*.edn'
|
|
14
|
+
|
|
15
|
+
mimetypes 'text/x-clojure', 'application/x-clojure'
|
|
16
|
+
|
|
17
|
+
def self.keywords
|
|
18
|
+
@keywords ||= Set.new %w(
|
|
19
|
+
fn def defn defmacro defmethod defmulti defn- defstruct if
|
|
20
|
+
cond let for
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.builtins
|
|
25
|
+
@builtins ||= Set.new %w(
|
|
26
|
+
. .. * + - -> / < <= = == > >= accessor agent agent-errors
|
|
27
|
+
aget alength all-ns alter and append-child apply array-map
|
|
28
|
+
aset aset-boolean aset-byte aset-char aset-double aset-float
|
|
29
|
+
aset-int aset-long aset-short assert assoc await await-for bean
|
|
30
|
+
binding bit-and bit-not bit-or bit-shift-left bit-shift-right
|
|
31
|
+
bit-xor boolean branch? butlast byte cast char children
|
|
32
|
+
class clear-agent-errors comment commute comp comparator
|
|
33
|
+
complement concat conj cons constantly construct-proxy
|
|
34
|
+
contains? count create-ns create-struct cycle dec deref
|
|
35
|
+
difference disj dissoc distinct doall doc dorun doseq dosync
|
|
36
|
+
dotimes doto double down drop drop-while edit end? ensure eval
|
|
37
|
+
every? false? ffirst file-seq filter find find-doc find-ns
|
|
38
|
+
find-var first float flush fnseq frest gensym get-proxy-class
|
|
39
|
+
get hash-map hash-set identical? identity if-let import in-ns
|
|
40
|
+
inc index insert-child insert-left insert-right inspect-table
|
|
41
|
+
inspect-tree instance? int interleave intersection into
|
|
42
|
+
into-array iterate join key keys keyword keyword? last lazy-cat
|
|
43
|
+
lazy-cons left lefts line-seq list* list load load-file locking
|
|
44
|
+
long loop macroexpand macroexpand-1 make-array make-node map
|
|
45
|
+
map-invert map? mapcat max max-key memfn merge merge-with meta
|
|
46
|
+
min min-key name namespace neg? new newline next nil? node not
|
|
47
|
+
not-any? not-every? not= ns-imports ns-interns ns-map ns-name
|
|
48
|
+
ns-publics ns-refers ns-resolve ns-unmap nth nthrest or parse
|
|
49
|
+
partial path peek pop pos? pr pr-str print print-str println
|
|
50
|
+
println-str prn prn-str project proxy proxy-mappings quot
|
|
51
|
+
rand rand-int range re-find re-groups re-matcher re-matches
|
|
52
|
+
re-pattern re-seq read read-line reduce ref ref-set refer rem
|
|
53
|
+
remove remove-method remove-ns rename rename-keys repeat replace
|
|
54
|
+
replicate resolve rest resultset-seq reverse rfirst right
|
|
55
|
+
rights root rrest rseq second select select-keys send send-off
|
|
56
|
+
seq seq-zip seq? set short slurp some sort sort-by sorted-map
|
|
57
|
+
sorted-map-by sorted-set special-symbol? split-at split-with
|
|
58
|
+
str string? struct struct-map subs subvec symbol symbol?
|
|
59
|
+
sync take take-nth take-while test time to-array to-array-2d
|
|
60
|
+
tree-seq true? union up update-proxy val vals var-get var-set
|
|
61
|
+
var? vector vector-zip vector? when when-first when-let
|
|
62
|
+
when-not with-local-vars with-meta with-open with-out-str
|
|
63
|
+
xml-seq xml-zip zero? zipmap zipper'
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
identifier = %r([\w!$%*+,<=>?/.-]+)
|
|
68
|
+
keyword = %r([\w!\#$%*+,<=>?/.-]+)
|
|
69
|
+
|
|
70
|
+
def name_token(name)
|
|
71
|
+
return Keyword if self.class.keywords.include?(name)
|
|
72
|
+
return Name::Builtin if self.class.builtins.include?(name)
|
|
73
|
+
nil
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :root do
|
|
77
|
+
rule %r/;.*?$/, Comment::Single
|
|
78
|
+
rule %r/\s+/m, Text::Whitespace
|
|
79
|
+
|
|
80
|
+
rule %r/-?\d+\.\d+/, Num::Float
|
|
81
|
+
rule %r/-?\d+/, Num::Integer
|
|
82
|
+
rule %r/0x-?[0-9a-fA-F]+/, Num::Hex
|
|
83
|
+
|
|
84
|
+
rule %r/"(\\.|[^"])*"/, Str
|
|
85
|
+
rule %r/'#{keyword}/, Str::Symbol
|
|
86
|
+
rule %r/::?#{keyword}/, Name::Constant
|
|
87
|
+
rule %r/\\(.|[a-z]+)/i, Str::Char
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
rule %r/~@|[`\'#^~&@]/, Operator
|
|
91
|
+
|
|
92
|
+
rule %r/(\()(\s*)(#{identifier})/m do |m|
|
|
93
|
+
token Punctuation, m[1]
|
|
94
|
+
token Text::Whitespace, m[2]
|
|
95
|
+
token(name_token(m[3]) || Name::Function, m[3])
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
rule identifier do |m|
|
|
99
|
+
token name_token(m[0]) || Name
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# vectors
|
|
103
|
+
rule %r/[\[\]]/, Punctuation
|
|
104
|
+
|
|
105
|
+
# maps
|
|
106
|
+
rule %r/[{}]/, Punctuation
|
|
107
|
+
|
|
108
|
+
# parentheses
|
|
109
|
+
rule %r/[()]/, Punctuation
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|