rouge 3.2.0 → 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 +5 -5
- data/Gemfile +17 -3
- data/bin/rougify +1 -0
- data/lib/rouge.rb +67 -43
- data/lib/rouge/cli.rb +84 -17
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apex +9 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/clean +6 -0
- data/lib/rouge/demos/cmhg +8 -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/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/freefem +16 -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/haxe +5 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/liquid +0 -1
- 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/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/plist +1 -132
- data/lib/rouge/demos/powershell +12 -48
- data/lib/rouge/demos/q +6 -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/sas +13 -0
- data/lib/rouge/demos/slice +10 -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/supercollider +11 -0
- data/lib/rouge/demos/terraform +0 -15
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/vcl +12 -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/yang +17 -0
- data/lib/rouge/formatter.rb +39 -2
- data/lib/rouge/formatters/html.rb +21 -2
- data/lib/rouge/formatters/html_inline.rb +1 -0
- data/lib/rouge/formatters/html_legacy.rb +1 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +7 -11
- data/lib/rouge/formatters/html_pygments.rb +2 -0
- data/lib/rouge/formatters/html_table.rb +21 -31
- data/lib/rouge/formatters/null.rb +1 -0
- data/lib/rouge/formatters/terminal256.rb +23 -5
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +2 -0
- data/lib/rouge/guessers/disambiguation.rb +35 -0
- data/lib/rouge/guessers/filename.rb +2 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -1
- data/lib/rouge/guessers/mimetype.rb +2 -0
- data/lib/rouge/guessers/modeline.rb +3 -1
- data/lib/rouge/guessers/source.rb +3 -1
- data/lib/rouge/guessers/util.rb +2 -0
- data/lib/rouge/lexer.rb +71 -15
- data/lib/rouge/lexers/abap.rb +13 -11
- data/lib/rouge/lexers/actionscript.rb +35 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +13 -15
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +2 -0
- data/lib/rouge/lexers/apple_script.rb +17 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +26 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +6 -4
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +13 -12
- data/lib/rouge/lexers/c.rb +35 -57
- data/lib/rouge/lexers/ceylon.rb +7 -34
- data/lib/rouge/lexers/cfscript.rb +27 -26
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +15 -14
- data/lib/rouge/lexers/cmake.rb +16 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +90 -49
- data/lib/rouge/lexers/common_lisp.rb +39 -38
- data/lib/rouge/lexers/conf.rb +7 -6
- data/lib/rouge/lexers/console.rb +92 -38
- data/lib/rouge/lexers/coq.rb +27 -23
- data/lib/rouge/lexers/cpp.rb +24 -13
- data/lib/rouge/lexers/crystal.rb +71 -70
- data/lib/rouge/lexers/csharp.rb +29 -29
- data/lib/rouge/lexers/css.rb +24 -23
- 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 +64 -63
- data/lib/rouge/lexers/dart.rb +34 -33
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +10 -4
- data/lib/rouge/lexers/digdag.rb +3 -1
- data/lib/rouge/lexers/docker.rb +12 -11
- data/lib/rouge/lexers/dot.rb +19 -18
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +21 -20
- data/lib/rouge/lexers/elixir.rb +52 -36
- data/lib/rouge/lexers/elm.rb +30 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +5 -4
- data/lib/rouge/lexers/erlang.rb +1 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +41 -40
- data/lib/rouge/lexers/fortran.rb +34 -32
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +33 -31
- 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 +17 -14
- data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
- data/lib/rouge/lexers/glsl.rb +2 -5
- data/lib/rouge/lexers/go.rb +3 -2
- data/lib/rouge/lexers/gradle.rb +1 -0
- data/lib/rouge/lexers/graphql.rb +78 -60
- data/lib/rouge/lexers/groovy.rb +24 -25
- data/lib/rouge/lexers/hack.rb +2 -1
- data/lib/rouge/lexers/haml.rb +26 -29
- data/lib/rouge/lexers/handlebars.rb +32 -20
- data/lib/rouge/lexers/haskell.rb +67 -65
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +26 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +33 -31
- data/lib/rouge/lexers/http.rb +10 -9
- data/lib/rouge/lexers/hylang.rb +15 -14
- data/lib/rouge/lexers/idlang.rb +34 -32
- data/lib/rouge/lexers/igorpro.rb +32 -31
- data/lib/rouge/lexers/ini.rb +13 -12
- data/lib/rouge/lexers/io.rb +10 -9
- data/lib/rouge/lexers/irb.rb +6 -5
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +29 -25
- data/lib/rouge/lexers/javascript.rb +58 -61
- data/lib/rouge/lexers/jinja.rb +39 -22
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +54 -11
- data/lib/rouge/lexers/json_doc.rb +8 -5
- data/lib/rouge/lexers/jsonnet.rb +19 -18
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +18 -16
- data/lib/rouge/lexers/julia.rb +182 -58
- data/lib/rouge/lexers/kotlin.rb +78 -26
- data/lib/rouge/lexers/lasso.rb +54 -58
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +116 -118
- data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
- data/lib/rouge/lexers/literate_haskell.rb +6 -5
- data/lib/rouge/lexers/llvm.rb +66 -49
- data/lib/rouge/lexers/lua.rb +43 -4
- data/lib/rouge/lexers/lua/builtins.rb +2 -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 +57 -34
- data/lib/rouge/lexers/markdown.rb +67 -39
- 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 +26 -17
- data/lib/rouge/lexers/matlab/builtins.rb +4 -4
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +4 -3
- data/lib/rouge/lexers/mosel.rb +64 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +19 -18
- data/lib/rouge/lexers/nasm.rb +43 -169
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +15 -14
- data/lib/rouge/lexers/nim.rb +4 -2
- data/lib/rouge/lexers/nix.rb +44 -43
- data/lib/rouge/lexers/objective_c.rb +5 -178
- 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 +29 -64
- 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 +6 -5
- data/lib/rouge/lexers/perl.rb +102 -67
- data/lib/rouge/lexers/php.rb +91 -53
- data/lib/rouge/lexers/php/builtins.rb +183 -174
- data/lib/rouge/lexers/plain_text.rb +2 -1
- data/lib/rouge/lexers/plist.rb +16 -14
- data/lib/rouge/lexers/pony.rb +21 -20
- data/lib/rouge/lexers/powershell.rb +190 -638
- data/lib/rouge/lexers/praat.rb +76 -75
- data/lib/rouge/lexers/prolog.rb +27 -19
- data/lib/rouge/lexers/prometheus.rb +32 -30
- data/lib/rouge/lexers/properties.rb +13 -12
- data/lib/rouge/lexers/protobuf.rb +23 -22
- data/lib/rouge/lexers/puppet.rb +33 -32
- data/lib/rouge/lexers/python.rb +124 -99
- data/lib/rouge/lexers/q.rb +17 -14
- data/lib/rouge/lexers/qml.rb +13 -12
- data/lib/rouge/lexers/r.rb +13 -13
- data/lib/rouge/lexers/racket.rb +47 -22
- 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 +88 -71
- data/lib/rouge/lexers/rust.rb +45 -44
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +9 -8
- data/lib/rouge/lexers/sass/common.rb +41 -40
- data/lib/rouge/lexers/scala.rb +67 -40
- data/lib/rouge/lexers/scheme.rb +19 -18
- data/lib/rouge/lexers/scss.rb +4 -3
- data/lib/rouge/lexers/sed.rb +31 -30
- data/lib/rouge/lexers/shell.rb +67 -55
- data/lib/rouge/lexers/sieve.rb +10 -9
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +27 -26
- data/lib/rouge/lexers/smalltalk.rb +34 -33
- data/lib/rouge/lexers/smarty.rb +20 -19
- data/lib/rouge/lexers/sml.rb +68 -67
- 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 +47 -26
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +49 -44
- data/lib/rouge/lexers/tap.rb +22 -20
- data/lib/rouge/lexers/tcl.rb +28 -27
- data/lib/rouge/lexers/terraform.rb +37 -13
- data/lib/rouge/lexers/tex.rb +20 -19
- data/lib/rouge/lexers/toml.rb +59 -20
- data/lib/rouge/lexers/tsx.rb +1 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +38 -36
- data/lib/rouge/lexers/turtle.rb +36 -38
- data/lib/rouge/lexers/twig.rb +1 -0
- data/lib/rouge/lexers/typescript.rb +12 -0
- data/lib/rouge/lexers/typescript/common.rb +1 -0
- data/lib/rouge/lexers/vala.rb +19 -18
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +28 -27
- data/lib/rouge/lexers/verilog.rb +27 -28
- data/lib/rouge/lexers/vhdl.rb +12 -11
- data/lib/rouge/lexers/viml.rb +15 -14
- data/lib/rouge/lexers/viml/keywords.rb +2 -0
- data/lib/rouge/lexers/vue.rb +15 -10
- data/lib/rouge/lexers/wollok.rb +27 -26
- data/lib/rouge/lexers/xml.rb +18 -21
- 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 +64 -61
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +9 -2
- data/lib/rouge/regex_lexer.rb +27 -25
- data/lib/rouge/template_lexer.rb +1 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +1 -0
- data/lib/rouge/theme.rb +5 -0
- data/lib/rouge/themes/base16.rb +1 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +1 -0
- data/lib/rouge/themes/igor_pro.rb +1 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +1 -0
- data/lib/rouge/themes/monokai.rb +1 -0
- data/lib/rouge/themes/monokai_sublime.rb +4 -1
- data/lib/rouge/themes/pastie.rb +2 -1
- data/lib/rouge/themes/thankful_eyes.rb +2 -1
- data/lib/rouge/themes/tulip.rb +2 -1
- data/lib/rouge/token.rb +31 -22
- data/lib/rouge/util.rb +3 -2
- data/lib/rouge/version.rb +2 -1
- data/rouge.gemspec +6 -3
- metadata +130 -8
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 579264110ed9ae2f82195af1d9d83d2ebf6288f8ce3cd6909c2a9d563ae0e1d5
|
|
4
|
+
data.tar.gz: 25a1809f05ec5aab6f04ee7b885a17cf8b1388e1247284e773bc166d13a9e296
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 832c13a7236b814d53a5a6b170fc00b4961efb2cdee91053bfc3a6386a9bc6c7b071f9fa51606321e94249b57c6f549f6e4bb420e7647ab68ca6a3c6e49d8c63
|
|
7
|
+
data.tar.gz: 5889f29c2788788120fd698ec004b847c5bafb7df0b22af36c9f1d2a78218c81e7fd136b359b586ed8f586e0a65eceb156721efcb95d95e3af7df34d0b174038
|
data/Gemfile
CHANGED
|
@@ -1,26 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
source 'http://rubygems.org'
|
|
2
4
|
|
|
3
5
|
gemspec
|
|
4
6
|
|
|
5
|
-
gem 'bundler', '~> 1.15'
|
|
6
7
|
gem 'rake'
|
|
7
8
|
|
|
8
9
|
gem 'minitest', '>= 5.0'
|
|
9
10
|
gem 'minitest-power_assert'
|
|
10
11
|
|
|
12
|
+
gem 'parallel', '~> 1.13.0' if RUBY_VERSION < '2.2.0'
|
|
11
13
|
gem 'rubocop', '~> 0.49.1'
|
|
12
14
|
|
|
13
15
|
# don't try to install redcarpet under jruby
|
|
14
16
|
gem 'redcarpet', :platforms => :ruby
|
|
15
17
|
|
|
18
|
+
# Profiling
|
|
19
|
+
if RUBY_VERSION >= '2.3.0'
|
|
20
|
+
gem 'memory_profiler', :require => false
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Needed for a Rake task
|
|
24
|
+
gem 'git'
|
|
25
|
+
gem 'yard'
|
|
26
|
+
|
|
16
27
|
group :development do
|
|
17
28
|
gem 'pry'
|
|
18
29
|
|
|
19
30
|
# docs
|
|
20
|
-
gem 'yard'
|
|
21
31
|
gem 'github-markup'
|
|
22
32
|
|
|
23
33
|
# for visual tests
|
|
24
|
-
|
|
34
|
+
if RUBY_VERSION < '2.2.0'
|
|
35
|
+
gem 'sinatra', '~> 1.4.8'
|
|
36
|
+
else
|
|
37
|
+
gem 'sinatra'
|
|
38
|
+
end
|
|
25
39
|
gem 'shotgun'
|
|
26
40
|
end
|
data/bin/rougify
CHANGED
data/lib/rouge.rb
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
# stdlib
|
|
4
5
|
require 'pathname'
|
|
5
6
|
|
|
6
7
|
# The containing module for Rouge
|
|
7
8
|
module Rouge
|
|
9
|
+
# cache value in a constant since `__dir__` allocates a new string
|
|
10
|
+
# on every call.
|
|
11
|
+
LIB_DIR = __dir__.freeze
|
|
12
|
+
|
|
8
13
|
class << self
|
|
9
14
|
def reload!
|
|
10
15
|
Object.send :remove_const, :Rouge
|
|
@@ -30,54 +35,73 @@ module Rouge
|
|
|
30
35
|
|
|
31
36
|
formatter.format(lexer.lex(text), &b)
|
|
32
37
|
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
# Load a file relative to the `lib/rouge` path.
|
|
40
|
+
#
|
|
41
|
+
# @api private
|
|
42
|
+
def load_file(path)
|
|
43
|
+
load File.join(LIB_DIR, "rouge/#{path}.rb")
|
|
44
|
+
end
|
|
38
45
|
|
|
39
|
-
|
|
46
|
+
# Load the lexers in the `lib/rouge/lexers` directory.
|
|
47
|
+
#
|
|
48
|
+
# @api private
|
|
49
|
+
def load_lexers
|
|
50
|
+
# The trailing slash is necessary to avoid lexers being loaded multiple
|
|
51
|
+
# times by `Lexers.load_lexer`
|
|
52
|
+
lexer_dir = File.join(LIB_DIR, "rouge/lexers/")
|
|
53
|
+
Dir.glob(File.join(lexer_dir, '*.rb')).each do |f|
|
|
54
|
+
Lexers.load_lexer(f.sub(lexer_dir, ''))
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
40
59
|
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
Rouge.load_file 'version'
|
|
61
|
+
Rouge.load_file 'util'
|
|
62
|
+
Rouge.load_file 'text_analyzer'
|
|
63
|
+
Rouge.load_file 'token'
|
|
43
64
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
Rouge.load_file 'lexer'
|
|
66
|
+
Rouge.load_file 'regex_lexer'
|
|
67
|
+
Rouge.load_file 'template_lexer'
|
|
47
68
|
|
|
48
|
-
|
|
49
|
-
Dir.glob(lexers_dir.join('*.rb')).each do |f|
|
|
50
|
-
Rouge::Lexers.load_lexer(Pathname.new(f).relative_path_from(lexers_dir).to_s)
|
|
51
|
-
end
|
|
69
|
+
Rouge.load_lexers
|
|
52
70
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
Rouge.load_file 'guesser'
|
|
72
|
+
Rouge.load_file 'guessers/util'
|
|
73
|
+
Rouge.load_file 'guessers/glob_mapping'
|
|
74
|
+
Rouge.load_file 'guessers/modeline'
|
|
75
|
+
Rouge.load_file 'guessers/filename'
|
|
76
|
+
Rouge.load_file 'guessers/mimetype'
|
|
77
|
+
Rouge.load_file 'guessers/source'
|
|
78
|
+
Rouge.load_file 'guessers/disambiguation'
|
|
61
79
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
Rouge.load_file 'formatter'
|
|
81
|
+
Rouge.load_file 'formatters/html'
|
|
82
|
+
Rouge.load_file 'formatters/html_table'
|
|
83
|
+
Rouge.load_file 'formatters/html_pygments'
|
|
84
|
+
Rouge.load_file 'formatters/html_legacy'
|
|
85
|
+
Rouge.load_file 'formatters/html_linewise'
|
|
86
|
+
Rouge.load_file 'formatters/html_line_table'
|
|
87
|
+
Rouge.load_file 'formatters/html_inline'
|
|
88
|
+
Rouge.load_file 'formatters/terminal256'
|
|
89
|
+
Rouge.load_file 'formatters/terminal_truecolor'
|
|
90
|
+
Rouge.load_file 'formatters/tex'
|
|
91
|
+
Rouge.load_file 'formatters/null'
|
|
71
92
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
Rouge.load_file 'theme'
|
|
94
|
+
Rouge.load_file 'tex_theme_renderer'
|
|
95
|
+
Rouge.load_file 'themes/thankful_eyes'
|
|
96
|
+
Rouge.load_file 'themes/colorful'
|
|
97
|
+
Rouge.load_file 'themes/base16'
|
|
98
|
+
Rouge.load_file 'themes/github'
|
|
99
|
+
Rouge.load_file 'themes/igor_pro'
|
|
100
|
+
Rouge.load_file 'themes/monokai'
|
|
101
|
+
Rouge.load_file 'themes/molokai'
|
|
102
|
+
Rouge.load_file 'themes/monokai_sublime'
|
|
103
|
+
Rouge.load_file 'themes/gruvbox'
|
|
104
|
+
Rouge.load_file 'themes/tulip'
|
|
105
|
+
Rouge.load_file 'themes/pastie'
|
|
106
|
+
Rouge.load_file 'themes/bw'
|
|
107
|
+
Rouge.load_file 'themes/magritte'
|
data/lib/rouge/cli.rb
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
# not required by the main lib.
|
|
4
5
|
# to use this module, require 'rouge/cli'.
|
|
5
6
|
|
|
7
|
+
require 'rbconfig'
|
|
8
|
+
|
|
6
9
|
module Rouge
|
|
7
10
|
class FileReader
|
|
8
11
|
attr_reader :input
|
|
@@ -37,7 +40,7 @@ module Rouge
|
|
|
37
40
|
def self.doc
|
|
38
41
|
return enum_for(:doc) unless block_given?
|
|
39
42
|
|
|
40
|
-
yield %|usage: rougify [command] [args...]|
|
|
43
|
+
yield %|usage: rougify {global options} [command] [args...]|
|
|
41
44
|
yield %||
|
|
42
45
|
yield %|where <command> is one of:|
|
|
43
46
|
yield %| highlight #{Highlight.desc}|
|
|
@@ -47,6 +50,9 @@ module Rouge
|
|
|
47
50
|
yield %| guess #{Guess.desc}|
|
|
48
51
|
yield %| version #{Version.desc}|
|
|
49
52
|
yield %||
|
|
53
|
+
yield %|global options:|
|
|
54
|
+
yield %[ --require|-r <fname> require <fname> after loading rouge]
|
|
55
|
+
yield %||
|
|
50
56
|
yield %|See `rougify help <command>` for more info.|
|
|
51
57
|
end
|
|
52
58
|
|
|
@@ -61,18 +67,22 @@ module Rouge
|
|
|
61
67
|
def self.parse(argv=ARGV)
|
|
62
68
|
argv = normalize_syntax(argv)
|
|
63
69
|
|
|
64
|
-
|
|
70
|
+
while (head = argv.shift)
|
|
71
|
+
case head
|
|
72
|
+
when '-h', '--help', 'help', '-help'
|
|
73
|
+
return Help.parse(argv)
|
|
74
|
+
when '--require', '-r'
|
|
75
|
+
require argv.shift
|
|
76
|
+
else
|
|
77
|
+
break
|
|
78
|
+
end
|
|
79
|
+
end
|
|
65
80
|
|
|
66
|
-
klass = class_from_arg(
|
|
81
|
+
klass = class_from_arg(head)
|
|
67
82
|
return klass.parse(argv) if klass
|
|
68
83
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Help.parse(argv)
|
|
72
|
-
else
|
|
73
|
-
argv.unshift(mode) if mode
|
|
74
|
-
Highlight.parse(argv)
|
|
75
|
-
end
|
|
84
|
+
argv.unshift(head) if head
|
|
85
|
+
Highlight.parse(argv)
|
|
76
86
|
end
|
|
77
87
|
|
|
78
88
|
def initialize(options={})
|
|
@@ -90,7 +100,7 @@ module Rouge
|
|
|
90
100
|
case arg
|
|
91
101
|
when 'version', '--version', '-v'
|
|
92
102
|
Version
|
|
93
|
-
when 'help'
|
|
103
|
+
when 'help', nil
|
|
94
104
|
Help
|
|
95
105
|
when 'highlight', 'hi'
|
|
96
106
|
Highlight
|
|
@@ -185,11 +195,29 @@ module Rouge
|
|
|
185
195
|
yield %[]
|
|
186
196
|
yield %[--require|-r <filename> require a filename or library before]
|
|
187
197
|
yield %[ highlighting]
|
|
198
|
+
yield %[]
|
|
199
|
+
yield %[--escape allow the use of escapes between <! and !>]
|
|
200
|
+
yield %[]
|
|
201
|
+
yield %[--escape-with <l> <r> allow the use of escapes between custom]
|
|
202
|
+
yield %[ delimiters. implies --escape]
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# There is no consistent way to do this, but this is used elsewhere,
|
|
206
|
+
# and we provide explicit opt-in and opt-out with $COLORTERM
|
|
207
|
+
def self.supports_truecolor?
|
|
208
|
+
return true if %w(24bit truecolor).include?(ENV['COLORTERM'])
|
|
209
|
+
return false if ENV['COLORTERM'] && ENV['COLORTERM'] =~ /256/
|
|
210
|
+
|
|
211
|
+
if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
|
212
|
+
ENV['ConEmuANSI'] == 'ON' && !ENV['ANSICON']
|
|
213
|
+
else
|
|
214
|
+
ENV['TERM'] !~ /(^rxvt)|(-color$)/
|
|
215
|
+
end
|
|
188
216
|
end
|
|
189
217
|
|
|
190
218
|
def self.parse(argv)
|
|
191
219
|
opts = {
|
|
192
|
-
:formatter => 'terminal256',
|
|
220
|
+
:formatter => supports_truecolor? ? 'terminal-truecolor' : 'terminal256',
|
|
193
221
|
:theme => 'thankful_eyes',
|
|
194
222
|
:css_class => 'codehilite',
|
|
195
223
|
:input_file => '-',
|
|
@@ -217,6 +245,10 @@ module Rouge
|
|
|
217
245
|
opts[:css_class] = argv.shift
|
|
218
246
|
when '--lexer-opts', '-L'
|
|
219
247
|
opts[:lexer_opts] = parse_cgi(argv.shift)
|
|
248
|
+
when '--escape'
|
|
249
|
+
opts[:escape] = ['<!', '!>']
|
|
250
|
+
when '--escape-with'
|
|
251
|
+
opts[:escape] = [argv.shift, argv.shift]
|
|
220
252
|
when /^--/
|
|
221
253
|
error! "unknown option #{arg.inspect}"
|
|
222
254
|
else
|
|
@@ -243,11 +275,23 @@ module Rouge
|
|
|
243
275
|
)
|
|
244
276
|
end
|
|
245
277
|
|
|
278
|
+
def raw_lexer
|
|
279
|
+
lexer_class.new(@lexer_opts)
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
def escape_lexer
|
|
283
|
+
Rouge::Lexers::Escape.new(
|
|
284
|
+
start: @escape[0],
|
|
285
|
+
end: @escape[1],
|
|
286
|
+
lang: raw_lexer,
|
|
287
|
+
)
|
|
288
|
+
end
|
|
289
|
+
|
|
246
290
|
def lexer
|
|
247
|
-
@lexer ||=
|
|
291
|
+
@lexer ||= @escape ? escape_lexer : raw_lexer
|
|
248
292
|
end
|
|
249
293
|
|
|
250
|
-
attr_reader :input_file, :lexer_name, :mimetype, :formatter
|
|
294
|
+
attr_reader :input_file, :lexer_name, :mimetype, :formatter, :escape
|
|
251
295
|
|
|
252
296
|
def initialize(opts={})
|
|
253
297
|
Rouge::Lexer.enable_debug!
|
|
@@ -270,19 +314,26 @@ module Rouge
|
|
|
270
314
|
|
|
271
315
|
theme = Theme.find(opts[:theme]).new or error! "unknown theme #{opts[:theme]}"
|
|
272
316
|
|
|
317
|
+
# TODO: document this in --help
|
|
273
318
|
@formatter = case opts[:formatter]
|
|
274
319
|
when 'terminal256' then Formatters::Terminal256.new(theme)
|
|
320
|
+
when 'terminal-truecolor' then Formatters::TerminalTruecolor.new(theme)
|
|
275
321
|
when 'html' then Formatters::HTML.new
|
|
276
322
|
when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class])
|
|
277
323
|
when 'html-inline' then Formatters::HTMLInline.new(theme)
|
|
324
|
+
when 'html-line-table' then Formatters::HTMLLineTable.new(Formatters::HTML.new)
|
|
278
325
|
when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new)
|
|
279
326
|
when 'null', 'raw', 'tokens' then Formatters::Null.new
|
|
327
|
+
when 'tex' then Formatters::Tex.new
|
|
280
328
|
else
|
|
281
329
|
error! "unknown formatter preset #{opts[:formatter]}"
|
|
282
330
|
end
|
|
331
|
+
|
|
332
|
+
@escape = opts[:escape]
|
|
283
333
|
end
|
|
284
334
|
|
|
285
335
|
def run
|
|
336
|
+
Formatter.enable_escape! if @escape
|
|
286
337
|
formatter.format(lexer.lex(input), &method(:print))
|
|
287
338
|
end
|
|
288
339
|
|
|
@@ -309,18 +360,30 @@ module Rouge
|
|
|
309
360
|
yield %|respectively. Theme defaults to thankful_eyes.|
|
|
310
361
|
yield %||
|
|
311
362
|
yield %|options:|
|
|
312
|
-
yield %| --scope
|
|
363
|
+
yield %| --scope (default: .highlight) a css selector to scope by|
|
|
364
|
+
yield %| --tex (default: false) render as TeX|
|
|
365
|
+
yield %| --tex-prefix (default: RG) a command prefix for TeX|
|
|
366
|
+
yield %| implies --tex if specified|
|
|
313
367
|
yield %||
|
|
314
368
|
yield %|available themes:|
|
|
315
369
|
yield %| #{Theme.registry.keys.sort.join(', ')}|
|
|
316
370
|
end
|
|
317
371
|
|
|
318
372
|
def self.parse(argv)
|
|
319
|
-
opts = {
|
|
373
|
+
opts = {
|
|
374
|
+
:theme_name => 'thankful_eyes',
|
|
375
|
+
:tex => false,
|
|
376
|
+
:tex_prefix => 'RG'
|
|
377
|
+
}
|
|
320
378
|
|
|
321
379
|
until argv.empty?
|
|
322
380
|
arg = argv.shift
|
|
323
381
|
case arg
|
|
382
|
+
when '--tex'
|
|
383
|
+
opts[:tex] = true
|
|
384
|
+
when '--tex-prefix'
|
|
385
|
+
opts[:tex] = true
|
|
386
|
+
opts[:tex_prefix] = argv.shift
|
|
324
387
|
when /--(\w+)/
|
|
325
388
|
opts[$1.tr('-', '_').to_sym] = argv.shift
|
|
326
389
|
else
|
|
@@ -337,6 +400,10 @@ module Rouge
|
|
|
337
400
|
or error! "unknown theme: #{theme_name}"
|
|
338
401
|
|
|
339
402
|
@theme = theme_class.new(opts)
|
|
403
|
+
if opts[:tex]
|
|
404
|
+
tex_prefix = opts[:tex_prefix]
|
|
405
|
+
@theme = TexThemeRenderer.new(@theme, prefix: tex_prefix)
|
|
406
|
+
end
|
|
340
407
|
end
|
|
341
408
|
|
|
342
409
|
def run
|
|
@@ -365,7 +432,7 @@ module Rouge
|
|
|
365
432
|
puts "== Available Lexers =="
|
|
366
433
|
|
|
367
434
|
Lexer.all.sort_by(&:tag).each do |lexer|
|
|
368
|
-
desc = "#{lexer.desc}"
|
|
435
|
+
desc = String.new("#{lexer.desc}")
|
|
369
436
|
if lexer.aliases.any?
|
|
370
437
|
desc << " [aliases: #{lexer.aliases.join(',')}]"
|
|
371
438
|
end
|
data/lib/rouge/demos/ada
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
with Ada.Directories;
|
|
2
|
+
with Ada.Direct_IO;
|
|
3
|
+
with Ada.Text_IO;
|
|
4
|
+
|
|
5
|
+
procedure Extra_IO.Read_File (Name : String) is
|
|
6
|
+
|
|
7
|
+
package Dirs renames Ada.Directories;
|
|
8
|
+
package Text_IO renames Ada.Text_IO;
|
|
9
|
+
|
|
10
|
+
-- Get the size of the file for a new string.
|
|
11
|
+
Size : Natural := Natural (Dirs.Size (Name));
|
|
12
|
+
subtype File_String is String (1 .. Size);
|
|
13
|
+
|
|
14
|
+
-- Instantiate Direct_IO for our file type.
|
|
15
|
+
package FIO is new Ada.Direct_IO (File_String);
|
|
16
|
+
|
|
17
|
+
File : FIO.File_Type;
|
|
18
|
+
Contents : File_String;
|
|
19
|
+
|
|
20
|
+
begin
|
|
21
|
+
FIO.Open (File, FIO.In_File, Name);
|
|
22
|
+
FIO.Read (File, Contents);
|
|
23
|
+
FIO.Close (File);
|
|
24
|
+
|
|
25
|
+
Text_IO.Put (Contents);
|
|
26
|
+
end Extra_IO.Read_File;
|