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,143 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class M68k < RegexLexer
|
|
7
|
+
tag 'm68k'
|
|
8
|
+
|
|
9
|
+
title "M68k"
|
|
10
|
+
desc "Motorola 68k Assembler"
|
|
11
|
+
|
|
12
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
13
|
+
|
|
14
|
+
def self.keywords
|
|
15
|
+
@keywords ||= Set.new %w(
|
|
16
|
+
abcd add adda addi addq addx and andi asl asr
|
|
17
|
+
|
|
18
|
+
bcc bcs beq bge bgt bhi ble bls blt bmi bne bpl bvc bvs bhs blo
|
|
19
|
+
bchg bclr bfchg bfclr bfests bfextu bfffo bfins bfset bftst bkpt bra bse bsr btst
|
|
20
|
+
|
|
21
|
+
callm cas cas2 chk chk2 clr cmp cmpa cmpi cmpm cmp2
|
|
22
|
+
|
|
23
|
+
dbcc dbcs dbeq dbge dbgt dbhi dble dbls dblt dbmi dbne dbpl dbvc dbvs dbhs dblo
|
|
24
|
+
dbra dbf dbt divs divsl divu divul
|
|
25
|
+
|
|
26
|
+
eor eori exg ext extb
|
|
27
|
+
|
|
28
|
+
illegal jmp jsr lea link lsl lsr
|
|
29
|
+
|
|
30
|
+
move movea move16 movem movep moveq muls mulu
|
|
31
|
+
|
|
32
|
+
nbcd neg negx nop not or ori
|
|
33
|
+
|
|
34
|
+
pack pea rol ror roxl roxr rtd rtm rtr rts
|
|
35
|
+
|
|
36
|
+
sbcd
|
|
37
|
+
|
|
38
|
+
seq sne spl smi svc svs st sf sge sgt sle slt scc shi sls scs shs slo
|
|
39
|
+
sub suba subi subq subx swap
|
|
40
|
+
|
|
41
|
+
tas trap trapcc TODO trapv tst
|
|
42
|
+
|
|
43
|
+
unlk unpk eori
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.keywords_type
|
|
48
|
+
@keywords_type ||= Set.new %w(
|
|
49
|
+
dc ds dcb
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def self.reserved
|
|
54
|
+
@reserved ||= Set.new %w(
|
|
55
|
+
include incdir incbin end endf endfunc endmain endproc fpu func machine main mmu opword proc set opt section
|
|
56
|
+
rept endr
|
|
57
|
+
ifeq ifne ifgt ifge iflt ifle iif ifd ifnd ifc ifnc elseif else endc
|
|
58
|
+
even cnop fail machine
|
|
59
|
+
output radix __G2 __LK
|
|
60
|
+
list nolist plen llen ttl subttl spc page listchar format
|
|
61
|
+
equ equenv equr set reg
|
|
62
|
+
rsreset rsset offset
|
|
63
|
+
cargs
|
|
64
|
+
fequ.s fequ.d fequ.x fequ.p fequ.w fequ.l fopt
|
|
65
|
+
macro endm mexit narg
|
|
66
|
+
)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def self.builtins
|
|
70
|
+
@builtins ||=Set.new %w(
|
|
71
|
+
d0 d1 d2 d3 d4 d5 d6 d7
|
|
72
|
+
a0 a1 a2 a3 a4 a5 a6 a7 a7'
|
|
73
|
+
pc usp ssp ccr
|
|
74
|
+
)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
start { push :expr_bol }
|
|
78
|
+
|
|
79
|
+
state :expr_bol do
|
|
80
|
+
mixin :inline_whitespace
|
|
81
|
+
rule(//) { pop! }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
state :inline_whitespace do
|
|
85
|
+
rule %r/\s+/, Text
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
state :whitespace do
|
|
89
|
+
rule %r/\n+/m, Text, :expr_bol
|
|
90
|
+
rule %r(^\*(\\.|.)*?$), Comment::Single, :expr_bol
|
|
91
|
+
rule %r(;(\\.|.)*?$), Comment::Single, :expr_bol
|
|
92
|
+
mixin :inline_whitespace
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
state :root do
|
|
96
|
+
rule(//) { push :statements }
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
state :statements do
|
|
100
|
+
mixin :whitespace
|
|
101
|
+
rule %r/"/, Str, :string
|
|
102
|
+
rule %r/#/, Name::Decorator
|
|
103
|
+
rule %r/^\.?[a-zA-Z0-9_]+:?/, Name::Label
|
|
104
|
+
rule %r/\.[bswl]\s/i, Name::Decorator
|
|
105
|
+
rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
|
106
|
+
rule %r/\$[0-9a-f]+/i, Num::Hex
|
|
107
|
+
rule %r/@[0-8]+/i, Num::Oct
|
|
108
|
+
rule %r/%[01]+/i, Num::Bin
|
|
109
|
+
rule %r/\d+/i, Num::Integer
|
|
110
|
+
rule %r([*~&+=\|?:<>/-]), Operator
|
|
111
|
+
rule %r/\\./, Comment::Preproc
|
|
112
|
+
rule %r/[(),.]/, Punctuation
|
|
113
|
+
rule %r/\[[a-zA-Z0-9]*\]/, Punctuation
|
|
114
|
+
|
|
115
|
+
rule id do |m|
|
|
116
|
+
name = m[0]
|
|
117
|
+
|
|
118
|
+
if self.class.keywords.include? name.downcase
|
|
119
|
+
token Keyword
|
|
120
|
+
elsif self.class.keywords_type.include? name.downcase
|
|
121
|
+
token Keyword::Type
|
|
122
|
+
elsif self.class.reserved.include? name.downcase
|
|
123
|
+
token Keyword::Reserved
|
|
124
|
+
elsif self.class.builtins.include? name.downcase
|
|
125
|
+
token Name::Builtin
|
|
126
|
+
elsif name =~ /[a-zA-Z0-9]+/
|
|
127
|
+
token Name::Variable
|
|
128
|
+
else
|
|
129
|
+
token Name
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
state :string do
|
|
135
|
+
rule %r/"/, Str, :pop!
|
|
136
|
+
rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
137
|
+
rule %r/[^\\"\n]+/, Str
|
|
138
|
+
rule %r/\\\n/, Str
|
|
139
|
+
rule %r/\\/, Str # stray backslash
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Magik < RegexLexer
|
|
7
|
+
title "Magik"
|
|
8
|
+
desc "Smallworld Magik"
|
|
9
|
+
tag 'magik'
|
|
10
|
+
filenames '*.magik'
|
|
11
|
+
mimetypes 'text/x-magik', 'application/x-magik'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= %w(
|
|
15
|
+
_package
|
|
16
|
+
_pragma
|
|
17
|
+
_block _endblock
|
|
18
|
+
_handling _default
|
|
19
|
+
_protect _protection _endprotect
|
|
20
|
+
_try _with _when _endtry
|
|
21
|
+
_catch _endcatch
|
|
22
|
+
_throw
|
|
23
|
+
_lock _endlock
|
|
24
|
+
_if _then _elif _else _endif
|
|
25
|
+
_for _over _while _loop _finally _endloop _loopbody _continue _leave
|
|
26
|
+
_return
|
|
27
|
+
_class
|
|
28
|
+
_local _constant _recursive _global _dynamic _import
|
|
29
|
+
_private _iter _abstract _method _endmethod
|
|
30
|
+
_proc _endproc
|
|
31
|
+
_gather _scatter _allresults _optional
|
|
32
|
+
_thisthread _self _clone _super
|
|
33
|
+
_primitive
|
|
34
|
+
_unset _true _false _maybe
|
|
35
|
+
_is _isnt _not _and _or _xor _cf _andif _orif
|
|
36
|
+
_div _mod
|
|
37
|
+
)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.string_double
|
|
41
|
+
@string_double ||= /"[^"\n]*?"/
|
|
42
|
+
end
|
|
43
|
+
def self.string_single
|
|
44
|
+
@string_single ||= /'[^'\n]*?'/
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.digits
|
|
48
|
+
@digits ||= /[0-9]+/
|
|
49
|
+
end
|
|
50
|
+
def self.radix
|
|
51
|
+
@radix ||= /r[0-9a-z]/i
|
|
52
|
+
end
|
|
53
|
+
def self.exponent
|
|
54
|
+
@exponent ||= /(e|&)[+-]?#{Magik.digits}/i
|
|
55
|
+
end
|
|
56
|
+
def self.decimal
|
|
57
|
+
@decimal ||= /\.#{Magik.digits}/
|
|
58
|
+
end
|
|
59
|
+
def self.number
|
|
60
|
+
@number = /#{Magik.digits}(#{Magik.radix}|#{Magik.exponent}|#{Magik.decimal})*/
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def self.character
|
|
64
|
+
@character ||= /%u[0-9a-z]{4}|%[^\s]+/i
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def self.simple_identifier
|
|
68
|
+
@simple_identifier ||= /(?>(?:[a-z0-9_!?]|\\.)+)/i
|
|
69
|
+
end
|
|
70
|
+
def self.piped_identifier
|
|
71
|
+
@piped_identifier ||= /\|[^\|\n]*\|/
|
|
72
|
+
end
|
|
73
|
+
def self.identifier
|
|
74
|
+
@identifier ||= /(?:#{Magik.simple_identifier}|#{Magik.piped_identifier})+/i
|
|
75
|
+
end
|
|
76
|
+
def self.package_identifier
|
|
77
|
+
@package_identifier ||= /#{Magik.identifier}:#{Magik.identifier}/
|
|
78
|
+
end
|
|
79
|
+
def self.symbol
|
|
80
|
+
@symbol ||= /:#{Magik.identifier}/i
|
|
81
|
+
end
|
|
82
|
+
def self.global_ref
|
|
83
|
+
@global_ref ||= /@[\s]*#{Magik.identifier}:#{Magik.identifier}/
|
|
84
|
+
end
|
|
85
|
+
def self.label
|
|
86
|
+
@label = /@[\s]*#{Magik.identifier}/
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
state :root do
|
|
90
|
+
rule %r/##(.*)?/, Comment::Doc
|
|
91
|
+
rule %r/#(.*)?/, Comment::Single
|
|
92
|
+
|
|
93
|
+
rule %r/(_method)(\s+)/ do
|
|
94
|
+
groups Keyword, Text::Whitespace
|
|
95
|
+
push :method_name
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
rule %r/(?:#{Magik.keywords.join('|')})\b/, Keyword
|
|
99
|
+
|
|
100
|
+
rule Magik.string_double, Literal::String
|
|
101
|
+
rule Magik.string_single, Literal::String
|
|
102
|
+
rule Magik.symbol, Str::Symbol
|
|
103
|
+
rule Magik.global_ref, Name::Label
|
|
104
|
+
rule Magik.label, Name::Label
|
|
105
|
+
rule Magik.character, Literal::String::Char
|
|
106
|
+
rule Magik.number, Literal::Number
|
|
107
|
+
rule Magik.package_identifier, Name
|
|
108
|
+
rule Magik.identifier, Name
|
|
109
|
+
|
|
110
|
+
rule %r/[\[\]{}()\.,;]/, Punctuation
|
|
111
|
+
rule %r/\$/, Punctuation
|
|
112
|
+
rule %r/(<<|^<<)/, Operator
|
|
113
|
+
rule %r/(>>)/, Operator
|
|
114
|
+
rule %r/[-~+\/*%=&^<>]|!=/, Operator
|
|
115
|
+
|
|
116
|
+
rule %r/[\s]+/, Text::Whitespace
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
state :method_name do
|
|
120
|
+
rule %r/(#{Magik.identifier})(\.)(#{Magik.identifier})/ do
|
|
121
|
+
groups Name::Class, Punctuation, Name::Function
|
|
122
|
+
pop!
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Make < RegexLexer
|
|
7
|
+
title "Make"
|
|
8
|
+
desc "Makefile syntax"
|
|
9
|
+
tag 'make'
|
|
10
|
+
aliases 'makefile', 'mf', 'gnumake', 'bsdmake'
|
|
11
|
+
filenames '*.make', '*.mak', '*.mk', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile', '*,fe1'
|
|
12
|
+
mimetypes 'text/x-makefile'
|
|
13
|
+
|
|
14
|
+
def self.functions
|
|
15
|
+
@functions ||= %w(
|
|
16
|
+
abspath addprefix addsuffix and basename call dir error eval file
|
|
17
|
+
filter filter-out findstring firstword flavor foreach if join lastword
|
|
18
|
+
notdir or origin patsubst realpath shell sort strip subst suffix value
|
|
19
|
+
warning wildcard word wordlist words
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# TODO: Add support for special keywords
|
|
24
|
+
# bsd_special = %w(
|
|
25
|
+
# include undef error warning if else elif endif for endfor
|
|
26
|
+
# )
|
|
27
|
+
|
|
28
|
+
def initialize(opts={})
|
|
29
|
+
super
|
|
30
|
+
@shell = Shell.new(opts)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
start { @shell.reset! }
|
|
34
|
+
|
|
35
|
+
state :root do
|
|
36
|
+
rule %r/\s+/, Text
|
|
37
|
+
|
|
38
|
+
rule %r/#.*?\n/, Comment
|
|
39
|
+
|
|
40
|
+
rule %r/([-s]?include)((?:[\t ]+[^\t\n #]+)+)/ do
|
|
41
|
+
groups Keyword, Literal::String::Other
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
rule %r/(ifn?def|ifn?eq)([\t ]+)([^#\n]+)/ do
|
|
45
|
+
groups Keyword, Text, Name::Variable
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
rule %r/(?:else|endif)[\t ]*(?=[#\n])/, Keyword
|
|
49
|
+
|
|
50
|
+
rule %r/(export)([\t ]+)(?=[\w\${}()\t -]+\n)/ do
|
|
51
|
+
groups Keyword, Text
|
|
52
|
+
push :export
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
rule %r/export[\t ]+/, Keyword
|
|
56
|
+
|
|
57
|
+
# assignment
|
|
58
|
+
rule %r/([\w${}().-]+)([\t ]*)([!?:+]?=)/m do |m|
|
|
59
|
+
token Name::Variable, m[1]
|
|
60
|
+
token Text, m[2]
|
|
61
|
+
token Operator, m[3]
|
|
62
|
+
push :shell_line
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
rule %r/"(\\\\|\\.|[^"\\])*"/, Str::Double
|
|
66
|
+
rule %r/'(\\\\|\\.|[^'\\])*'/, Str::Single
|
|
67
|
+
rule %r/([^\n:]+)(:+)([ \t]*)/ do
|
|
68
|
+
groups Name::Label, Operator, Text
|
|
69
|
+
push :block_header
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
state :export do
|
|
74
|
+
rule %r/[\w\${}()-]/, Name::Variable
|
|
75
|
+
rule %r/\n/, Text, :pop!
|
|
76
|
+
rule %r/[\t ]+/, Text
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
state :block_header do
|
|
80
|
+
rule %r/[^,\\\n#]+/, Name::Function
|
|
81
|
+
rule %r/,/, Punctuation
|
|
82
|
+
rule %r/#.*?/, Comment
|
|
83
|
+
rule %r/\\\n/, Text
|
|
84
|
+
rule %r/\\./, Text
|
|
85
|
+
rule %r/\n/ do
|
|
86
|
+
token Text
|
|
87
|
+
goto :block_body
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
state :block_body do
|
|
92
|
+
rule %r/(ifn?def|ifn?eq)([\t ]+)([^#\n]+)(#.*)?(\n)/ do
|
|
93
|
+
groups Keyword, Text, Name::Variable, Comment, Text
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
rule %r/(else|endif)([\t ]*)(#.*)?(\n)/ do
|
|
97
|
+
groups Keyword, Text, Comment, Text
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
rule %r/(\t[\t ]*)([@-]?)/ do
|
|
101
|
+
groups Text, Punctuation
|
|
102
|
+
push :shell_line
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
rule(//) { @shell.reset!; pop! }
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
state :shell do
|
|
109
|
+
# macro interpolation
|
|
110
|
+
rule %r/\$[({][\t ]*\w[\w:=%.]*[\t ]*[)}]/i, Name::Variable
|
|
111
|
+
# function invocation
|
|
112
|
+
rule %r/(\$[({])([\t ]*)(#{Make.functions.join('|')})([\t ]+)/m do
|
|
113
|
+
groups Name::Function, Text, Name::Builtin, Text
|
|
114
|
+
push :shell_expr
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
rule(/\\./m) { delegate @shell }
|
|
118
|
+
stop = /\$\(|\$\{|\(|\)|\}|\\|$/
|
|
119
|
+
rule(/.+?(?=#{stop})/m) { delegate @shell }
|
|
120
|
+
rule(stop) { delegate @shell }
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
state :shell_expr do
|
|
124
|
+
rule(/[({]/) { delegate @shell; push }
|
|
125
|
+
rule %r/[)}]/, Name::Function, :pop!
|
|
126
|
+
mixin :shell
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
state :shell_line do
|
|
130
|
+
rule %r/\n/, Text, :pop!
|
|
131
|
+
mixin :shell
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Markdown < RegexLexer
|
|
7
|
+
title "Markdown"
|
|
8
|
+
desc "Markdown, a light-weight markup language for authors"
|
|
9
|
+
|
|
10
|
+
tag 'markdown'
|
|
11
|
+
aliases 'md', 'mkd'
|
|
12
|
+
filenames '*.markdown', '*.md', '*.mkd'
|
|
13
|
+
mimetypes 'text/x-markdown'
|
|
14
|
+
|
|
15
|
+
def html
|
|
16
|
+
@html ||= HTML.new(options)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
start { html.reset! }
|
|
20
|
+
|
|
21
|
+
edot = /\\.|[^\\\n]/
|
|
22
|
+
|
|
23
|
+
state :root do
|
|
24
|
+
# YAML frontmatter
|
|
25
|
+
rule(/\A(---\s*\n.*?\n?)^(---\s*$\n?)/m) { delegate YAML }
|
|
26
|
+
|
|
27
|
+
rule %r/\\./, Str::Escape
|
|
28
|
+
|
|
29
|
+
rule %r/^[\S ]+\n(?:---*)\n/, Generic::Heading
|
|
30
|
+
rule %r/^[\S ]+\n(?:===*)\n/, Generic::Subheading
|
|
31
|
+
|
|
32
|
+
rule %r/^#(?=[^#]).*?$/, Generic::Heading
|
|
33
|
+
rule %r/^##*.*?$/, Generic::Subheading
|
|
34
|
+
|
|
35
|
+
rule %r/^([ \t]*)(`{3,}|~{3,})([^\n]*\n)((.*?)(\n\1)(\2))?/m do |m|
|
|
36
|
+
name = m[3].strip
|
|
37
|
+
sublexer =
|
|
38
|
+
begin
|
|
39
|
+
Lexer.find_fancy(name.empty? ? "guess" : name, m[5], @options)
|
|
40
|
+
rescue Guesser::Ambiguous => e
|
|
41
|
+
e.alternatives.first.new(@options)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick))
|
|
45
|
+
sublexer.reset!
|
|
46
|
+
|
|
47
|
+
token Text, m[1]
|
|
48
|
+
token Punctuation, m[2]
|
|
49
|
+
token Name::Label, m[3]
|
|
50
|
+
if m[5]
|
|
51
|
+
delegate sublexer, m[5]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
token Text, m[6]
|
|
55
|
+
|
|
56
|
+
if m[7]
|
|
57
|
+
token Punctuation, m[7]
|
|
58
|
+
else
|
|
59
|
+
push do
|
|
60
|
+
rule %r/^([ \t]*)(#{m[2]})/ do |mb|
|
|
61
|
+
pop!
|
|
62
|
+
token Text, mb[1]
|
|
63
|
+
token Punctuation, mb[2]
|
|
64
|
+
end
|
|
65
|
+
rule %r/^.*\n/ do |mb|
|
|
66
|
+
delegate sublexer, mb[1]
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
rule %r/\n\n(( |\t).*?\n|\n)+/, Str::Backtick
|
|
73
|
+
|
|
74
|
+
rule %r/(`+)(?:#{edot}|\n)+?\1/, Str::Backtick
|
|
75
|
+
|
|
76
|
+
# various uses of * are in order of precedence
|
|
77
|
+
|
|
78
|
+
# line breaks
|
|
79
|
+
rule %r/^(\s*[*]){3,}\s*$/, Punctuation
|
|
80
|
+
rule %r/^(\s*[-]){3,}\s*$/, Punctuation
|
|
81
|
+
|
|
82
|
+
# bulleted lists
|
|
83
|
+
rule %r/^\s*[*+-](?=\s)/, Punctuation
|
|
84
|
+
|
|
85
|
+
# numbered lists
|
|
86
|
+
rule %r/^\s*\d+\./, Punctuation
|
|
87
|
+
|
|
88
|
+
# blockquotes
|
|
89
|
+
rule %r/^\s*>.*?$/, Generic::Traceback
|
|
90
|
+
|
|
91
|
+
# link references
|
|
92
|
+
# [foo]: bar "baz"
|
|
93
|
+
rule %r(^
|
|
94
|
+
(\s*) # leading whitespace
|
|
95
|
+
(\[) (#{edot}+?) (\]) # the reference
|
|
96
|
+
(\s*) (:) # colon
|
|
97
|
+
)x do
|
|
98
|
+
groups Text, Punctuation, Str::Symbol, Punctuation, Text, Punctuation
|
|
99
|
+
|
|
100
|
+
push :title
|
|
101
|
+
push :url
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# links and images
|
|
105
|
+
rule %r/(!?\[)(#{edot}*?|[^\]]*?)(\])(?=[\[(])/ do
|
|
106
|
+
groups Punctuation, Name::Variable, Punctuation
|
|
107
|
+
push :link
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
rule %r/[*][*]#{edot}*?[*][*]/, Generic::Strong
|
|
111
|
+
rule %r/__#{edot}*?__/, Generic::Strong
|
|
112
|
+
|
|
113
|
+
rule %r/[*]#{edot}*?[*]/, Generic::Emph
|
|
114
|
+
rule %r/_#{edot}*?_/, Generic::Emph
|
|
115
|
+
|
|
116
|
+
# Automatic links
|
|
117
|
+
rule %r/<.*?@.+[.].+>/, Name::Variable
|
|
118
|
+
rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable
|
|
119
|
+
|
|
120
|
+
rule %r/[^\\`\[*\n&<]+/, Text
|
|
121
|
+
|
|
122
|
+
# inline html
|
|
123
|
+
rule(/&\S*;/) { delegate html }
|
|
124
|
+
rule(/<#{edot}*?>/) { delegate html }
|
|
125
|
+
rule %r/[&<]/, Text
|
|
126
|
+
|
|
127
|
+
# An opening square bracket that is not a link
|
|
128
|
+
rule %r/\[/, Text
|
|
129
|
+
|
|
130
|
+
rule %r/\n/, Text
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
state :link do
|
|
134
|
+
rule %r/(\[)(#{edot}*?)(\])/ do
|
|
135
|
+
groups Punctuation, Str::Symbol, Punctuation
|
|
136
|
+
pop!
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
rule %r/[(]/ do
|
|
140
|
+
token Punctuation
|
|
141
|
+
push :inline_title
|
|
142
|
+
push :inline_url
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
rule %r/[ \t]+/, Text
|
|
146
|
+
|
|
147
|
+
rule(//) { pop! }
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
state :url do
|
|
151
|
+
rule %r/[ \t]+/, Text
|
|
152
|
+
|
|
153
|
+
# the url
|
|
154
|
+
rule %r/(<)(#{edot}*?)(>)/ do
|
|
155
|
+
groups Name::Tag, Str::Other, Name::Tag
|
|
156
|
+
pop!
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
rule %r/\S+/, Str::Other, :pop!
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
state :title do
|
|
163
|
+
rule %r/"#{edot}*?"/, Name::Namespace
|
|
164
|
+
rule %r/'#{edot}*?'/, Name::Namespace
|
|
165
|
+
rule %r/[(]#{edot}*?[)]/, Name::Namespace
|
|
166
|
+
rule %r/\s*(?=["'()])/, Text
|
|
167
|
+
rule(//) { pop! }
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
state :inline_title do
|
|
171
|
+
rule %r/[)]/, Punctuation, :pop!
|
|
172
|
+
mixin :title
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
state :inline_url do
|
|
176
|
+
rule %r/[^<\s)]+/, Str::Other, :pop!
|
|
177
|
+
rule %r/\s+/m, Text
|
|
178
|
+
mixin :url
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
end
|
|
182
|
+
end
|