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
data/lib/rouge/demos/xml
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Dim f As FolderItem
|
|
2
|
+
f = GetOpenFolderItem(FileTypes1.jpeg) // defined in the File Type Set editor
|
|
3
|
+
rem - we should check for nil!
|
|
4
|
+
If not f.Exists Then
|
|
5
|
+
Beep 'Just for fun
|
|
6
|
+
MsgBox("The file " + f.NativePath + "doesn't ""exist.""")
|
|
7
|
+
Else // document exists
|
|
8
|
+
ImageWell1.image=Picture.Open(f)
|
|
9
|
+
End If
|
|
10
|
+
if f isa folderitem then
|
|
11
|
+
msgbox(f.name)
|
|
12
|
+
end if
|
|
13
|
+
Exception err As NilObjectException
|
|
14
|
+
MsgBox("Invalid pathname!")
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare namespace html = "http://www.w3.org/1999/xhtml";
|
|
2
|
+
|
|
3
|
+
declare function local:test-function($catalog as document-node()) {
|
|
4
|
+
<html>
|
|
5
|
+
<head>
|
|
6
|
+
<title>XQuery example for the Rouge highlighter</title>
|
|
7
|
+
<link href="style.css"/>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<h1>List</h1>
|
|
11
|
+
<ul>
|
|
12
|
+
{for $product in $catalog/items/product[@sell-by > current-date()] return
|
|
13
|
+
<li>
|
|
14
|
+
<ul>
|
|
15
|
+
<li>{data($product/name)}</li>
|
|
16
|
+
<li>{$product/price * (1 + $product/tax)}$</li>
|
|
17
|
+
</ul>
|
|
18
|
+
</li>}
|
|
19
|
+
</ul>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
|
22
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
# A Formatter takes a token stream and formats it for human viewing.
|
|
6
|
+
class Formatter
|
|
7
|
+
# @private
|
|
8
|
+
REGISTRY = {}
|
|
9
|
+
|
|
10
|
+
# Specify or get the unique tag for this formatter. This is used
|
|
11
|
+
# for specifying a formatter in `rougify`.
|
|
12
|
+
def self.tag(tag=nil)
|
|
13
|
+
return @tag unless tag
|
|
14
|
+
REGISTRY[tag] = self
|
|
15
|
+
|
|
16
|
+
@tag = tag
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Find a formatter class given a unique tag.
|
|
20
|
+
def self.find(tag)
|
|
21
|
+
REGISTRY[tag]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.with_escape
|
|
25
|
+
Thread.current[:'rouge/with-escape'] = true
|
|
26
|
+
yield
|
|
27
|
+
ensure
|
|
28
|
+
Thread.current[:'rouge/with-escape'] = false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.escape_enabled?
|
|
32
|
+
!!(((defined? @escape_enabled) && @escape_enabled) || Thread.current[:'rouge/with-escape'])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.enable_escape!
|
|
36
|
+
@escape_enabled = true
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.disable_escape!
|
|
40
|
+
@escape_enabled = false
|
|
41
|
+
Thread.current[:'rouge/with-escape'] = false
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Format a token stream. Delegates to {#format}.
|
|
45
|
+
def self.format(tokens, *a, &b)
|
|
46
|
+
new(*a).format(tokens, &b)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def initialize(opts={})
|
|
50
|
+
# pass
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def escape?(tok)
|
|
54
|
+
tok == Token::Tokens::Escape
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def filter_escapes(tokens)
|
|
58
|
+
tokens.each do |t, v|
|
|
59
|
+
if t == Token::Tokens::Escape
|
|
60
|
+
yield Token::Tokens::Error, v
|
|
61
|
+
else
|
|
62
|
+
yield t, v
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Format a token stream.
|
|
68
|
+
def format(tokens, &b)
|
|
69
|
+
tokens = enum_for(:filter_escapes, tokens) unless Formatter.escape_enabled?
|
|
70
|
+
|
|
71
|
+
return stream(tokens, &b) if block_given?
|
|
72
|
+
|
|
73
|
+
out = String.new('')
|
|
74
|
+
stream(tokens) { |piece| out << piece }
|
|
75
|
+
|
|
76
|
+
out
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# @deprecated Use {#format} instead.
|
|
80
|
+
def render(tokens)
|
|
81
|
+
warn 'Formatter#render is deprecated, use #format instead.'
|
|
82
|
+
format(tokens)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# @abstract
|
|
86
|
+
# yield strings that, when concatenated, form the formatted output
|
|
87
|
+
def stream(tokens, &b)
|
|
88
|
+
raise 'abstract'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
protected
|
|
92
|
+
def token_lines(tokens, &b)
|
|
93
|
+
return enum_for(:token_lines, tokens) unless block_given?
|
|
94
|
+
|
|
95
|
+
out = []
|
|
96
|
+
tokens.each do |tok, val|
|
|
97
|
+
val.scan %r/\n|[^\n]+/ do |s|
|
|
98
|
+
if s == "\n"
|
|
99
|
+
yield out
|
|
100
|
+
out = []
|
|
101
|
+
else
|
|
102
|
+
out << [tok, s]
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# for inputs not ending in a newline
|
|
108
|
+
yield out if out.any?
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
# Transforms a token stream into HTML output.
|
|
7
|
+
class HTML < Formatter
|
|
8
|
+
tag 'html'
|
|
9
|
+
|
|
10
|
+
# @yield the html output.
|
|
11
|
+
def stream(tokens, &b)
|
|
12
|
+
tokens.each { |tok, val| yield span(tok, val) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def span(tok, val)
|
|
16
|
+
return val if escape?(tok)
|
|
17
|
+
|
|
18
|
+
safe_span(tok, escape_special_html_chars(val))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def safe_span(tok, safe_val)
|
|
22
|
+
if tok == Token::Tokens::Text
|
|
23
|
+
safe_val
|
|
24
|
+
else
|
|
25
|
+
shortname = tok.shortname \
|
|
26
|
+
or raise "unknown token: #{tok.inspect} for #{safe_val.inspect}"
|
|
27
|
+
|
|
28
|
+
"<span class=\"#{shortname}\">#{safe_val}</span>"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
TABLE_FOR_ESCAPE_HTML = {
|
|
33
|
+
'&' => '&',
|
|
34
|
+
'<' => '<',
|
|
35
|
+
'>' => '>',
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
# A performance-oriented helper method to escape `&`, `<` and `>` for the rendered
|
|
40
|
+
# HTML from this formatter.
|
|
41
|
+
#
|
|
42
|
+
# `String#gsub` will always return a new string instance irrespective of whether
|
|
43
|
+
# a substitution occurs. This method however invokes `String#gsub` only if
|
|
44
|
+
# a substitution is imminent.
|
|
45
|
+
#
|
|
46
|
+
# Returns either the given `value` argument string as is or a new string with the
|
|
47
|
+
# special characters replaced with their escaped counterparts.
|
|
48
|
+
def escape_special_html_chars(value)
|
|
49
|
+
escape_regex = /[&<>]/
|
|
50
|
+
return value unless value =~ escape_regex
|
|
51
|
+
|
|
52
|
+
value.gsub(escape_regex, TABLE_FOR_ESCAPE_HTML)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
class HTMLInline < HTML
|
|
7
|
+
tag 'html_inline'
|
|
8
|
+
|
|
9
|
+
def initialize(theme)
|
|
10
|
+
if theme.is_a?(Class) && theme < Rouge::Theme
|
|
11
|
+
@theme = theme.new
|
|
12
|
+
elsif theme.is_a?(Rouge::Theme)
|
|
13
|
+
@theme = theme
|
|
14
|
+
elsif theme.is_a?(String)
|
|
15
|
+
@theme = Rouge::Theme.find(theme).new
|
|
16
|
+
else
|
|
17
|
+
raise ArgumentError, "invalid theme: #{theme.inspect}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def safe_span(tok, safe_val)
|
|
22
|
+
return safe_val if tok == Token::Tokens::Text
|
|
23
|
+
|
|
24
|
+
rules = @theme.style_for(tok).rendered_rules
|
|
25
|
+
|
|
26
|
+
"<span style=\"#{rules.to_a.join(';')}\">#{safe_val}</span>"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# stdlib
|
|
5
|
+
require 'cgi'
|
|
6
|
+
|
|
7
|
+
module Rouge
|
|
8
|
+
module Formatters
|
|
9
|
+
# Transforms a token stream into HTML output.
|
|
10
|
+
class HTMLLegacy < Formatter
|
|
11
|
+
tag 'html_legacy'
|
|
12
|
+
|
|
13
|
+
# @option opts [String] :css_class ('highlight')
|
|
14
|
+
# @option opts [true/false] :line_numbers (false)
|
|
15
|
+
# @option opts [Rouge::CSSTheme] :inline_theme (nil)
|
|
16
|
+
# @option opts [true/false] :wrap (true)
|
|
17
|
+
#
|
|
18
|
+
# Initialize with options.
|
|
19
|
+
#
|
|
20
|
+
# If `:inline_theme` is given, then instead of rendering the
|
|
21
|
+
# tokens as <span> tags with CSS classes, the styles according to
|
|
22
|
+
# the given theme will be inlined in "style" attributes. This is
|
|
23
|
+
# useful for formats in which stylesheets are not available.
|
|
24
|
+
#
|
|
25
|
+
# Content will be wrapped in a tag (`div` if tableized, `pre` if
|
|
26
|
+
# not) with the given `:css_class` unless `:wrap` is set to `false`.
|
|
27
|
+
def initialize(opts={})
|
|
28
|
+
@formatter = opts[:inline_theme] ? HTMLInline.new(opts[:inline_theme])
|
|
29
|
+
: HTML.new
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@formatter = HTMLTable.new(@formatter, opts) if opts[:line_numbers]
|
|
33
|
+
|
|
34
|
+
if opts.fetch(:wrap, true)
|
|
35
|
+
@formatter = HTMLPygments.new(@formatter, opts.fetch(:css_class, 'codehilite'))
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @yield the html output.
|
|
40
|
+
def stream(tokens, &b)
|
|
41
|
+
@formatter.stream(tokens, &b)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
class HTMLLineTable < Formatter
|
|
7
|
+
tag 'html_line_table'
|
|
8
|
+
|
|
9
|
+
# @param [Rouge::Formatters::Formatter] formatter An instance of a
|
|
10
|
+
# `Rouge::Formatters::HTML` or `Rouge::Formatters::HTMLInline`
|
|
11
|
+
# @param [Hash] opts options for HTMLLineTable instance.
|
|
12
|
+
# @option opts [Integer] :start_line line number to start from. Defaults to `1`.
|
|
13
|
+
# @option opts [String] :table_class Class name for the table.
|
|
14
|
+
# Defaults to `"rouge-line-table"`.
|
|
15
|
+
# @option opts [String] :line_id a `sprintf` template for generating an `id`
|
|
16
|
+
# attribute for each table row corresponding to current line number.
|
|
17
|
+
# Defaults to `"line-%i"`.
|
|
18
|
+
# @option opts [String] :line_class Class name for each table row.
|
|
19
|
+
# Defaults to `"lineno"`.
|
|
20
|
+
# @option opts [String] :gutter_class Class name for rendered line-number cell.
|
|
21
|
+
# Defaults to `"rouge-gutter"`.
|
|
22
|
+
# @option opts [String] :code_class Class name for rendered code cell.
|
|
23
|
+
# Defaults to `"rouge-code"`.
|
|
24
|
+
def initialize(formatter, opts={})
|
|
25
|
+
@formatter = formatter
|
|
26
|
+
@start_line = opts.fetch :start_line, 1
|
|
27
|
+
@table_class = opts.fetch :table_class, 'rouge-line-table'
|
|
28
|
+
@gutter_class = opts.fetch :gutter_class, 'rouge-gutter'
|
|
29
|
+
@code_class = opts.fetch :code_class, 'rouge-code'
|
|
30
|
+
@line_class = opts.fetch :line_class, 'lineno'
|
|
31
|
+
@line_id = opts.fetch :line_id, 'line-%i'
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def stream(tokens, &b)
|
|
35
|
+
lineno = @start_line - 1
|
|
36
|
+
buffer = [%(<table class="#@table_class"><tbody>)]
|
|
37
|
+
token_lines(tokens) do |line_tokens|
|
|
38
|
+
lineno += 1
|
|
39
|
+
buffer << %(<tr id="#{sprintf @line_id, lineno}" class="#@line_class">)
|
|
40
|
+
buffer << %(<td class="#@gutter_class gl" )
|
|
41
|
+
buffer << %(style="-moz-user-select: none;-ms-user-select: none;)
|
|
42
|
+
buffer << %(-webkit-user-select: none;user-select: none;">)
|
|
43
|
+
buffer << %(<pre>#{lineno}</pre></td>)
|
|
44
|
+
buffer << %(<td class="#@code_class"><pre>)
|
|
45
|
+
@formatter.stream(line_tokens) { |formatted| buffer << formatted }
|
|
46
|
+
buffer << "\n</pre></td></tr>"
|
|
47
|
+
end
|
|
48
|
+
buffer << %(</tbody></table>)
|
|
49
|
+
yield buffer.join
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
class HTMLLinewise < Formatter
|
|
7
|
+
def initialize(formatter, opts={})
|
|
8
|
+
@formatter = formatter
|
|
9
|
+
@tag_name = opts.fetch(:tag_name, 'div')
|
|
10
|
+
@class_format = opts.fetch(:class, 'line-%i')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def stream(tokens, &b)
|
|
14
|
+
lineno = 0
|
|
15
|
+
token_lines(tokens) do |line_tokens|
|
|
16
|
+
yield %(<#{@tag_name} class="#{sprintf @class_format, lineno += 1}">)
|
|
17
|
+
@formatter.stream(line_tokens) {|formatted| yield formatted }
|
|
18
|
+
yield %(\n</#{@tag_name}>)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Formatters
|
|
5
|
+
class HTMLPygments < Formatter
|
|
6
|
+
def initialize(inner, css_class='codehilite')
|
|
7
|
+
@inner = inner
|
|
8
|
+
@css_class = css_class
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def stream(tokens, &b)
|
|
12
|
+
yield %(<div class="highlight"><pre class="#{@css_class}"><code>)
|
|
13
|
+
@inner.stream(tokens, &b)
|
|
14
|
+
yield "</code></pre></div>"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
class HTMLTable < Formatter
|
|
7
|
+
tag 'html_table'
|
|
8
|
+
|
|
9
|
+
def initialize(inner, opts={})
|
|
10
|
+
@inner = inner
|
|
11
|
+
@start_line = opts.fetch(:start_line, 1)
|
|
12
|
+
@line_format = opts.fetch(:line_format, '%i')
|
|
13
|
+
@table_class = opts.fetch(:table_class, 'rouge-table')
|
|
14
|
+
@gutter_class = opts.fetch(:gutter_class, 'rouge-gutter')
|
|
15
|
+
@code_class = opts.fetch(:code_class, 'rouge-code')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def style(scope)
|
|
19
|
+
yield %(#{scope} .rouge-table { border-spacing: 0 })
|
|
20
|
+
yield %(#{scope} .rouge-gutter { text-align: right })
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def stream(tokens, &b)
|
|
24
|
+
last_val = nil
|
|
25
|
+
num_lines = tokens.reduce(0) {|count, (_, val)| count + (last_val = val).count(?\n) }
|
|
26
|
+
formatted = @inner.format(tokens)
|
|
27
|
+
unless last_val && last_val.end_with?(?\n)
|
|
28
|
+
num_lines += 1
|
|
29
|
+
formatted << ?\n
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# generate a string of newline-separated line numbers for the gutter>
|
|
33
|
+
formatted_line_numbers = (@start_line..(@start_line + num_lines - 1)).map do |i|
|
|
34
|
+
sprintf(@line_format, i)
|
|
35
|
+
end.join(?\n) << ?\n
|
|
36
|
+
|
|
37
|
+
buffer = [%(<table class="#@table_class"><tbody><tr>)]
|
|
38
|
+
# the "gl" class applies the style for Generic.Lineno
|
|
39
|
+
buffer << %(<td class="#@gutter_class gl">)
|
|
40
|
+
buffer << %(<pre class="lineno">#{formatted_line_numbers}</pre>)
|
|
41
|
+
buffer << '</td>'
|
|
42
|
+
buffer << %(<td class="#@code_class"><pre>)
|
|
43
|
+
buffer << formatted
|
|
44
|
+
buffer << '</pre></td>'
|
|
45
|
+
buffer << '</tr></tbody></table>'
|
|
46
|
+
|
|
47
|
+
yield buffer.join
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|