rouge 3.17.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 +93 -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/cython +6 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -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-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/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/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/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/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 +516 -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 +73 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -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 +207 -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 +174 -0
- data/lib/rouge/lexers/coq.rb +191 -0
- data/lib/rouge/lexers/cpp.rb +82 -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/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +177 -0
- data/lib/rouge/lexers/dart.rb +105 -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 +119 -0
- data/lib/rouge/lexers/gdscript.rb +171 -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/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 +69 -0
- data/lib/rouge/lexers/json_doc.rb +25 -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 +127 -0
- data/lib/rouge/lexers/lasso.rb +215 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -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 +81 -0
- data/lib/rouge/lexers/matlab/builtins.yml +3515 -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 +216 -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 +248 -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 +545 -0
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +444 -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/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 +113 -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 +30 -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 +124 -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/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 +476 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Tap < RegexLexer
|
|
6
|
+
title 'TAP'
|
|
7
|
+
desc 'Test Anything Protocol'
|
|
8
|
+
tag 'tap'
|
|
9
|
+
aliases 'tap'
|
|
10
|
+
filenames '*.tap'
|
|
11
|
+
|
|
12
|
+
mimetypes 'text/x-tap', 'application/x-tap'
|
|
13
|
+
|
|
14
|
+
state :root do
|
|
15
|
+
# A TAP version may be specified.
|
|
16
|
+
rule %r/^TAP version \d+\n/, Name::Namespace
|
|
17
|
+
|
|
18
|
+
# Specify a plan with a plan line.
|
|
19
|
+
rule %r/^1\.\.\d+/, Keyword::Declaration, :plan
|
|
20
|
+
|
|
21
|
+
# A test failure
|
|
22
|
+
rule %r/^(not ok)([^\S\n]*)(\d*)/ do
|
|
23
|
+
groups Generic::Error, Text, Literal::Number::Integer
|
|
24
|
+
push :test
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# A test success
|
|
28
|
+
rule %r/^(ok)([^\S\n]*)(\d*)/ do
|
|
29
|
+
groups Keyword::Reserved, Text, Literal::Number::Integer
|
|
30
|
+
push :test
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Diagnostics start with a hash.
|
|
34
|
+
rule %r/^#.*\n/, Comment
|
|
35
|
+
|
|
36
|
+
# TAP's version of an abort statement.
|
|
37
|
+
rule %r/^Bail out!.*\n/, Generic::Error
|
|
38
|
+
|
|
39
|
+
# # TAP ignores any unrecognized lines.
|
|
40
|
+
rule %r/^.*\n/, Text
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
state :plan do
|
|
44
|
+
# Consume whitespace (but not newline).
|
|
45
|
+
rule %r/[^\S\n]+/, Text
|
|
46
|
+
|
|
47
|
+
# A plan may have a directive with it.
|
|
48
|
+
rule %r/#/, Comment, :directive
|
|
49
|
+
|
|
50
|
+
# Or it could just end.
|
|
51
|
+
rule %r/\n/, Comment, :pop!
|
|
52
|
+
|
|
53
|
+
# Anything else is wrong.
|
|
54
|
+
rule %r/.*\n/, Generic::Error, :pop!
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
state :test do
|
|
58
|
+
# Consume whitespace (but not newline).
|
|
59
|
+
rule %r/[^\S\n]+/, Text
|
|
60
|
+
|
|
61
|
+
# A test may have a directive with it.
|
|
62
|
+
rule %r/#/, Comment, :directive
|
|
63
|
+
|
|
64
|
+
rule %r/\S+/, Text
|
|
65
|
+
|
|
66
|
+
rule %r/\n/, Text, :pop!
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
state :directive do
|
|
70
|
+
# Consume whitespace (but not newline).
|
|
71
|
+
rule %r/[^\S\n]+/, Comment
|
|
72
|
+
|
|
73
|
+
# Extract todo items.
|
|
74
|
+
rule %r/(?i)\bTODO\b/, Comment::Preproc
|
|
75
|
+
|
|
76
|
+
# Extract skip items.
|
|
77
|
+
rule %r/(?i)\bSKIP\S*/, Comment::Preproc
|
|
78
|
+
|
|
79
|
+
rule %r/\S+/, Comment
|
|
80
|
+
|
|
81
|
+
rule %r/\n/ do
|
|
82
|
+
token Comment
|
|
83
|
+
pop! 2
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class TCL < RegexLexer
|
|
7
|
+
title "Tcl"
|
|
8
|
+
desc "The Tool Command Language (tcl.tk)"
|
|
9
|
+
tag 'tcl'
|
|
10
|
+
filenames '*.tcl'
|
|
11
|
+
mimetypes 'text/x-tcl', 'text/x-script.tcl', 'application/x-tcl'
|
|
12
|
+
|
|
13
|
+
def self.detect?(text)
|
|
14
|
+
return true if text.shebang? 'tclsh'
|
|
15
|
+
return true if text.shebang? 'wish'
|
|
16
|
+
return true if text.shebang? 'jimsh'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
KEYWORDS = %w(
|
|
20
|
+
after apply array break catch continue elseif else error
|
|
21
|
+
eval expr for foreach global if namespace proc rename return
|
|
22
|
+
set switch then trace unset update uplevel upvar variable
|
|
23
|
+
vwait while
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
BUILTINS = %w(
|
|
27
|
+
append bgerror binary cd chan clock close concat dde dict
|
|
28
|
+
encoding eof exec exit fblocked fconfigure fcopy file
|
|
29
|
+
fileevent flush format gets glob history http incr info interp
|
|
30
|
+
join lappend lassign lindex linsert list llength load loadTk
|
|
31
|
+
lrange lrepeat lreplace lreverse lsearch lset lsort mathfunc
|
|
32
|
+
mathop memory msgcat open package pid pkg::create pkg_mkIndex
|
|
33
|
+
platform platform::shell puts pwd re_syntax read refchan
|
|
34
|
+
regexp registry regsub scan seek socket source split string
|
|
35
|
+
subst tell time tm unknown unload
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
OPEN = %w| \( \[ \{ " |
|
|
39
|
+
CLOSE = %w| \) \] \} |
|
|
40
|
+
ALL = OPEN + CLOSE
|
|
41
|
+
END_LINE = CLOSE + %w(; \n)
|
|
42
|
+
END_WORD = END_LINE + %w(\r \t \v)
|
|
43
|
+
|
|
44
|
+
CHARS = lambda { |list| Regexp.new %/[#{list.join}]/ }
|
|
45
|
+
NOT_CHARS = lambda { |list| Regexp.new %/[^#{list.join}]/ }
|
|
46
|
+
|
|
47
|
+
state :word do
|
|
48
|
+
rule %r/\{\*\}/, Keyword
|
|
49
|
+
|
|
50
|
+
mixin :brace_abort
|
|
51
|
+
mixin :interp
|
|
52
|
+
rule %r/\{/, Punctuation, :brace
|
|
53
|
+
rule %r/\(/, Punctuation, :paren
|
|
54
|
+
rule %r/"/, Str::Double, :string
|
|
55
|
+
rule %r/#{NOT_CHARS[END_WORD]}+?(?=#{CHARS[OPEN+['\\\\']]})/, Text
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.gen_command_state(name='')
|
|
59
|
+
state(:"command#{name}") do
|
|
60
|
+
mixin :word
|
|
61
|
+
|
|
62
|
+
rule %r/##{NOT_CHARS[END_LINE]}+/, Comment::Single
|
|
63
|
+
|
|
64
|
+
rule %r/(?=#{CHARS[END_WORD]})/ do
|
|
65
|
+
push :"params#{name}"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
rule %r/#{NOT_CHARS[END_WORD]}+/ do |m|
|
|
69
|
+
if KEYWORDS.include? m[0]
|
|
70
|
+
token Keyword
|
|
71
|
+
elsif BUILTINS.include? m[0]
|
|
72
|
+
token Name::Builtin
|
|
73
|
+
else
|
|
74
|
+
token Text
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
mixin :whitespace
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def self.gen_delimiter_states(name, close, opts={})
|
|
83
|
+
gen_command_state("_in_#{name}")
|
|
84
|
+
|
|
85
|
+
state :"params_in_#{name}" do
|
|
86
|
+
rule close do
|
|
87
|
+
token Punctuation
|
|
88
|
+
pop! 2
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# mismatched delimiters. Braced strings with mismatched
|
|
92
|
+
# closing delimiters should be okay, since this is standard
|
|
93
|
+
# practice, like {]]]]}
|
|
94
|
+
if opts[:strict]
|
|
95
|
+
rule CHARS[CLOSE - [close]], Error
|
|
96
|
+
else
|
|
97
|
+
rule CHARS[CLOSE - [close]], Text
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
mixin :params
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
state name do
|
|
104
|
+
rule close, Punctuation, :pop!
|
|
105
|
+
mixin :"command_in_#{name}"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# tcl is freaking impossible. If we're in braces and we encounter
|
|
111
|
+
# a close brace, we have to drop everything and close the brace.
|
|
112
|
+
# This is so silly things like {abc"def} and {abc]def} don't b0rk
|
|
113
|
+
# everything after them.
|
|
114
|
+
|
|
115
|
+
# TODO: TCL seems to have this aborting behavior quite a lot.
|
|
116
|
+
# such things as [ abc" ] are a runtime error, but will still
|
|
117
|
+
# parse. Currently something like this will muck up the lex.
|
|
118
|
+
state :brace_abort do
|
|
119
|
+
rule %r/}/ do
|
|
120
|
+
if in_state? :brace
|
|
121
|
+
pop! until state? :brace
|
|
122
|
+
pop!
|
|
123
|
+
token Punctuation
|
|
124
|
+
else
|
|
125
|
+
token Error
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
state :params do
|
|
131
|
+
rule %r/;/, Punctuation, :pop!
|
|
132
|
+
rule %r/\n/, Text, :pop!
|
|
133
|
+
rule %r/else|elseif|then/, Keyword
|
|
134
|
+
mixin :word
|
|
135
|
+
mixin :whitespace
|
|
136
|
+
rule %r/#{NOT_CHARS[END_WORD]}+/, Text
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
gen_delimiter_states :brace, /\}/, :strict => false
|
|
140
|
+
gen_delimiter_states :paren, /\)/, :strict => true
|
|
141
|
+
gen_delimiter_states :bracket, /\]/, :strict => true
|
|
142
|
+
gen_command_state
|
|
143
|
+
|
|
144
|
+
state :root do
|
|
145
|
+
mixin :command
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
state :whitespace do
|
|
149
|
+
# not a multiline regex because we want to capture \n sometimes
|
|
150
|
+
rule %r/\s+/, Text
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
state :interp do
|
|
154
|
+
rule %r/\[/, Punctuation, :bracket
|
|
155
|
+
rule %r/\$[a-z0-9.:-]+/, Name::Variable
|
|
156
|
+
rule %r/\$\{.*?\}/m, Name::Variable
|
|
157
|
+
rule %r/\$/, Text
|
|
158
|
+
|
|
159
|
+
# escape sequences
|
|
160
|
+
rule %r/\\[0-7]{3}/, Str::Escape
|
|
161
|
+
rule %r/\\x[0-9a-f]{2}/i, Str::Escape
|
|
162
|
+
rule %r/\\u[0-9a-f]{4}/i, Str::Escape
|
|
163
|
+
rule %r/\\./m, Str::Escape
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
state :string do
|
|
167
|
+
rule %r/"/, Str::Double, :pop!
|
|
168
|
+
mixin :interp
|
|
169
|
+
rule %r/[^\\\[\$"{}]+/m, Str::Double
|
|
170
|
+
|
|
171
|
+
# strings have to keep count of their internal braces, to support
|
|
172
|
+
# for example { "{ }" }.
|
|
173
|
+
rule %r/{/ do
|
|
174
|
+
@brace_count ||= 0
|
|
175
|
+
@brace_count += 1
|
|
176
|
+
|
|
177
|
+
token Str::Double
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
rule %r/}/ do
|
|
181
|
+
if in_state? :brace and @brace_count.to_i == 0
|
|
182
|
+
pop! until state? :brace
|
|
183
|
+
pop!
|
|
184
|
+
token Punctuation
|
|
185
|
+
else
|
|
186
|
+
@brace_count -= 1
|
|
187
|
+
token Str::Double
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
load_lexer 'hcl.rb'
|
|
7
|
+
|
|
8
|
+
class Terraform < Hcl
|
|
9
|
+
title "Terraform"
|
|
10
|
+
desc "Terraform HCL Interpolations"
|
|
11
|
+
|
|
12
|
+
tag 'terraform'
|
|
13
|
+
aliases 'tf'
|
|
14
|
+
filenames '*.tf'
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= Set.new %w(
|
|
18
|
+
terraform module provider variable resource data provisioner output
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.declarations
|
|
23
|
+
@declarations ||= Set.new %w(
|
|
24
|
+
var local
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.reserved
|
|
29
|
+
@reserved ||= Set.new %w()
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.constants
|
|
33
|
+
@constants ||= Set.new %w(true false null)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.builtins
|
|
37
|
+
@builtins ||= %w()
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
prepend :hash do
|
|
41
|
+
rule %r/[.,()*]/, Punctuation
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
prepend :array do
|
|
45
|
+
rule %r/[.,()*]/, Punctuation
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
state :strings do
|
|
49
|
+
rule %r/\\./, Str::Escape
|
|
50
|
+
rule %r/\$\{/ do
|
|
51
|
+
token Keyword
|
|
52
|
+
push :interpolation
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
state :dq do
|
|
57
|
+
rule %r/[^\\"\$]+/, Str::Double
|
|
58
|
+
mixin :strings
|
|
59
|
+
rule %r/"/, Str::Double, :pop!
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
state :sq do
|
|
63
|
+
rule %r/[^\\'\$]+/, Str::Single
|
|
64
|
+
mixin :strings
|
|
65
|
+
rule %r/'/, Str::Single, :pop!
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
state :heredoc do
|
|
69
|
+
rule %r/\n/, Str::Heredoc, :heredoc_nl
|
|
70
|
+
rule %r/[^$\n]+/, Str::Heredoc
|
|
71
|
+
rule %r/[$]/, Str::Heredoc
|
|
72
|
+
mixin :strings
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
state :interpolation do
|
|
76
|
+
rule %r/\}/ do
|
|
77
|
+
token Keyword
|
|
78
|
+
pop!
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
mixin :expression
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
id = /[$a-z_\-][a-z0-9_\-]*/io
|
|
85
|
+
|
|
86
|
+
state :expression do
|
|
87
|
+
mixin :primitives
|
|
88
|
+
rule %r/\s+/, Text
|
|
89
|
+
|
|
90
|
+
rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | == | != )x, Operator
|
|
91
|
+
rule %r([-<>+*%&|\^/!=?:]=?), Operator
|
|
92
|
+
rule %r/[(\[,]/, Punctuation
|
|
93
|
+
rule %r/[)\].]/, Punctuation
|
|
94
|
+
|
|
95
|
+
rule id do |m|
|
|
96
|
+
if self.class.keywords.include? m[0]
|
|
97
|
+
token Keyword
|
|
98
|
+
elsif self.class.declarations.include? m[0]
|
|
99
|
+
token Keyword::Declaration
|
|
100
|
+
elsif self.class.reserved.include? m[0]
|
|
101
|
+
token Keyword::Reserved
|
|
102
|
+
elsif self.class.constants.include? m[0]
|
|
103
|
+
token Keyword::Constant
|
|
104
|
+
elsif self.class.builtins.include? m[0]
|
|
105
|
+
token Name::Builtin
|
|
106
|
+
else
|
|
107
|
+
token Name::Other
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class TeX < RegexLexer
|
|
7
|
+
title "TeX"
|
|
8
|
+
desc "The TeX typesetting system"
|
|
9
|
+
tag 'tex'
|
|
10
|
+
aliases 'TeX', 'LaTeX', 'latex'
|
|
11
|
+
|
|
12
|
+
filenames '*.tex', '*.aux', '*.toc', '*.sty', '*.cls'
|
|
13
|
+
mimetypes 'text/x-tex', 'text/x-latex'
|
|
14
|
+
|
|
15
|
+
def self.detect?(text)
|
|
16
|
+
return true if text =~ /\A\s*\\(documentclass|input|documentstyle|relax|ProvidesPackage|ProvidesClass)/
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
command = /\\([a-z]+|\s+|.)/i
|
|
20
|
+
|
|
21
|
+
state :general do
|
|
22
|
+
rule %r/%.*$/, Comment
|
|
23
|
+
rule %r/[{}&_^]/, Punctuation
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
state :root do
|
|
27
|
+
rule %r/\\\[/, Punctuation, :displaymath
|
|
28
|
+
rule %r/\\\(/, Punctuation, :inlinemath
|
|
29
|
+
rule %r/\$\$/, Punctuation, :displaymath
|
|
30
|
+
rule %r/\$/, Punctuation, :inlinemath
|
|
31
|
+
rule %r/\\(begin|end)\{.*?\}/, Name::Tag
|
|
32
|
+
|
|
33
|
+
rule %r/(\\verb)\b(\S)(.*?)(\2)/ do
|
|
34
|
+
groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
rule command, Keyword, :command
|
|
38
|
+
mixin :general
|
|
39
|
+
rule %r/[^\\$%&_^{}]+/, Text
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
state :math do
|
|
43
|
+
rule command, Name::Variable
|
|
44
|
+
mixin :general
|
|
45
|
+
rule %r/[0-9]+/, Num
|
|
46
|
+
rule %r/[-=!+*\/()\[\]]/, Operator
|
|
47
|
+
rule %r/[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
state :inlinemath do
|
|
51
|
+
rule %r/\\\)/, Punctuation, :pop!
|
|
52
|
+
rule %r/\$/, Punctuation, :pop!
|
|
53
|
+
mixin :math
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
state :displaymath do
|
|
57
|
+
rule %r/\\\]/, Punctuation, :pop!
|
|
58
|
+
rule %r/\$\$/, Punctuation, :pop!
|
|
59
|
+
rule %r/\$/, Name::Builtin
|
|
60
|
+
mixin :math
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
state :command do
|
|
64
|
+
rule %r/\[.*?\]/, Name::Attribute
|
|
65
|
+
rule %r/\*/, Keyword
|
|
66
|
+
rule(//) { pop! }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|