nano-max-hub 0.0.1
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/nano-max-hub.gemspec +12 -0
- data/rouge-5.0.0/Gemfile +48 -0
- data/rouge-5.0.0/LICENSE +187 -0
- data/rouge-5.0.0/bin/rougify +17 -0
- data/rouge-5.0.0/lib/rouge/cli.rb +527 -0
- data/rouge-5.0.0/lib/rouge/demos/abap +32 -0
- data/rouge-5.0.0/lib/rouge/demos/actionscript +4 -0
- data/rouge-5.0.0/lib/rouge/demos/ada +26 -0
- data/rouge-5.0.0/lib/rouge/demos/apache +21 -0
- data/rouge-5.0.0/lib/rouge/demos/apex +9 -0
- data/rouge-5.0.0/lib/rouge/demos/apiblueprint +33 -0
- data/rouge-5.0.0/lib/rouge/demos/applescript +2 -0
- data/rouge-5.0.0/lib/rouge/demos/armasm +12 -0
- data/rouge-5.0.0/lib/rouge/demos/augeas +16 -0
- data/rouge-5.0.0/lib/rouge/demos/awk +4 -0
- data/rouge-5.0.0/lib/rouge/demos/batchfile +3 -0
- data/rouge-5.0.0/lib/rouge/demos/bbcbasic +6 -0
- data/rouge-5.0.0/lib/rouge/demos/bibtex +12 -0
- data/rouge-5.0.0/lib/rouge/demos/bicep +10 -0
- data/rouge-5.0.0/lib/rouge/demos/biml +38 -0
- data/rouge-5.0.0/lib/rouge/demos/bpf +7 -0
- data/rouge-5.0.0/lib/rouge/demos/brainfuck +5 -0
- data/rouge-5.0.0/lib/rouge/demos/brightscript +6 -0
- data/rouge-5.0.0/lib/rouge/demos/bsl +7 -0
- data/rouge-5.0.0/lib/rouge/demos/c +8 -0
- data/rouge-5.0.0/lib/rouge/demos/ceylon +7 -0
- data/rouge-5.0.0/lib/rouge/demos/cfscript +18 -0
- data/rouge-5.0.0/lib/rouge/demos/cisco_ios +19 -0
- data/rouge-5.0.0/lib/rouge/demos/clean +6 -0
- data/rouge-5.0.0/lib/rouge/demos/clojure +5 -0
- data/rouge-5.0.0/lib/rouge/demos/cmake +7 -0
- data/rouge-5.0.0/lib/rouge/demos/cmhg +8 -0
- data/rouge-5.0.0/lib/rouge/demos/cobol +103 -0
- data/rouge-5.0.0/lib/rouge/demos/codeowners +6 -0
- data/rouge-5.0.0/lib/rouge/demos/coffeescript +5 -0
- data/rouge-5.0.0/lib/rouge/demos/common_lisp +1 -0
- data/rouge-5.0.0/lib/rouge/demos/conf +4 -0
- data/rouge-5.0.0/lib/rouge/demos/console +6 -0
- data/rouge-5.0.0/lib/rouge/demos/cpp +8 -0
- data/rouge-5.0.0/lib/rouge/demos/crystal +45 -0
- data/rouge-5.0.0/lib/rouge/demos/csharp +5 -0
- data/rouge-5.0.0/lib/rouge/demos/css +4 -0
- data/rouge-5.0.0/lib/rouge/demos/csvs +8 -0
- data/rouge-5.0.0/lib/rouge/demos/cuda +11 -0
- data/rouge-5.0.0/lib/rouge/demos/cypher +5 -0
- data/rouge-5.0.0/lib/rouge/demos/cython +6 -0
- data/rouge-5.0.0/lib/rouge/demos/d +16 -0
- data/rouge-5.0.0/lib/rouge/demos/dafny +16 -0
- data/rouge-5.0.0/lib/rouge/demos/dart +6 -0
- data/rouge-5.0.0/lib/rouge/demos/datastudio +20 -0
- data/rouge-5.0.0/lib/rouge/demos/diff +7 -0
- data/rouge-5.0.0/lib/rouge/demos/digdag +19 -0
- data/rouge-5.0.0/lib/rouge/demos/docker +9 -0
- data/rouge-5.0.0/lib/rouge/demos/dot +5 -0
- data/rouge-5.0.0/lib/rouge/demos/dylan +8 -0
- data/rouge-5.0.0/lib/rouge/demos/ecl +17 -0
- data/rouge-5.0.0/lib/rouge/demos/eex +1 -0
- data/rouge-5.0.0/lib/rouge/demos/eiffel +30 -0
- data/rouge-5.0.0/lib/rouge/demos/elixir +1 -0
- data/rouge-5.0.0/lib/rouge/demos/elm +4 -0
- data/rouge-5.0.0/lib/rouge/demos/email +11 -0
- data/rouge-5.0.0/lib/rouge/demos/epp +4 -0
- data/rouge-5.0.0/lib/rouge/demos/erb +1 -0
- data/rouge-5.0.0/lib/rouge/demos/erlang +7 -0
- data/rouge-5.0.0/lib/rouge/demos/escape +3 -0
- data/rouge-5.0.0/lib/rouge/demos/factor +5 -0
- data/rouge-5.0.0/lib/rouge/demos/fluent +13 -0
- data/rouge-5.0.0/lib/rouge/demos/fortran +22 -0
- data/rouge-5.0.0/lib/rouge/demos/freefem +16 -0
- data/rouge-5.0.0/lib/rouge/demos/fsharp +12 -0
- data/rouge-5.0.0/lib/rouge/demos/gdscript +18 -0
- data/rouge-5.0.0/lib/rouge/demos/ghc-cmm +23 -0
- data/rouge-5.0.0/lib/rouge/demos/ghc-core +26 -0
- data/rouge-5.0.0/lib/rouge/demos/gherkin +17 -0
- data/rouge-5.0.0/lib/rouge/demos/gjs +23 -0
- data/rouge-5.0.0/lib/rouge/demos/glsl +14 -0
- data/rouge-5.0.0/lib/rouge/demos/go +7 -0
- data/rouge-5.0.0/lib/rouge/demos/gradle +10 -0
- data/rouge-5.0.0/lib/rouge/demos/graphql +17 -0
- data/rouge-5.0.0/lib/rouge/demos/groovy +9 -0
- data/rouge-5.0.0/lib/rouge/demos/gts +36 -0
- data/rouge-5.0.0/lib/rouge/demos/hack +5 -0
- data/rouge-5.0.0/lib/rouge/demos/haml +5 -0
- data/rouge-5.0.0/lib/rouge/demos/handlebars +7 -0
- data/rouge-5.0.0/lib/rouge/demos/haskell +6 -0
- data/rouge-5.0.0/lib/rouge/demos/haxe +4 -0
- data/rouge-5.0.0/lib/rouge/demos/hcl +7 -0
- data/rouge-5.0.0/lib/rouge/demos/hlsl +20 -0
- data/rouge-5.0.0/lib/rouge/demos/hocon +8 -0
- data/rouge-5.0.0/lib/rouge/demos/hql +5 -0
- data/rouge-5.0.0/lib/rouge/demos/html +8 -0
- data/rouge-5.0.0/lib/rouge/demos/http +14 -0
- data/rouge-5.0.0/lib/rouge/demos/hylang +10 -0
- data/rouge-5.0.0/lib/rouge/demos/idlang +8 -0
- data/rouge-5.0.0/lib/rouge/demos/idris +13 -0
- data/rouge-5.0.0/lib/rouge/demos/iecst +21 -0
- data/rouge-5.0.0/lib/rouge/demos/igorpro +9 -0
- data/rouge-5.0.0/lib/rouge/demos/ini +4 -0
- data/rouge-5.0.0/lib/rouge/demos/io +11 -0
- data/rouge-5.0.0/lib/rouge/demos/irb +4 -0
- data/rouge-5.0.0/lib/rouge/demos/irb_output +2 -0
- data/rouge-5.0.0/lib/rouge/demos/isabelle +16 -0
- data/rouge-5.0.0/lib/rouge/demos/isbl +4 -0
- data/rouge-5.0.0/lib/rouge/demos/j +12 -0
- data/rouge-5.0.0/lib/rouge/demos/janet +3 -0
- data/rouge-5.0.0/lib/rouge/demos/java +5 -0
- data/rouge-5.0.0/lib/rouge/demos/javascript +1 -0
- data/rouge-5.0.0/lib/rouge/demos/jinja +9 -0
- data/rouge-5.0.0/lib/rouge/demos/jsl +3 -0
- data/rouge-5.0.0/lib/rouge/demos/json +1 -0
- data/rouge-5.0.0/lib/rouge/demos/json-doc +1 -0
- data/rouge-5.0.0/lib/rouge/demos/json5 +12 -0
- data/rouge-5.0.0/lib/rouge/demos/jsonnet +28 -0
- data/rouge-5.0.0/lib/rouge/demos/jsp +29 -0
- data/rouge-5.0.0/lib/rouge/demos/jsx +17 -0
- data/rouge-5.0.0/lib/rouge/demos/julia +11 -0
- data/rouge-5.0.0/lib/rouge/demos/kick_assembler +14 -0
- data/rouge-5.0.0/lib/rouge/demos/kotlin +3 -0
- data/rouge-5.0.0/lib/rouge/demos/lasso +12 -0
- data/rouge-5.0.0/lib/rouge/demos/lean +8 -0
- data/rouge-5.0.0/lib/rouge/demos/liquid +10 -0
- data/rouge-5.0.0/lib/rouge/demos/literate_coffeescript +3 -0
- data/rouge-5.0.0/lib/rouge/demos/literate_haskell +7 -0
- data/rouge-5.0.0/lib/rouge/demos/livescript +15 -0
- data/rouge-5.0.0/lib/rouge/demos/llvm +20 -0
- data/rouge-5.0.0/lib/rouge/demos/lua +12 -0
- data/rouge-5.0.0/lib/rouge/demos/lustre +6 -0
- data/rouge-5.0.0/lib/rouge/demos/lutin +18 -0
- data/rouge-5.0.0/lib/rouge/demos/m68k +16 -0
- data/rouge-5.0.0/lib/rouge/demos/magik +6 -0
- data/rouge-5.0.0/lib/rouge/demos/make +6 -0
- data/rouge-5.0.0/lib/rouge/demos/markdown +4 -0
- data/rouge-5.0.0/lib/rouge/demos/mason +22 -0
- data/rouge-5.0.0/lib/rouge/demos/mathematica +8 -0
- data/rouge-5.0.0/lib/rouge/demos/matlab +6 -0
- data/rouge-5.0.0/lib/rouge/demos/meson +10 -0
- data/rouge-5.0.0/lib/rouge/demos/minizinc +23 -0
- data/rouge-5.0.0/lib/rouge/demos/mojo +10 -0
- data/rouge-5.0.0/lib/rouge/demos/moonscript +16 -0
- data/rouge-5.0.0/lib/rouge/demos/mosel +10 -0
- data/rouge-5.0.0/lib/rouge/demos/msgtrans +4 -0
- data/rouge-5.0.0/lib/rouge/demos/mxml +22 -0
- data/rouge-5.0.0/lib/rouge/demos/nasm +26 -0
- data/rouge-5.0.0/lib/rouge/demos/nesasm +11 -0
- data/rouge-5.0.0/lib/rouge/demos/nginx +5 -0
- data/rouge-5.0.0/lib/rouge/demos/nial +35 -0
- data/rouge-5.0.0/lib/rouge/demos/nim +27 -0
- data/rouge-5.0.0/lib/rouge/demos/nix +19 -0
- data/rouge-5.0.0/lib/rouge/demos/objective_c +18 -0
- data/rouge-5.0.0/lib/rouge/demos/objective_cpp +17 -0
- data/rouge-5.0.0/lib/rouge/demos/ocaml +12 -0
- data/rouge-5.0.0/lib/rouge/demos/ocl +4 -0
- data/rouge-5.0.0/lib/rouge/demos/openedge +4 -0
- data/rouge-5.0.0/lib/rouge/demos/opentype_feature_file +5 -0
- data/rouge-5.0.0/lib/rouge/demos/p4 +99 -0
- data/rouge-5.0.0/lib/rouge/demos/pascal +14 -0
- data/rouge-5.0.0/lib/rouge/demos/pdf +29 -0
- data/rouge-5.0.0/lib/rouge/demos/perl +5 -0
- data/rouge-5.0.0/lib/rouge/demos/php +3 -0
- data/rouge-5.0.0/lib/rouge/demos/plaintext +1 -0
- data/rouge-5.0.0/lib/rouge/demos/plist +11 -0
- data/rouge-5.0.0/lib/rouge/demos/plsql +2 -0
- data/rouge-5.0.0/lib/rouge/demos/pony +17 -0
- data/rouge-5.0.0/lib/rouge/demos/postscript +9 -0
- data/rouge-5.0.0/lib/rouge/demos/powershell +13 -0
- data/rouge-5.0.0/lib/rouge/demos/praat +26 -0
- data/rouge-5.0.0/lib/rouge/demos/prolog +9 -0
- data/rouge-5.0.0/lib/rouge/demos/prometheus +9 -0
- data/rouge-5.0.0/lib/rouge/demos/properties +7 -0
- data/rouge-5.0.0/lib/rouge/demos/protobuf +5 -0
- data/rouge-5.0.0/lib/rouge/demos/puppet +6 -0
- data/rouge-5.0.0/lib/rouge/demos/python +6 -0
- data/rouge-5.0.0/lib/rouge/demos/q +8 -0
- data/rouge-5.0.0/lib/rouge/demos/qml +9 -0
- data/rouge-5.0.0/lib/rouge/demos/r +8 -0
- data/rouge-5.0.0/lib/rouge/demos/racket +24 -0
- data/rouge-5.0.0/lib/rouge/demos/reasonml +12 -0
- data/rouge-5.0.0/lib/rouge/demos/rego +8 -0
- data/rouge-5.0.0/lib/rouge/demos/rescript +26 -0
- data/rouge-5.0.0/lib/rouge/demos/rml +33 -0
- data/rouge-5.0.0/lib/rouge/demos/robot_framework +27 -0
- data/rouge-5.0.0/lib/rouge/demos/rocq +16 -0
- data/rouge-5.0.0/lib/rouge/demos/ruby +9 -0
- data/rouge-5.0.0/lib/rouge/demos/rust +12 -0
- data/rouge-5.0.0/lib/rouge/demos/sas +13 -0
- data/rouge-5.0.0/lib/rouge/demos/sass +3 -0
- data/rouge-5.0.0/lib/rouge/demos/scala +3 -0
- data/rouge-5.0.0/lib/rouge/demos/scheme +4 -0
- data/rouge-5.0.0/lib/rouge/demos/scss +5 -0
- data/rouge-5.0.0/lib/rouge/demos/sed +4 -0
- data/rouge-5.0.0/lib/rouge/demos/shell +2 -0
- data/rouge-5.0.0/lib/rouge/demos/sieve +10 -0
- data/rouge-5.0.0/lib/rouge/demos/slice +10 -0
- data/rouge-5.0.0/lib/rouge/demos/slim +17 -0
- data/rouge-5.0.0/lib/rouge/demos/smalltalk +6 -0
- data/rouge-5.0.0/lib/rouge/demos/smarty +11 -0
- data/rouge-5.0.0/lib/rouge/demos/sml +4 -0
- data/rouge-5.0.0/lib/rouge/demos/sparql +6 -0
- data/rouge-5.0.0/lib/rouge/demos/sqf +14 -0
- data/rouge-5.0.0/lib/rouge/demos/sql +1 -0
- data/rouge-5.0.0/lib/rouge/demos/ssh +4 -0
- data/rouge-5.0.0/lib/rouge/demos/stan +13 -0
- data/rouge-5.0.0/lib/rouge/demos/stata +14 -0
- data/rouge-5.0.0/lib/rouge/demos/supercollider +11 -0
- data/rouge-5.0.0/lib/rouge/demos/svelte +29 -0
- data/rouge-5.0.0/lib/rouge/demos/swift +5 -0
- data/rouge-5.0.0/lib/rouge/demos/systemd +4 -0
- data/rouge-5.0.0/lib/rouge/demos/syzlang +15 -0
- data/rouge-5.0.0/lib/rouge/demos/syzprog +8 -0
- data/rouge-5.0.0/lib/rouge/demos/tap +5 -0
- data/rouge-5.0.0/lib/rouge/demos/tcl +1 -0
- data/rouge-5.0.0/lib/rouge/demos/terraform +16 -0
- data/rouge-5.0.0/lib/rouge/demos/tex +1 -0
- data/rouge-5.0.0/lib/rouge/demos/thrift +15 -0
- data/rouge-5.0.0/lib/rouge/demos/toml +9 -0
- data/rouge-5.0.0/lib/rouge/demos/tsx +17 -0
- data/rouge-5.0.0/lib/rouge/demos/ttcn3 +6 -0
- data/rouge-5.0.0/lib/rouge/demos/tulip +13 -0
- data/rouge-5.0.0/lib/rouge/demos/turtle +26 -0
- data/rouge-5.0.0/lib/rouge/demos/twig +9 -0
- data/rouge-5.0.0/lib/rouge/demos/typescript +1 -0
- data/rouge-5.0.0/lib/rouge/demos/vala +8 -0
- data/rouge-5.0.0/lib/rouge/demos/vb +4 -0
- data/rouge-5.0.0/lib/rouge/demos/vcl +12 -0
- data/rouge-5.0.0/lib/rouge/demos/velocity +9 -0
- data/rouge-5.0.0/lib/rouge/demos/verilog +27 -0
- data/rouge-5.0.0/lib/rouge/demos/veryl +24 -0
- data/rouge-5.0.0/lib/rouge/demos/vhdl +23 -0
- data/rouge-5.0.0/lib/rouge/demos/viml +14 -0
- data/rouge-5.0.0/lib/rouge/demos/vue +11 -0
- data/rouge-5.0.0/lib/rouge/demos/wollok +11 -0
- data/rouge-5.0.0/lib/rouge/demos/xml +2 -0
- data/rouge-5.0.0/lib/rouge/demos/xojo +14 -0
- data/rouge-5.0.0/lib/rouge/demos/xpath +2 -0
- data/rouge-5.0.0/lib/rouge/demos/xquery +22 -0
- data/rouge-5.0.0/lib/rouge/demos/yaml +4 -0
- data/rouge-5.0.0/lib/rouge/demos/yang +17 -0
- data/rouge-5.0.0/lib/rouge/demos/zig +6 -0
- data/rouge-5.0.0/lib/rouge/eager.rb +3 -0
- data/rouge-5.0.0/lib/rouge/formatter.rb +112 -0
- data/rouge-5.0.0/lib/rouge/formatters/html.rb +64 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_debug.rb +16 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_inline.rb +30 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_legacy.rb +56 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_legacy_table.rb +57 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_line_highlighter.rb +31 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_line_table.rb +56 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_linewise.rb +31 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_pygments.rb +23 -0
- data/rouge-5.0.0/lib/rouge/formatters/html_table.rb +77 -0
- data/rouge-5.0.0/lib/rouge/formatters/null.rb +20 -0
- data/rouge-5.0.0/lib/rouge/formatters/terminal256.rb +198 -0
- data/rouge-5.0.0/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/rouge-5.0.0/lib/rouge/formatters/tex.rb +92 -0
- data/rouge-5.0.0/lib/rouge/guesser.rb +57 -0
- data/rouge-5.0.0/lib/rouge/guessers/disambiguation.rb +172 -0
- data/rouge-5.0.0/lib/rouge/guessers/filename.rb +27 -0
- data/rouge-5.0.0/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/rouge-5.0.0/lib/rouge/guessers/mimetype.rb +16 -0
- data/rouge-5.0.0/lib/rouge/guessers/modeline.rb +46 -0
- data/rouge-5.0.0/lib/rouge/guessers/source.rb +31 -0
- data/rouge-5.0.0/lib/rouge/guessers/util.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexer.rb +556 -0
- data/rouge-5.0.0/lib/rouge/lexers/abap/builtins.rb +187 -0
- data/rouge-5.0.0/lib/rouge/lexers/abap.rb +132 -0
- data/rouge-5.0.0/lib/rouge/lexers/actionscript.rb +196 -0
- data/rouge-5.0.0/lib/rouge/lexers/ada.rb +162 -0
- data/rouge-5.0.0/lib/rouge/lexers/apache/keywords.rb +16 -0
- data/rouge-5.0.0/lib/rouge/lexers/apache.rb +84 -0
- data/rouge-5.0.0/lib/rouge/lexers/apex.rb +128 -0
- data/rouge-5.0.0/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/rouge-5.0.0/lib/rouge/lexers/apple_script.rb +370 -0
- data/rouge-5.0.0/lib/rouge/lexers/armasm.rb +145 -0
- data/rouge-5.0.0/lib/rouge/lexers/augeas.rb +93 -0
- data/rouge-5.0.0/lib/rouge/lexers/awk.rb +162 -0
- data/rouge-5.0.0/lib/rouge/lexers/batchfile.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/rouge-5.0.0/lib/rouge/lexers/bibtex.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/bicep.rb +111 -0
- data/rouge-5.0.0/lib/rouge/lexers/biml.rb +70 -0
- data/rouge-5.0.0/lib/rouge/lexers/bpf.rb +118 -0
- data/rouge-5.0.0/lib/rouge/lexers/brainfuck.rb +54 -0
- data/rouge-5.0.0/lib/rouge/lexers/brightscript.rb +146 -0
- data/rouge-5.0.0/lib/rouge/lexers/bsl.rb +82 -0
- data/rouge-5.0.0/lib/rouge/lexers/c.rb +204 -0
- data/rouge-5.0.0/lib/rouge/lexers/ceylon.rb +96 -0
- data/rouge-5.0.0/lib/rouge/lexers/cfscript.rb +154 -0
- data/rouge-5.0.0/lib/rouge/lexers/cisco_ios.rb +83 -0
- data/rouge-5.0.0/lib/rouge/lexers/clean.rb +156 -0
- data/rouge-5.0.0/lib/rouge/lexers/clojure.rb +113 -0
- data/rouge-5.0.0/lib/rouge/lexers/cmake.rb +218 -0
- data/rouge-5.0.0/lib/rouge/lexers/cmhg.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/cobol.rb +137 -0
- data/rouge-5.0.0/lib/rouge/lexers/codeowners.rb +30 -0
- data/rouge-5.0.0/lib/rouge/lexers/coffeescript.rb +215 -0
- data/rouge-5.0.0/lib/rouge/lexers/common_lisp.rb +346 -0
- data/rouge-5.0.0/lib/rouge/lexers/conf.rb +25 -0
- data/rouge-5.0.0/lib/rouge/lexers/console.rb +196 -0
- data/rouge-5.0.0/lib/rouge/lexers/cpp.rb +102 -0
- data/rouge-5.0.0/lib/rouge/lexers/crystal.rb +435 -0
- data/rouge-5.0.0/lib/rouge/lexers/csharp.rb +118 -0
- data/rouge-5.0.0/lib/rouge/lexers/css.rb +337 -0
- data/rouge-5.0.0/lib/rouge/lexers/csvs.rb +44 -0
- data/rouge-5.0.0/lib/rouge/lexers/cuda.rb +35 -0
- data/rouge-5.0.0/lib/rouge/lexers/cypher.rb +116 -0
- data/rouge-5.0.0/lib/rouge/lexers/cython.rb +127 -0
- data/rouge-5.0.0/lib/rouge/lexers/d.rb +177 -0
- data/rouge-5.0.0/lib/rouge/lexers/dafny.rb +128 -0
- data/rouge-5.0.0/lib/rouge/lexers/dart.rb +108 -0
- data/rouge-5.0.0/lib/rouge/lexers/datastudio.rb +138 -0
- data/rouge-5.0.0/lib/rouge/lexers/diff.rb +47 -0
- data/rouge-5.0.0/lib/rouge/lexers/digdag.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/docker.rb +55 -0
- data/rouge-5.0.0/lib/rouge/lexers/dot.rb +70 -0
- data/rouge-5.0.0/lib/rouge/lexers/dylan.rb +109 -0
- data/rouge-5.0.0/lib/rouge/lexers/ecl.rb +175 -0
- data/rouge-5.0.0/lib/rouge/lexers/eex.rb +52 -0
- data/rouge-5.0.0/lib/rouge/lexers/eiffel.rb +65 -0
- data/rouge-5.0.0/lib/rouge/lexers/elixir.rb +158 -0
- data/rouge-5.0.0/lib/rouge/lexers/elm.rb +90 -0
- data/rouge-5.0.0/lib/rouge/lexers/email.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/epp.rb +51 -0
- data/rouge-5.0.0/lib/rouge/lexers/erb.rb +53 -0
- data/rouge-5.0.0/lib/rouge/lexers/erlang.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/escape.rb +58 -0
- data/rouge-5.0.0/lib/rouge/lexers/factor.rb +303 -0
- data/rouge-5.0.0/lib/rouge/lexers/fluent.rb +74 -0
- data/rouge-5.0.0/lib/rouge/lexers/fortran.rb +178 -0
- data/rouge-5.0.0/lib/rouge/lexers/freefem.rb +240 -0
- data/rouge-5.0.0/lib/rouge/lexers/fsharp.rb +120 -0
- data/rouge-5.0.0/lib/rouge/lexers/gdscript.rb +171 -0
- data/rouge-5.0.0/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/rouge-5.0.0/lib/rouge/lexers/ghc_core.rb +152 -0
- data/rouge-5.0.0/lib/rouge/lexers/gherkin/keywords.rb +23 -0
- data/rouge-5.0.0/lib/rouge/lexers/gherkin.rb +142 -0
- data/rouge-5.0.0/lib/rouge/lexers/gjs.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/glsl/builtins.rb +17 -0
- data/rouge-5.0.0/lib/rouge/lexers/glsl.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/go.rb +177 -0
- data/rouge-5.0.0/lib/rouge/lexers/gradle.rb +38 -0
- data/rouge-5.0.0/lib/rouge/lexers/graphql.rb +261 -0
- data/rouge-5.0.0/lib/rouge/lexers/groovy.rb +119 -0
- data/rouge-5.0.0/lib/rouge/lexers/gts.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/hack.rb +47 -0
- data/rouge-5.0.0/lib/rouge/lexers/haml.rb +226 -0
- data/rouge-5.0.0/lib/rouge/lexers/handlebars.rb +91 -0
- data/rouge-5.0.0/lib/rouge/lexers/haskell.rb +207 -0
- data/rouge-5.0.0/lib/rouge/lexers/haxe.rb +265 -0
- data/rouge-5.0.0/lib/rouge/lexers/hcl.rb +166 -0
- data/rouge-5.0.0/lib/rouge/lexers/hlsl.rb +166 -0
- data/rouge-5.0.0/lib/rouge/lexers/hocon.rb +86 -0
- data/rouge-5.0.0/lib/rouge/lexers/hql.rb +135 -0
- data/rouge-5.0.0/lib/rouge/lexers/html.rb +141 -0
- data/rouge-5.0.0/lib/rouge/lexers/http.rb +87 -0
- data/rouge-5.0.0/lib/rouge/lexers/hylang.rb +93 -0
- data/rouge-5.0.0/lib/rouge/lexers/idlang.rb +312 -0
- data/rouge-5.0.0/lib/rouge/lexers/idris.rb +210 -0
- data/rouge-5.0.0/lib/rouge/lexers/iecst.rb +92 -0
- data/rouge-5.0.0/lib/rouge/lexers/igorpro/builtins.rb +1530 -0
- data/rouge-5.0.0/lib/rouge/lexers/igorpro.rb +193 -0
- data/rouge-5.0.0/lib/rouge/lexers/ini.rb +56 -0
- data/rouge-5.0.0/lib/rouge/lexers/io.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/irb.rb +73 -0
- data/rouge-5.0.0/lib/rouge/lexers/isabelle.rb +251 -0
- data/rouge-5.0.0/lib/rouge/lexers/isbl.rb +61 -0
- data/rouge-5.0.0/lib/rouge/lexers/j.rb +244 -0
- data/rouge-5.0.0/lib/rouge/lexers/janet.rb +218 -0
- data/rouge-5.0.0/lib/rouge/lexers/java.rb +92 -0
- data/rouge-5.0.0/lib/rouge/lexers/javascript.rb +315 -0
- data/rouge-5.0.0/lib/rouge/lexers/jinja.rb +169 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsl.rb +66 -0
- data/rouge-5.0.0/lib/rouge/lexers/json.rb +72 -0
- data/rouge-5.0.0/lib/rouge/lexers/json5.rb +74 -0
- data/rouge-5.0.0/lib/rouge/lexers/json_doc.rb +26 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsonnet.rb +153 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsp.rb +119 -0
- data/rouge-5.0.0/lib/rouge/lexers/jsx.rb +91 -0
- data/rouge-5.0.0/lib/rouge/lexers/julia.rb +293 -0
- data/rouge-5.0.0/lib/rouge/lexers/kick_assembler.rb +100 -0
- data/rouge-5.0.0/lib/rouge/lexers/kotlin.rb +150 -0
- data/rouge-5.0.0/lib/rouge/lexers/lasso/keywords.rb +20 -0
- data/rouge-5.0.0/lib/rouge/lexers/lasso.rb +212 -0
- data/rouge-5.0.0/lib/rouge/lexers/lean.rb +164 -0
- data/rouge-5.0.0/lib/rouge/lexers/liquid.rb +284 -0
- data/rouge-5.0.0/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/rouge-5.0.0/lib/rouge/lexers/livescript.rb +310 -0
- data/rouge-5.0.0/lib/rouge/lexers/llvm/keywords.rb +16 -0
- data/rouge-5.0.0/lib/rouge/lexers/llvm.rb +59 -0
- data/rouge-5.0.0/lib/rouge/lexers/lua/keywords.rb +26 -0
- data/rouge-5.0.0/lib/rouge/lexers/lua.rb +186 -0
- data/rouge-5.0.0/lib/rouge/lexers/lustre.rb +79 -0
- data/rouge-5.0.0/lib/rouge/lexers/lutin.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/m68k.rb +143 -0
- data/rouge-5.0.0/lib/rouge/lexers/magik.rb +127 -0
- data/rouge-5.0.0/lib/rouge/lexers/make.rb +148 -0
- data/rouge-5.0.0/lib/rouge/lexers/markdown.rb +183 -0
- data/rouge-5.0.0/lib/rouge/lexers/mason.rb +110 -0
- data/rouge-5.0.0/lib/rouge/lexers/mathematica/keywords.rb +15 -0
- data/rouge-5.0.0/lib/rouge/lexers/mathematica.rb +95 -0
- data/rouge-5.0.0/lib/rouge/lexers/matlab/keywords.rb +15 -0
- data/rouge-5.0.0/lib/rouge/lexers/matlab.rb +81 -0
- data/rouge-5.0.0/lib/rouge/lexers/meson.rb +158 -0
- data/rouge-5.0.0/lib/rouge/lexers/minizinc.rb +87 -0
- data/rouge-5.0.0/lib/rouge/lexers/mojo.rb +39 -0
- data/rouge-5.0.0/lib/rouge/lexers/moonscript.rb +117 -0
- data/rouge-5.0.0/lib/rouge/lexers/mosel.rb +228 -0
- data/rouge-5.0.0/lib/rouge/lexers/msgtrans.rb +26 -0
- data/rouge-5.0.0/lib/rouge/lexers/mxml.rb +69 -0
- data/rouge-5.0.0/lib/rouge/lexers/nasm.rb +73 -0
- data/rouge-5.0.0/lib/rouge/lexers/nesasm.rb +78 -0
- data/rouge-5.0.0/lib/rouge/lexers/nginx.rb +73 -0
- data/rouge-5.0.0/lib/rouge/lexers/nial.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/nim.rb +154 -0
- data/rouge-5.0.0/lib/rouge/lexers/nix.rb +213 -0
- data/rouge-5.0.0/lib/rouge/lexers/objective_c/common.rb +182 -0
- data/rouge-5.0.0/lib/rouge/lexers/objective_c.rb +21 -0
- data/rouge-5.0.0/lib/rouge/lexers/objective_cpp.rb +32 -0
- data/rouge-5.0.0/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/rouge-5.0.0/lib/rouge/lexers/ocaml.rb +65 -0
- data/rouge-5.0.0/lib/rouge/lexers/ocl.rb +84 -0
- data/rouge-5.0.0/lib/rouge/lexers/openedge.rb +632 -0
- data/rouge-5.0.0/lib/rouge/lexers/opentype_feature_file.rb +97 -0
- data/rouge-5.0.0/lib/rouge/lexers/p4.rb +81 -0
- data/rouge-5.0.0/lib/rouge/lexers/pascal.rb +68 -0
- data/rouge-5.0.0/lib/rouge/lexers/pdf.rb +109 -0
- data/rouge-5.0.0/lib/rouge/lexers/perl.rb +251 -0
- data/rouge-5.0.0/lib/rouge/lexers/php/keywords.rb +150 -0
- data/rouge-5.0.0/lib/rouge/lexers/php.rb +470 -0
- data/rouge-5.0.0/lib/rouge/lexers/plain_text.rb +27 -0
- data/rouge-5.0.0/lib/rouge/lexers/plist.rb +47 -0
- data/rouge-5.0.0/lib/rouge/lexers/plsql.rb +577 -0
- data/rouge-5.0.0/lib/rouge/lexers/pony.rb +94 -0
- data/rouge-5.0.0/lib/rouge/lexers/postscript.rb +93 -0
- data/rouge-5.0.0/lib/rouge/lexers/powershell.rb +248 -0
- data/rouge-5.0.0/lib/rouge/lexers/praat.rb +438 -0
- data/rouge-5.0.0/lib/rouge/lexers/prolog.rb +67 -0
- data/rouge-5.0.0/lib/rouge/lexers/prometheus.rb +122 -0
- data/rouge-5.0.0/lib/rouge/lexers/properties.rb +52 -0
- data/rouge-5.0.0/lib/rouge/lexers/protobuf.rb +71 -0
- data/rouge-5.0.0/lib/rouge/lexers/puppet.rb +129 -0
- data/rouge-5.0.0/lib/rouge/lexers/python.rb +340 -0
- data/rouge-5.0.0/lib/rouge/lexers/q.rb +125 -0
- data/rouge-5.0.0/lib/rouge/lexers/qml.rb +74 -0
- data/rouge-5.0.0/lib/rouge/lexers/r.rb +89 -0
- data/rouge-5.0.0/lib/rouge/lexers/racket.rb +568 -0
- data/rouge-5.0.0/lib/rouge/lexers/reasonml.rb +66 -0
- data/rouge-5.0.0/lib/rouge/lexers/rego.rb +60 -0
- data/rouge-5.0.0/lib/rouge/lexers/rescript.rb +119 -0
- data/rouge-5.0.0/lib/rouge/lexers/rml.rb +142 -0
- data/rouge-5.0.0/lib/rouge/lexers/robot_framework.rb +249 -0
- data/rouge-5.0.0/lib/rouge/lexers/rocq.rb +264 -0
- data/rouge-5.0.0/lib/rouge/lexers/ruby.rb +481 -0
- data/rouge-5.0.0/lib/rouge/lexers/rust.rb +261 -0
- data/rouge-5.0.0/lib/rouge/lexers/sas.rb +562 -0
- data/rouge-5.0.0/lib/rouge/lexers/sass/common.rb +182 -0
- data/rouge-5.0.0/lib/rouge/lexers/sass.rb +75 -0
- data/rouge-5.0.0/lib/rouge/lexers/scala.rb +172 -0
- data/rouge-5.0.0/lib/rouge/lexers/scheme.rb +113 -0
- data/rouge-5.0.0/lib/rouge/lexers/scss.rb +35 -0
- data/rouge-5.0.0/lib/rouge/lexers/sed.rb +173 -0
- data/rouge-5.0.0/lib/rouge/lexers/shell.rb +205 -0
- data/rouge-5.0.0/lib/rouge/lexers/sieve.rb +97 -0
- data/rouge-5.0.0/lib/rouge/lexers/slice.rb +32 -0
- data/rouge-5.0.0/lib/rouge/lexers/slim.rb +229 -0
- data/rouge-5.0.0/lib/rouge/lexers/smalltalk.rb +117 -0
- data/rouge-5.0.0/lib/rouge/lexers/smarty.rb +81 -0
- data/rouge-5.0.0/lib/rouge/lexers/sml.rb +345 -0
- data/rouge-5.0.0/lib/rouge/lexers/sparql.rb +131 -0
- data/rouge-5.0.0/lib/rouge/lexers/sqf/keywords.rb +14 -0
- data/rouge-5.0.0/lib/rouge/lexers/sqf.rb +108 -0
- data/rouge-5.0.0/lib/rouge/lexers/sql.rb +161 -0
- data/rouge-5.0.0/lib/rouge/lexers/ssh.rb +33 -0
- data/rouge-5.0.0/lib/rouge/lexers/stan.rb +445 -0
- data/rouge-5.0.0/lib/rouge/lexers/stata.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/supercollider.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/svelte.rb +91 -0
- data/rouge-5.0.0/lib/rouge/lexers/swift.rb +202 -0
- data/rouge-5.0.0/lib/rouge/lexers/systemd.rb +34 -0
- data/rouge-5.0.0/lib/rouge/lexers/syzlang.rb +316 -0
- data/rouge-5.0.0/lib/rouge/lexers/syzprog.rb +122 -0
- data/rouge-5.0.0/lib/rouge/lexers/tap.rb +88 -0
- data/rouge-5.0.0/lib/rouge/lexers/tcl.rb +198 -0
- data/rouge-5.0.0/lib/rouge/lexers/terraform.rb +121 -0
- data/rouge-5.0.0/lib/rouge/lexers/tex.rb +70 -0
- data/rouge-5.0.0/lib/rouge/lexers/thrift.rb +120 -0
- data/rouge-5.0.0/lib/rouge/lexers/toml.rb +124 -0
- data/rouge-5.0.0/lib/rouge/lexers/tsx.rb +33 -0
- data/rouge-5.0.0/lib/rouge/lexers/ttcn3.rb +117 -0
- data/rouge-5.0.0/lib/rouge/lexers/tulip.rb +107 -0
- data/rouge-5.0.0/lib/rouge/lexers/turtle.rb +61 -0
- data/rouge-5.0.0/lib/rouge/lexers/twig.rb +40 -0
- data/rouge-5.0.0/lib/rouge/lexers/typescript/common.rb +60 -0
- data/rouge-5.0.0/lib/rouge/lexers/typescript.rb +23 -0
- data/rouge-5.0.0/lib/rouge/lexers/vala.rb +78 -0
- data/rouge-5.0.0/lib/rouge/lexers/varnish.rb +168 -0
- data/rouge-5.0.0/lib/rouge/lexers/vb.rb +165 -0
- data/rouge-5.0.0/lib/rouge/lexers/velocity.rb +71 -0
- data/rouge-5.0.0/lib/rouge/lexers/verilog.rb +163 -0
- data/rouge-5.0.0/lib/rouge/lexers/veryl.rb +109 -0
- data/rouge-5.0.0/lib/rouge/lexers/vhdl.rb +98 -0
- data/rouge-5.0.0/lib/rouge/lexers/viml/keywords.rb +19 -0
- data/rouge-5.0.0/lib/rouge/lexers/viml.rb +68 -0
- data/rouge-5.0.0/lib/rouge/lexers/vue.rb +127 -0
- data/rouge-5.0.0/lib/rouge/lexers/wollok.rb +107 -0
- data/rouge-5.0.0/lib/rouge/lexers/xml.rb +56 -0
- data/rouge-5.0.0/lib/rouge/lexers/xojo.rb +61 -0
- data/rouge-5.0.0/lib/rouge/lexers/xpath.rb +332 -0
- data/rouge-5.0.0/lib/rouge/lexers/xquery.rb +146 -0
- data/rouge-5.0.0/lib/rouge/lexers/yaml.rb +388 -0
- data/rouge-5.0.0/lib/rouge/lexers/yang.rb +115 -0
- data/rouge-5.0.0/lib/rouge/lexers/zig.rb +139 -0
- data/rouge-5.0.0/lib/rouge/plugins/redcarpet.rb +38 -0
- data/rouge-5.0.0/lib/rouge/regex_lexer.rb +522 -0
- data/rouge-5.0.0/lib/rouge/template_lexer.rb +21 -0
- data/rouge-5.0.0/lib/rouge/tex_theme_renderer.rb +132 -0
- data/rouge-5.0.0/lib/rouge/text_analyzer.rb +50 -0
- data/rouge-5.0.0/lib/rouge/theme.rb +218 -0
- data/rouge-5.0.0/lib/rouge/themes/base16.rb +137 -0
- data/rouge-5.0.0/lib/rouge/themes/bw.rb +43 -0
- data/rouge-5.0.0/lib/rouge/themes/colorful.rb +70 -0
- data/rouge-5.0.0/lib/rouge/themes/github.rb +149 -0
- data/rouge-5.0.0/lib/rouge/themes/gruvbox.rb +176 -0
- data/rouge-5.0.0/lib/rouge/themes/igor_pro.rb +25 -0
- data/rouge-5.0.0/lib/rouge/themes/magritte.rb +80 -0
- data/rouge-5.0.0/lib/rouge/themes/molokai.rb +84 -0
- data/rouge-5.0.0/lib/rouge/themes/monokai.rb +95 -0
- data/rouge-5.0.0/lib/rouge/themes/monokai_sublime.rb +94 -0
- data/rouge-5.0.0/lib/rouge/themes/pastie.rb +72 -0
- data/rouge-5.0.0/lib/rouge/themes/thankful_eyes.rb +77 -0
- data/rouge-5.0.0/lib/rouge/themes/tulip.rb +72 -0
- data/rouge-5.0.0/lib/rouge/token.rb +192 -0
- data/rouge-5.0.0/lib/rouge/util.rb +102 -0
- data/rouge-5.0.0/lib/rouge/version.rb +8 -0
- data/rouge-5.0.0/lib/rouge.rb +117 -0
- data/rouge-5.0.0/lib/rubocop/cop/rouge/no_building_alternation_pattern_in_regexp.rb +71 -0
- data/rouge-5.0.0/lib/rubocop/cop/rouge/no_huge_collections.rb +37 -0
- data/rouge-5.0.0/rouge.gemspec +29 -0
- metadata +579 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
5
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
6
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
7
|
+
# formatter for your application instead.
|
|
8
|
+
|
|
9
|
+
module Rouge
|
|
10
|
+
module Formatters
|
|
11
|
+
# Transforms a token stream into HTML output.
|
|
12
|
+
class HTMLLegacy < Formatter
|
|
13
|
+
tag 'html_legacy'
|
|
14
|
+
|
|
15
|
+
# @option opts [String] :css_class ('highlight')
|
|
16
|
+
# @option opts [true/false] :line_numbers (false)
|
|
17
|
+
# @option opts [Rouge::CSSTheme] :inline_theme (nil)
|
|
18
|
+
# @option opts [true/false] :wrap (true)
|
|
19
|
+
#
|
|
20
|
+
# Initialize with options.
|
|
21
|
+
#
|
|
22
|
+
# If `:inline_theme` is given, then instead of rendering the
|
|
23
|
+
# tokens as <span> tags with CSS classes, the styles according to
|
|
24
|
+
# the given theme will be inlined in "style" attributes. This is
|
|
25
|
+
# useful for formats in which stylesheets are not available.
|
|
26
|
+
#
|
|
27
|
+
# Content will be wrapped in a tag (`div` if tableized, `pre` if
|
|
28
|
+
# not) with the given `:css_class` unless `:wrap` is set to `false`.
|
|
29
|
+
def initialize(opts={})
|
|
30
|
+
warn '[DEPRECATED] Rouge::Formatters::HTMLLegacy is deprecated and will be removed soon. Please use one of the other formatters, or write your own.'
|
|
31
|
+
@formatter = opts[:inline_theme] ? HTMLInline.new(opts[:inline_theme])
|
|
32
|
+
: HTML.new
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@formatter = HTMLTable.new(@formatter, opts) if opts[:line_numbers]
|
|
36
|
+
|
|
37
|
+
if opts.fetch(:wrap, true)
|
|
38
|
+
@pygments_wrap = opts.fetch(:css_class, 'codehilite')
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# @yield the html output.
|
|
43
|
+
def stream(tokens, &b)
|
|
44
|
+
if @pygments_wrap
|
|
45
|
+
yield %(<div class="highlight"><pre class="#{@pygments_wrap}"><code>)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
@formatter.stream(tokens, &b)
|
|
49
|
+
|
|
50
|
+
if @pygments_wrap
|
|
51
|
+
yield "</code></pre></div>"
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
5
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
6
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
7
|
+
# formatter for your application instead.
|
|
8
|
+
|
|
9
|
+
module Rouge
|
|
10
|
+
module Formatters
|
|
11
|
+
class HTMLLegacyTable < Formatter
|
|
12
|
+
def initialize(inner, opts={})
|
|
13
|
+
warn '[DEPRECATED] using a wrapped or line-managed delegator for HTMLTable is deprecated, and will be removed soon. Please use HTML, HTMLInline, or HTMLDebug, or write your own formatter.'
|
|
14
|
+
|
|
15
|
+
@inner = inner
|
|
16
|
+
@start_line = opts.fetch(:start_line, 1)
|
|
17
|
+
@line_format = opts.fetch(:line_format, '%i')
|
|
18
|
+
@table_class = opts.fetch(:table_class, 'rouge-table')
|
|
19
|
+
@gutter_class = opts.fetch(:gutter_class, 'rouge-gutter')
|
|
20
|
+
@code_class = opts.fetch(:code_class, 'rouge-code')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def style(scope)
|
|
24
|
+
yield "#{scope} .#{@table_class} { border-spacing: 0 }"
|
|
25
|
+
yield "#{scope} .#{@gutter_class} { text-align: right }"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def stream(tokens, &b)
|
|
29
|
+
last_val = nil
|
|
30
|
+
num_lines = tokens.reduce(0) {|count, (_, val)| count + (last_val = val).count("\n") }
|
|
31
|
+
formatted = @inner.format(tokens)
|
|
32
|
+
|
|
33
|
+
unless last_val && last_val.end_with?("\n")
|
|
34
|
+
num_lines += 1
|
|
35
|
+
formatted << "\n" unless formatted.end_with?("\n")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# generate a string of newline-separated line numbers for the gutter
|
|
39
|
+
formatted_line_numbers = (@start_line..(@start_line + num_lines - 1)).map do |i|
|
|
40
|
+
sprintf(@line_format, i)
|
|
41
|
+
end.join("\n") << "\n"
|
|
42
|
+
|
|
43
|
+
buffer = [%(<table class="#@table_class"><tbody><tr>)]
|
|
44
|
+
# the "gl" class applies the style for Generic.Lineno
|
|
45
|
+
buffer << %(<td class="#@gutter_class gl" aria-hidden="true">)
|
|
46
|
+
buffer << %(<pre class="lineno">#{formatted_line_numbers}</pre>)
|
|
47
|
+
buffer << '</td>'
|
|
48
|
+
buffer << %(<td class="#@code_class"><pre><code>)
|
|
49
|
+
buffer << formatted
|
|
50
|
+
buffer << '</code></pre></td>'
|
|
51
|
+
buffer << '</tr></tbody></table>'
|
|
52
|
+
|
|
53
|
+
yield buffer.join
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
5
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
6
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
7
|
+
# formatter for your application instead.
|
|
8
|
+
|
|
9
|
+
module Rouge
|
|
10
|
+
module Formatters
|
|
11
|
+
class HTMLLineHighlighter < Formatter
|
|
12
|
+
tag 'html_line_highlighter'
|
|
13
|
+
|
|
14
|
+
def initialize(delegate, opts = {})
|
|
15
|
+
@delegate = HTML.assert_html_formatter!(delegate)
|
|
16
|
+
@highlight_line_class = opts.fetch(:highlight_line_class, 'hll')
|
|
17
|
+
@highlight_lines = opts[:highlight_lines] || []
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def stream(tokens)
|
|
21
|
+
token_lines(tokens).with_index(1) do |line_tokens, lineno|
|
|
22
|
+
should_highlight = @highlight_lines.include?(lineno)
|
|
23
|
+
yield %(<span class=#{@highlight_line_class.inspect}>) if should_highlight
|
|
24
|
+
line_tokens.each { |tok, val| yield @delegate.span(tok, val) }
|
|
25
|
+
yield "\n"
|
|
26
|
+
yield %(</span>) if should_highlight
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
5
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
6
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
7
|
+
# formatter for your application instead.
|
|
8
|
+
|
|
9
|
+
module Rouge
|
|
10
|
+
module Formatters
|
|
11
|
+
class HTMLLineTable < Formatter
|
|
12
|
+
tag 'html_line_table'
|
|
13
|
+
|
|
14
|
+
# @param [Rouge::Formatters::Formatter] formatter An instance of a
|
|
15
|
+
# `Rouge::Formatters::HTML` or `Rouge::Formatters::HTMLInline`
|
|
16
|
+
# @param [Hash] opts options for HTMLLineTable instance.
|
|
17
|
+
# @option opts [Integer] :start_line line number to start from. Defaults to `1`.
|
|
18
|
+
# @option opts [String] :table_class Class name for the table.
|
|
19
|
+
# Defaults to `"rouge-line-table"`.
|
|
20
|
+
# @option opts [String] :line_id a `sprintf` template for generating an `id`
|
|
21
|
+
# attribute for each table row corresponding to current line number.
|
|
22
|
+
# Defaults to `"line-%i"`.
|
|
23
|
+
# @option opts [String] :line_class Class name for each table row.
|
|
24
|
+
# Defaults to `"lineno"`.
|
|
25
|
+
# @option opts [String] :gutter_class Class name for rendered line-number cell.
|
|
26
|
+
# Defaults to `"rouge-gutter"`.
|
|
27
|
+
# @option opts [String] :code_class Class name for rendered code cell.
|
|
28
|
+
# Defaults to `"rouge-code"`.
|
|
29
|
+
def initialize(formatter, opts={})
|
|
30
|
+
@formatter = HTML.assert_html_formatter!(formatter)
|
|
31
|
+
@start_line = opts.fetch :start_line, 1
|
|
32
|
+
@table_class = opts.fetch :table_class, 'rouge-line-table'
|
|
33
|
+
@gutter_class = opts.fetch :gutter_class, 'rouge-gutter'
|
|
34
|
+
@code_class = opts.fetch :code_class, 'rouge-code'
|
|
35
|
+
@line_class = opts.fetch :line_class, 'lineno'
|
|
36
|
+
@line_id = opts.fetch :line_id, 'line-%i'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def stream(tokens, &b)
|
|
40
|
+
buffer = [%(<table class="#@table_class"><tbody>)]
|
|
41
|
+
token_lines(tokens).with_index(@start_line) do |line_tokens, lineno|
|
|
42
|
+
buffer << %(<tr id="#{sprintf @line_id, lineno}" class="#@line_class">)
|
|
43
|
+
buffer << %(<td class="#@gutter_class gl" )
|
|
44
|
+
buffer << %(style="-moz-user-select: none;-ms-user-select: none;)
|
|
45
|
+
buffer << %(-webkit-user-select: none;user-select: none;">)
|
|
46
|
+
buffer << %(<pre>#{lineno}</pre></td>)
|
|
47
|
+
buffer << %(<td class="#@code_class"><pre><code>)
|
|
48
|
+
@formatter.stream(line_tokens) { |formatted| buffer << formatted }
|
|
49
|
+
buffer << "\n</code></pre></td></tr>"
|
|
50
|
+
end
|
|
51
|
+
buffer << %(</tbody></table>)
|
|
52
|
+
yield buffer.join
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
5
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
6
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
7
|
+
# formatter for your application instead.
|
|
8
|
+
|
|
9
|
+
module Rouge
|
|
10
|
+
module Formatters
|
|
11
|
+
class HTMLLinewise < Formatter
|
|
12
|
+
tag 'html_linewise'
|
|
13
|
+
|
|
14
|
+
def initialize(formatter, opts={})
|
|
15
|
+
@formatter = HTML.assert_html_formatter!(formatter)
|
|
16
|
+
@tag_name = opts.fetch(:tag_name, 'div')
|
|
17
|
+
@class_format = opts.fetch(:class, 'line-%i')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def stream(tokens, &b)
|
|
21
|
+
token_lines(tokens).with_index(1) do |line_tokens, lineno|
|
|
22
|
+
yield %(<#{@tag_name} class="#{sprintf @class_format, lineno}">)
|
|
23
|
+
line_tokens.each do |tok, val|
|
|
24
|
+
yield @formatter.span(tok, val)
|
|
25
|
+
end
|
|
26
|
+
yield %(\n</#{@tag_name}>)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
4
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
5
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
6
|
+
# formatter for your application instead.
|
|
7
|
+
|
|
8
|
+
module Rouge
|
|
9
|
+
module Formatters
|
|
10
|
+
class HTMLPygments < Formatter
|
|
11
|
+
def initialize(inner, css_class='codehilite')
|
|
12
|
+
@inner = HTML.assert_html_formatter!(inner)
|
|
13
|
+
@css_class = css_class
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def stream(tokens, &b)
|
|
17
|
+
yield %(<div class="highlight"><pre class="#{@css_class}"><code>)
|
|
18
|
+
@inner.stream(tokens, &b)
|
|
19
|
+
yield "</code></pre></div>"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# [jneen] This is an example implementation only. You may use it as-is, but please do
|
|
5
|
+
# not submit patches that alter the behaviour or options of this formatter for the
|
|
6
|
+
# convenience of your application. You are highly encouraged to write your own
|
|
7
|
+
# formatter for your application instead.
|
|
8
|
+
|
|
9
|
+
module Rouge
|
|
10
|
+
module Formatters
|
|
11
|
+
class HTMLTable < Formatter
|
|
12
|
+
tag 'html_table'
|
|
13
|
+
|
|
14
|
+
def self.new(inner, opts={})
|
|
15
|
+
if !inner.is_a?(HTML) && inner.is_a?(Formatter)
|
|
16
|
+
require_relative 'html_legacy_table'
|
|
17
|
+
return HTMLLegacyTable.new(inner, opts)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
super(inner, opts)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize(inner, opts={})
|
|
24
|
+
@inner = HTML.assert_html_formatter!(inner)
|
|
25
|
+
@start_line = opts.fetch(:start_line, 1)
|
|
26
|
+
@line_format = opts.fetch(:line_format, '%i')
|
|
27
|
+
@table_class = opts.fetch(:table_class, 'rouge-table')
|
|
28
|
+
@gutter_class = opts.fetch(:gutter_class, 'rouge-gutter')
|
|
29
|
+
@code_class = opts.fetch(:code_class, 'rouge-code')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def style(scope)
|
|
33
|
+
yield "#{scope} .#{@table_class} { border-spacing: 0 }"
|
|
34
|
+
yield "#{scope} .#{@gutter_class} { text-align: right }"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def stream(tokens, &b)
|
|
38
|
+
num_lines = 0
|
|
39
|
+
last_val = ''
|
|
40
|
+
formatted = String.new('')
|
|
41
|
+
|
|
42
|
+
tokens.each do |tok, val|
|
|
43
|
+
last_val = val
|
|
44
|
+
num_lines += val.scan(/\n/).size
|
|
45
|
+
formatted << @inner.span(tok, val)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# add an extra line for non-newline-terminated strings
|
|
49
|
+
if last_val[-1] != "\n"
|
|
50
|
+
num_lines += 1
|
|
51
|
+
yield @inner.span(Token::Tokens::Text::Whitespace, "\n")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# generate a string of newline-separated line numbers for the gutter>
|
|
55
|
+
last_line = num_lines + @start_line
|
|
56
|
+
formatted_line_numbers = (@start_line...last_line).map do |i|
|
|
57
|
+
sprintf("#{@line_format}", i) << "\n"
|
|
58
|
+
end.join('')
|
|
59
|
+
|
|
60
|
+
numbers = %(<pre class="lineno">#{formatted_line_numbers}</pre>)
|
|
61
|
+
|
|
62
|
+
yield %(<table class="#@table_class"><tbody><tr>)
|
|
63
|
+
|
|
64
|
+
# the "gl" class applies the style for Generic.Lineno
|
|
65
|
+
yield %(<td class="#@gutter_class gl" aria-hidden="true">)
|
|
66
|
+
yield numbers
|
|
67
|
+
yield '</td>'
|
|
68
|
+
|
|
69
|
+
yield %(<td class="#@code_class"><pre>)
|
|
70
|
+
yield formatted
|
|
71
|
+
yield '</pre></td>'
|
|
72
|
+
|
|
73
|
+
yield "</tr></tbody></table>"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
# A formatter which renders nothing.
|
|
7
|
+
class Null < Formatter
|
|
8
|
+
tag 'null'
|
|
9
|
+
|
|
10
|
+
def initialize(*)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def stream(tokens, &b)
|
|
14
|
+
tokens.each do |tok, val|
|
|
15
|
+
yield "#{tok.qualname} #{val.inspect}\n"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
# A formatter for 256-color terminals
|
|
7
|
+
class Terminal256 < Formatter
|
|
8
|
+
tag 'terminal256'
|
|
9
|
+
|
|
10
|
+
# max distance between two colors, #000000 to #ffffff
|
|
11
|
+
MAX_DISTANCE = 257 * 257 * 3
|
|
12
|
+
|
|
13
|
+
# @private
|
|
14
|
+
attr_reader :theme
|
|
15
|
+
|
|
16
|
+
# @param [Hash,Rouge::Theme] theme
|
|
17
|
+
# the theme to render with.
|
|
18
|
+
def initialize(theme = Themes::ThankfulEyes.new)
|
|
19
|
+
if theme.is_a?(Rouge::Theme)
|
|
20
|
+
@theme = theme
|
|
21
|
+
elsif theme.is_a?(Hash)
|
|
22
|
+
@theme = theme[:theme] || Themes::ThankfulEyes.new
|
|
23
|
+
else
|
|
24
|
+
raise ArgumentError, "invalid theme: #{theme.inspect}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def stream(tokens, &b)
|
|
29
|
+
tokens.each do |tok, val|
|
|
30
|
+
escape_sequence(tok).stream_value(val, &b)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
class EscapeSequence
|
|
35
|
+
attr_reader :style
|
|
36
|
+
def initialize(style)
|
|
37
|
+
@style = style
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.xterm_colors
|
|
41
|
+
@xterm_colors ||= [].tap do |out|
|
|
42
|
+
# colors 0..15: 16 basic colors
|
|
43
|
+
out << [0x00, 0x00, 0x00] # 0
|
|
44
|
+
out << [0xcd, 0x00, 0x00] # 1
|
|
45
|
+
out << [0x00, 0xcd, 0x00] # 2
|
|
46
|
+
out << [0xcd, 0xcd, 0x00] # 3
|
|
47
|
+
out << [0x00, 0x00, 0xee] # 4
|
|
48
|
+
out << [0xcd, 0x00, 0xcd] # 5
|
|
49
|
+
out << [0x00, 0xcd, 0xcd] # 6
|
|
50
|
+
out << [0xe5, 0xe5, 0xe5] # 7
|
|
51
|
+
out << [0x7f, 0x7f, 0x7f] # 8
|
|
52
|
+
out << [0xff, 0x00, 0x00] # 9
|
|
53
|
+
out << [0x00, 0xff, 0x00] # 10
|
|
54
|
+
out << [0xff, 0xff, 0x00] # 11
|
|
55
|
+
out << [0x5c, 0x5c, 0xff] # 12
|
|
56
|
+
out << [0xff, 0x00, 0xff] # 13
|
|
57
|
+
out << [0x00, 0xff, 0xff] # 14
|
|
58
|
+
out << [0xff, 0xff, 0xff] # 15
|
|
59
|
+
|
|
60
|
+
# colors 16..232: the 6x6x6 color cube
|
|
61
|
+
valuerange = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff]
|
|
62
|
+
|
|
63
|
+
217.times do |i|
|
|
64
|
+
r = valuerange[(i / 36) % 6]
|
|
65
|
+
g = valuerange[(i / 6) % 6]
|
|
66
|
+
b = valuerange[i % 6]
|
|
67
|
+
out << [r, g, b]
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# colors 233..253: grayscale
|
|
71
|
+
1.upto 22 do |i|
|
|
72
|
+
v = 8 + i * 10
|
|
73
|
+
out << [v, v, v]
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def fg
|
|
79
|
+
return @fg if instance_variable_defined? :@fg
|
|
80
|
+
@fg = style.fg && self.class.color_index(style.fg)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def bg
|
|
84
|
+
return @bg if instance_variable_defined? :@bg
|
|
85
|
+
@bg = style.bg && self.class.color_index(style.bg)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def stream_value(val, &b)
|
|
90
|
+
yield style_string
|
|
91
|
+
yield val.gsub("\e", "\\e")
|
|
92
|
+
.gsub("\n", "#{reset_string}\n#{style_string}")
|
|
93
|
+
yield reset_string
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def style_string
|
|
97
|
+
@style_string ||= begin
|
|
98
|
+
attrs = []
|
|
99
|
+
|
|
100
|
+
attrs << ['38', '5', fg.to_s] if fg
|
|
101
|
+
attrs << ['48', '5', bg.to_s] if bg
|
|
102
|
+
attrs << '01' if style[:bold]
|
|
103
|
+
attrs << '04' if style[:italic] # underline, but hey, whatevs
|
|
104
|
+
escape(attrs)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def reset_string
|
|
109
|
+
@reset_string ||= begin
|
|
110
|
+
attrs = []
|
|
111
|
+
attrs << '39' if fg # fg reset
|
|
112
|
+
attrs << '49' if bg # bg reset
|
|
113
|
+
attrs << '00' if style[:bold] || style[:italic]
|
|
114
|
+
|
|
115
|
+
escape(attrs)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
private
|
|
120
|
+
def escape(attrs)
|
|
121
|
+
return '' if attrs.empty?
|
|
122
|
+
"\e[#{attrs.join(';')}m"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def self.color_index(color)
|
|
126
|
+
@color_index_cache ||= {}
|
|
127
|
+
@color_index_cache[color] ||= closest_color(*get_rgb(color))
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def self.get_rgb(color)
|
|
131
|
+
color = $1 if color =~ /#([0-9a-f]+)/i
|
|
132
|
+
hexes = case color.size
|
|
133
|
+
when 3
|
|
134
|
+
color.chars.map { |c| "#{c}#{c}" }
|
|
135
|
+
when 6
|
|
136
|
+
color.scan(/../)
|
|
137
|
+
else
|
|
138
|
+
raise "invalid color: #{color}"
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
hexes.map { |h| h.to_i(16) }
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def self.closest_color(r, g, b)
|
|
145
|
+
@@colors_cache ||= {}
|
|
146
|
+
key = (r << 16) + (g << 8) + b
|
|
147
|
+
@@colors_cache.fetch(key) do
|
|
148
|
+
distance = MAX_DISTANCE
|
|
149
|
+
|
|
150
|
+
match = 0
|
|
151
|
+
|
|
152
|
+
xterm_colors.each_with_index do |(cr, cg, cb), i|
|
|
153
|
+
d = (r - cr)**2 + (g - cg)**2 + (b - cb)**2
|
|
154
|
+
next if d >= distance
|
|
155
|
+
|
|
156
|
+
match = i
|
|
157
|
+
distance = d
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
match
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
class Unescape < EscapeSequence
|
|
166
|
+
def initialize(*) end
|
|
167
|
+
def style_string(*) '' end
|
|
168
|
+
def reset_string(*) '' end
|
|
169
|
+
def stream_value(val) yield val end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# private
|
|
173
|
+
def escape_sequence(token)
|
|
174
|
+
return Unescape.new if escape?(token)
|
|
175
|
+
@escape_sequences ||= {}
|
|
176
|
+
@escape_sequences[token.qualname] ||=
|
|
177
|
+
make_escape_sequence(get_style(token))
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def make_escape_sequence(style)
|
|
181
|
+
EscapeSequence.new(style)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def get_style(token)
|
|
185
|
+
return text_style if token.ancestors.include? Token::Tokens::Text
|
|
186
|
+
|
|
187
|
+
theme.get_own_style(token) || text_style
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def text_style
|
|
191
|
+
style = theme.get_style(Token['Text'])
|
|
192
|
+
# don't highlight text backgrounds
|
|
193
|
+
style.delete :bg
|
|
194
|
+
style
|
|
195
|
+
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
module Rouge
|
|
4
|
+
module Formatters
|
|
5
|
+
class TerminalTruecolor < Terminal256
|
|
6
|
+
tag 'terminal_truecolor'
|
|
7
|
+
|
|
8
|
+
class TruecolorEscapeSequence < Terminal256::EscapeSequence
|
|
9
|
+
def style_string
|
|
10
|
+
@style_string ||= begin
|
|
11
|
+
out = String.new('')
|
|
12
|
+
out << escape(['48', '2', *get_rgb(style.bg)]) if style.bg
|
|
13
|
+
out << escape(['38', '2', *get_rgb(style.fg)]) if style.fg
|
|
14
|
+
out << escape(['1']) if style[:bold] || style[:italic]
|
|
15
|
+
out
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def get_rgb(color)
|
|
20
|
+
color = $1 if color =~ /#(\h+)/
|
|
21
|
+
|
|
22
|
+
case color.size
|
|
23
|
+
when 3 then color.chars.map { |c| c.to_i(16) * 2 }
|
|
24
|
+
when 6 then color.scan(/../).map { |cc| cc.to_i(16) }
|
|
25
|
+
else
|
|
26
|
+
raise "invalid color: #{color.inspect}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @override
|
|
32
|
+
def make_escape_sequence(style)
|
|
33
|
+
TruecolorEscapeSequence.new(style)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Formatters
|
|
6
|
+
class Tex < Formatter
|
|
7
|
+
tag 'tex'
|
|
8
|
+
|
|
9
|
+
# A map of TeX escape characters.
|
|
10
|
+
# Newlines are handled specially by using #token_lines
|
|
11
|
+
# spaces are preserved as long as they aren't at the beginning
|
|
12
|
+
# of a line. see #tag_first for our initial-space strategy
|
|
13
|
+
ESCAPE = {
|
|
14
|
+
'&' => '\&',
|
|
15
|
+
'%' => '\%',
|
|
16
|
+
'$' => '\$',
|
|
17
|
+
'#' => '\#',
|
|
18
|
+
'_' => '\_',
|
|
19
|
+
'{' => '\{',
|
|
20
|
+
'}' => '\}',
|
|
21
|
+
'~' => '{\textasciitilde}',
|
|
22
|
+
'^' => '{\textasciicircum}',
|
|
23
|
+
'|' => '{\textbar}',
|
|
24
|
+
'\\' => '{\textbackslash}',
|
|
25
|
+
'`' => '{\textasciigrave}',
|
|
26
|
+
"'" => "'{}",
|
|
27
|
+
'"' => '"{}',
|
|
28
|
+
"\t" => '{\tab}',
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
ESCAPE_REGEX = /[#{ESCAPE.keys.map { |k| Regexp.escape(k) }.join}]/om
|
|
32
|
+
|
|
33
|
+
def initialize(opts={})
|
|
34
|
+
@prefix = opts.fetch(:prefix) { 'RG' }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def escape_tex(str)
|
|
38
|
+
str.gsub(ESCAPE_REGEX, ESCAPE)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def stream(tokens, &b)
|
|
42
|
+
# surround the output with \begin{RG*}...\end{RG*}
|
|
43
|
+
yield "\\begin{#{@prefix}*}%\n"
|
|
44
|
+
|
|
45
|
+
# we strip the newline off the last line to avoid
|
|
46
|
+
# an extra line being rendered. we do this by yielding
|
|
47
|
+
# the \newline tag *before* every line group except
|
|
48
|
+
# the first.
|
|
49
|
+
first = true
|
|
50
|
+
|
|
51
|
+
token_lines tokens do |line|
|
|
52
|
+
if first
|
|
53
|
+
first = false
|
|
54
|
+
else
|
|
55
|
+
yield "\\newline%\n"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
render_line(line, &b)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
yield "%\n\\end{#{@prefix}*}%\n"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def render_line(line, &b)
|
|
65
|
+
line.each do |(tok, val)|
|
|
66
|
+
hphantom_tag(tok, val, &b)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Special handling for leading spaces, since they may be gobbled
|
|
71
|
+
# by a previous command. We replace all initial spaces with
|
|
72
|
+
# \hphantom{xxxx}, which renders an empty space equal to the size
|
|
73
|
+
# of the x's.
|
|
74
|
+
def hphantom_tag(tok, val)
|
|
75
|
+
leading = nil
|
|
76
|
+
val.sub!(/^[ ]+/) { leading = $&.size; '' }
|
|
77
|
+
yield "\\hphantom{#{'x' * leading}}" if leading
|
|
78
|
+
yield tag(tok, val) unless val.empty?
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def tag(tok, val)
|
|
82
|
+
if escape?(tok)
|
|
83
|
+
val
|
|
84
|
+
elsif tok == Token::Tokens::Text
|
|
85
|
+
escape_tex(val)
|
|
86
|
+
else
|
|
87
|
+
"\\#@prefix{#{tok.shortname}}{#{escape_tex(val)}}"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|