rouge_ecl 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/Gemfile +26 -0
- data/LICENSE +186 -0
- data/bin/rougify +17 -0
- data/lib/rouge.rb +82 -0
- data/lib/rouge/cli.rb +429 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/biml +38 -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/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -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/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/ecl +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/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/fsharp +12 -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/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -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 +11 -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/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -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/ocaml +12 -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 +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +49 -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 +2 -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/ruby +9 -0
- data/lib/rouge/demos/rust +12 -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/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/sql +1 -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/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -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/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/yaml +4 -0
- data/lib/rouge/formatter.rb +75 -0
- data/lib/rouge/formatters/html.rb +37 -0
- data/lib/rouge/formatters/html_inline.rb +30 -0
- data/lib/rouge/formatters/html_legacy.rb +44 -0
- data/lib/rouge/formatters/html_linewise.rb +27 -0
- data/lib/rouge/formatters/html_pygments.rb +16 -0
- data/lib/rouge/formatters/html_table.rb +61 -0
- data/lib/rouge/formatters/null.rb +19 -0
- data/lib/rouge/formatters/terminal256.rb +180 -0
- data/lib/rouge/guesser.rb +55 -0
- data/lib/rouge/guessers/disambiguation.rb +101 -0
- data/lib/rouge/guessers/filename.rb +25 -0
- data/lib/rouge/guessers/glob_mapping.rb +43 -0
- data/lib/rouge/guessers/mimetype.rb +14 -0
- data/lib/rouge/guessers/modeline.rb +44 -0
- data/lib/rouge/guessers/source.rb +29 -0
- data/lib/rouge/guessers/util.rb +32 -0
- data/lib/rouge/lexer.rb +461 -0
- data/lib/rouge/lexers/abap.rb +238 -0
- data/lib/rouge/lexers/actionscript.rb +195 -0
- data/lib/rouge/lexers/apache.rb +71 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apiblueprint.rb +47 -0
- data/lib/rouge/lexers/apple_script.rb +367 -0
- data/lib/rouge/lexers/awk.rb +161 -0
- data/lib/rouge/lexers/biml.rb +41 -0
- data/lib/rouge/lexers/bsl.rb +81 -0
- data/lib/rouge/lexers/c.rb +212 -0
- data/lib/rouge/lexers/ceylon.rb +123 -0
- data/lib/rouge/lexers/cfscript.rb +153 -0
- data/lib/rouge/lexers/clojure.rb +112 -0
- data/lib/rouge/lexers/cmake.rb +206 -0
- data/lib/rouge/lexers/coffeescript.rb +174 -0
- data/lib/rouge/lexers/common_lisp.rb +345 -0
- data/lib/rouge/lexers/conf.rb +24 -0
- data/lib/rouge/lexers/console.rb +136 -0
- data/lib/rouge/lexers/coq.rb +187 -0
- data/lib/rouge/lexers/cpp.rb +78 -0
- data/lib/rouge/lexers/csharp.rb +114 -0
- data/lib/rouge/lexers/css.rb +273 -0
- data/lib/rouge/lexers/d.rb +176 -0
- data/lib/rouge/lexers/dart.rb +104 -0
- data/lib/rouge/lexers/diff.rb +31 -0
- data/lib/rouge/lexers/digdag.rb +68 -0
- data/lib/rouge/lexers/docker.rb +50 -0
- data/lib/rouge/lexers/dot.rb +68 -0
- data/lib/rouge/lexers/ecl.rb +138 -0
- data/lib/rouge/lexers/eiffel.rb +65 -0
- data/lib/rouge/lexers/elixir.rb +133 -0
- data/lib/rouge/lexers/elm.rb +89 -0
- data/lib/rouge/lexers/erb.rb +52 -0
- data/lib/rouge/lexers/erlang.rb +114 -0
- data/lib/rouge/lexers/factor.rb +302 -0
- data/lib/rouge/lexers/fortran.rb +176 -0
- data/lib/rouge/lexers/fsharp.rb +118 -0
- data/lib/rouge/lexers/gherkin.rb +137 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
- data/lib/rouge/lexers/glsl.rb +135 -0
- data/lib/rouge/lexers/go.rb +174 -0
- data/lib/rouge/lexers/gradle.rb +37 -0
- data/lib/rouge/lexers/graphql.rb +243 -0
- data/lib/rouge/lexers/groovy.rb +112 -0
- data/lib/rouge/lexers/hack.rb +48 -0
- data/lib/rouge/lexers/haml.rb +229 -0
- data/lib/rouge/lexers/handlebars.rb +79 -0
- data/lib/rouge/lexers/haskell.rb +182 -0
- data/lib/rouge/lexers/html.rb +139 -0
- data/lib/rouge/lexers/http.rb +80 -0
- data/lib/rouge/lexers/hylang.rb +93 -0
- data/lib/rouge/lexers/idlang.rb +310 -0
- data/lib/rouge/lexers/igorpro.rb +408 -0
- data/lib/rouge/lexers/ini.rb +53 -0
- data/lib/rouge/lexers/io.rb +68 -0
- data/lib/rouge/lexers/irb.rb +66 -0
- data/lib/rouge/lexers/java.rb +87 -0
- data/lib/rouge/lexers/javascript.rb +281 -0
- data/lib/rouge/lexers/jinja.rb +137 -0
- data/lib/rouge/lexers/json.rb +29 -0
- data/lib/rouge/lexers/json_doc.rb +23 -0
- data/lib/rouge/lexers/jsonnet.rb +151 -0
- data/lib/rouge/lexers/jsx.rb +102 -0
- data/lib/rouge/lexers/julia.rb +172 -0
- data/lib/rouge/lexers/kotlin.rb +79 -0
- data/lib/rouge/lexers/lasso.rb +214 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/liquid.rb +287 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
- data/lib/rouge/lexers/literate_haskell.rb +36 -0
- data/lib/rouge/lexers/llvm.rb +80 -0
- data/lib/rouge/lexers/lua.rb +125 -0
- data/lib/rouge/lexers/lua/builtins.rb +22 -0
- data/lib/rouge/lexers/make.rb +112 -0
- data/lib/rouge/lexers/markdown.rb +154 -0
- data/lib/rouge/lexers/matlab.rb +71 -0
- data/lib/rouge/lexers/matlab/builtins.rb +11 -0
- data/lib/rouge/lexers/moonscript.rb +114 -0
- data/lib/rouge/lexers/mosel.rb +231 -0
- data/lib/rouge/lexers/mxml.rb +68 -0
- data/lib/rouge/lexers/nasm.rb +198 -0
- data/lib/rouge/lexers/nginx.rb +71 -0
- data/lib/rouge/lexers/nim.rb +152 -0
- data/lib/rouge/lexers/nix.rb +205 -0
- data/lib/rouge/lexers/objective_c.rb +194 -0
- data/lib/rouge/lexers/ocaml.rb +100 -0
- data/lib/rouge/lexers/pascal.rb +66 -0
- data/lib/rouge/lexers/perl.rb +196 -0
- data/lib/rouge/lexers/php.rb +193 -0
- data/lib/rouge/lexers/php/builtins.rb +194 -0
- data/lib/rouge/lexers/plain_text.rb +26 -0
- data/lib/rouge/lexers/plist.rb +45 -0
- data/lib/rouge/lexers/pony.rb +93 -0
- data/lib/rouge/lexers/powershell.rb +678 -0
- data/lib/rouge/lexers/praat.rb +350 -0
- data/lib/rouge/lexers/prolog.rb +59 -0
- data/lib/rouge/lexers/prometheus.rb +121 -0
- data/lib/rouge/lexers/properties.rb +51 -0
- data/lib/rouge/lexers/protobuf.rb +70 -0
- data/lib/rouge/lexers/puppet.rb +128 -0
- data/lib/rouge/lexers/python.rb +232 -0
- data/lib/rouge/lexers/q.rb +123 -0
- data/lib/rouge/lexers/qml.rb +73 -0
- data/lib/rouge/lexers/r.rb +89 -0
- data/lib/rouge/lexers/racket.rb +543 -0
- data/lib/rouge/lexers/ruby.rb +437 -0
- data/lib/rouge/lexers/rust.rb +192 -0
- data/lib/rouge/lexers/sass.rb +74 -0
- data/lib/rouge/lexers/sass/common.rb +180 -0
- data/lib/rouge/lexers/scala.rb +142 -0
- data/lib/rouge/lexers/scheme.rb +112 -0
- data/lib/rouge/lexers/scss.rb +34 -0
- data/lib/rouge/lexers/sed.rb +172 -0
- data/lib/rouge/lexers/shell.rb +189 -0
- data/lib/rouge/lexers/sieve.rb +96 -0
- data/lib/rouge/lexers/slim.rb +228 -0
- data/lib/rouge/lexers/smalltalk.rb +116 -0
- data/lib/rouge/lexers/smarty.rb +80 -0
- data/lib/rouge/lexers/sml.rb +344 -0
- data/lib/rouge/lexers/sql.rb +140 -0
- data/lib/rouge/lexers/swift.rb +181 -0
- data/lib/rouge/lexers/tap.rb +87 -0
- data/lib/rouge/lexers/tcl.rb +192 -0
- data/lib/rouge/lexers/tex.rb +69 -0
- data/lib/rouge/lexers/toml.rb +67 -0
- data/lib/rouge/lexers/tsx.rb +19 -0
- data/lib/rouge/lexers/tulip.rb +106 -0
- data/lib/rouge/lexers/turtle.rb +63 -0
- data/lib/rouge/lexers/twig.rb +39 -0
- data/lib/rouge/lexers/typescript.rb +22 -0
- data/lib/rouge/lexers/typescript/common.rb +33 -0
- data/lib/rouge/lexers/vala.rb +77 -0
- data/lib/rouge/lexers/vb.rb +164 -0
- data/lib/rouge/lexers/verilog.rb +164 -0
- data/lib/rouge/lexers/vhdl.rb +97 -0
- data/lib/rouge/lexers/viml.rb +101 -0
- data/lib/rouge/lexers/viml/keywords.rb +12 -0
- data/lib/rouge/lexers/vue.rb +122 -0
- data/lib/rouge/lexers/wollok.rb +103 -0
- data/lib/rouge/lexers/xml.rb +57 -0
- data/lib/rouge/lexers/yaml.rb +373 -0
- data/lib/rouge/plugins/redcarpet.rb +30 -0
- data/lib/rouge/regex_lexer.rb +441 -0
- data/lib/rouge/template_lexer.rb +20 -0
- data/lib/rouge/text_analyzer.rb +49 -0
- data/lib/rouge/theme.rb +213 -0
- data/lib/rouge/themes/base16.rb +130 -0
- data/lib/rouge/themes/colorful.rb +67 -0
- data/lib/rouge/themes/github.rb +71 -0
- data/lib/rouge/themes/gruvbox.rb +167 -0
- data/lib/rouge/themes/igor_pro.rb +20 -0
- data/lib/rouge/themes/molokai.rb +82 -0
- data/lib/rouge/themes/monokai.rb +92 -0
- data/lib/rouge/themes/monokai_sublime.rb +90 -0
- data/lib/rouge/themes/pastie.rb +69 -0
- data/lib/rouge/themes/thankful_eyes.rb +74 -0
- data/lib/rouge/themes/tulip.rb +69 -0
- data/lib/rouge/token.rb +182 -0
- data/lib/rouge/util.rb +101 -0
- data/lib/rouge/version.rb +7 -0
- data/rouge.gemspec +23 -0
- metadata +365 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class INI < RegexLexer
|
|
6
|
+
title "INI"
|
|
7
|
+
desc 'the INI configuration format'
|
|
8
|
+
tag 'ini'
|
|
9
|
+
|
|
10
|
+
# TODO add more here
|
|
11
|
+
filenames '*.ini', '*.INI', '*.gitconfig'
|
|
12
|
+
mimetypes 'text/x-ini'
|
|
13
|
+
|
|
14
|
+
identifier = /[\w\-.]+/
|
|
15
|
+
|
|
16
|
+
state :basic do
|
|
17
|
+
rule /[;#].*?\n/, Comment
|
|
18
|
+
rule /\s+/, Text
|
|
19
|
+
rule /\\\n/, Str::Escape
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
state :root do
|
|
23
|
+
mixin :basic
|
|
24
|
+
|
|
25
|
+
rule /(#{identifier})(\s*)(=)/ do
|
|
26
|
+
groups Name::Property, Text, Punctuation
|
|
27
|
+
push :value
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
rule /\[.*?\]/, Name::Namespace
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
state :value do
|
|
34
|
+
rule /\n/, Text, :pop!
|
|
35
|
+
mixin :basic
|
|
36
|
+
rule /"/, Str, :dq
|
|
37
|
+
rule /'.*?'/, Str
|
|
38
|
+
mixin :esc_str
|
|
39
|
+
rule /[^\\\n]+/, Str
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
state :dq do
|
|
43
|
+
rule /"/, Str, :pop!
|
|
44
|
+
mixin :esc_str
|
|
45
|
+
rule /[^\\"]+/m, Str
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
state :esc_str do
|
|
49
|
+
rule /\\./m, Str::Escape
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class IO < RegexLexer
|
|
6
|
+
tag 'io'
|
|
7
|
+
title "Io"
|
|
8
|
+
desc 'The IO programming language (http://iolanguage.com)'
|
|
9
|
+
mimetypes 'text/x-iosrc'
|
|
10
|
+
filenames '*.io'
|
|
11
|
+
|
|
12
|
+
def self.detect?(text)
|
|
13
|
+
return true if text.shebang? 'io'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.constants
|
|
17
|
+
@constants ||= Set.new %w(nil false true)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.builtins
|
|
21
|
+
@builtins ||= Set.new %w(
|
|
22
|
+
args call clone do doFile doString else elseif for if list
|
|
23
|
+
method return super then
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
state :root do
|
|
28
|
+
rule /\s+/m, Text
|
|
29
|
+
rule %r(//.*?\n), Comment::Single
|
|
30
|
+
rule %r(#.*?\n), Comment::Single
|
|
31
|
+
rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
|
|
32
|
+
rule %r(/[+]), Comment::Multiline, :nested_comment
|
|
33
|
+
|
|
34
|
+
rule /"(\\\\|\\"|[^"])*"/, Str
|
|
35
|
+
|
|
36
|
+
rule %r(:?:=), Keyword
|
|
37
|
+
rule /[()]/, Punctuation
|
|
38
|
+
|
|
39
|
+
rule %r([-=;,*+><!/|^.%&\[\]{}]), Operator
|
|
40
|
+
|
|
41
|
+
rule /[A-Z]\w*/, Name::Class
|
|
42
|
+
|
|
43
|
+
rule /[a-z_]\w*/ do |m|
|
|
44
|
+
name = m[0]
|
|
45
|
+
|
|
46
|
+
if self.class.constants.include? name
|
|
47
|
+
token Keyword::Constant
|
|
48
|
+
elsif self.class.builtins.include? name
|
|
49
|
+
token Name::Builtin
|
|
50
|
+
else
|
|
51
|
+
token Name
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
rule %r((\d+[.]?\d*|\d*[.]\d+)(e[+-]?[0-9]+)?)i, Num::Float
|
|
56
|
+
rule /\d+/, Num::Integer
|
|
57
|
+
|
|
58
|
+
rule /@@?/, Keyword
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
state :nested_comment do
|
|
62
|
+
rule %r([^/+]+)m, Comment::Multiline
|
|
63
|
+
rule %r(/[+]), Comment::Multiline, :nested_comment
|
|
64
|
+
rule %r([+]/), Comment::Multiline, :pop!
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
load_lexer 'console.rb'
|
|
6
|
+
|
|
7
|
+
class IRBLexer < ConsoleLexer
|
|
8
|
+
tag 'irb'
|
|
9
|
+
aliases 'pry'
|
|
10
|
+
|
|
11
|
+
desc 'Shell sessions in IRB or Pry'
|
|
12
|
+
|
|
13
|
+
# unlike the superclass, we do not accept any options
|
|
14
|
+
@option_docs = {}
|
|
15
|
+
|
|
16
|
+
def output_lexer
|
|
17
|
+
@output_lexer ||= IRBOutputLexer.new(@options)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def lang_lexer
|
|
21
|
+
@lang_lexer ||= Ruby.new(@options)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def prompt_regex
|
|
25
|
+
/^.*?(irb|pry).*?[>"*]/
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def allow_comments?
|
|
29
|
+
true
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
load_lexer 'ruby.rb'
|
|
34
|
+
class IRBOutputLexer < Ruby
|
|
35
|
+
tag 'irb_output'
|
|
36
|
+
|
|
37
|
+
start do
|
|
38
|
+
push :stdout
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
state :has_irb_output do
|
|
42
|
+
rule %r(=>), Punctuation, :pop!
|
|
43
|
+
rule /.+?(\n|$)/, Generic::Output
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
state :irb_error do
|
|
47
|
+
rule /.+?(\n|$)/, Generic::Error
|
|
48
|
+
mixin :has_irb_output
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
state :stdout do
|
|
52
|
+
rule /\w+?(Error|Exception):.+?(\n|$)/, Generic::Error, :irb_error
|
|
53
|
+
mixin :has_irb_output
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
prepend :root do
|
|
57
|
+
rule /#</, Keyword::Type, :irb_object
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
state :irb_object do
|
|
61
|
+
rule />/, Keyword::Type, :pop!
|
|
62
|
+
mixin :root
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Java < RegexLexer
|
|
6
|
+
title "Java"
|
|
7
|
+
desc "The Java programming language (java.com)"
|
|
8
|
+
|
|
9
|
+
tag 'java'
|
|
10
|
+
filenames '*.java'
|
|
11
|
+
mimetypes 'text/x-java'
|
|
12
|
+
|
|
13
|
+
keywords = %w(
|
|
14
|
+
assert break case catch continue default do else finally for
|
|
15
|
+
if goto instanceof new return switch this throw try while
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
declarations = %w(
|
|
19
|
+
abstract const enum extends final implements native private protected
|
|
20
|
+
public static strictfp super synchronized throws transient volatile
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
types = %w(boolean byte char double float int long short void)
|
|
24
|
+
|
|
25
|
+
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
|
26
|
+
|
|
27
|
+
state :root do
|
|
28
|
+
rule /[^\S\n]+/, Text
|
|
29
|
+
rule %r(//.*?$), Comment::Single
|
|
30
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
31
|
+
# keywords: go before method names to avoid lexing "throw new XYZ"
|
|
32
|
+
# as a method signature
|
|
33
|
+
rule /(?:#{keywords.join('|')})\b/, Keyword
|
|
34
|
+
|
|
35
|
+
rule %r(
|
|
36
|
+
(\s*(?:[a-zA-Z_][a-zA-Z0-9_.\[\]<>]*\s+)+?) # return arguments
|
|
37
|
+
([a-zA-Z_][a-zA-Z0-9_]*) # method name
|
|
38
|
+
(\s*)(\() # signature start
|
|
39
|
+
)mx do |m|
|
|
40
|
+
# TODO: do this better, this shouldn't need a delegation
|
|
41
|
+
delegate Java, m[1]
|
|
42
|
+
token Name::Function, m[2]
|
|
43
|
+
token Text, m[3]
|
|
44
|
+
token Operator, m[4]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
rule /@#{id}/, Name::Decorator
|
|
48
|
+
rule /(?:#{declarations.join('|')})\b/, Keyword::Declaration
|
|
49
|
+
rule /(?:#{types.join('|')})\b/, Keyword::Type
|
|
50
|
+
rule /package\b/, Keyword::Namespace
|
|
51
|
+
rule /(?:true|false|null)\b/, Keyword::Constant
|
|
52
|
+
rule /(?:class|interface)\b/, Keyword::Declaration, :class
|
|
53
|
+
rule /import\b/, Keyword::Namespace, :import
|
|
54
|
+
rule /"(\\\\|\\"|[^"])*"/, Str
|
|
55
|
+
rule /'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char
|
|
56
|
+
rule /(\.)(#{id})/ do
|
|
57
|
+
groups Operator, Name::Attribute
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
rule /#{id}:/, Name::Label
|
|
61
|
+
rule /\$?#{id}/, Name
|
|
62
|
+
rule /[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator
|
|
63
|
+
|
|
64
|
+
digit = /[0-9]_+[0-9]|[0-9]/
|
|
65
|
+
bin_digit = /[01]_+[01]|[01]/
|
|
66
|
+
oct_digit = /[0-7]_+[0-7]|[0-7]/
|
|
67
|
+
hex_digit = /[0-9a-f]_+[0-9a-f]|[0-9a-f]/i
|
|
68
|
+
rule /#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/, Num::Float
|
|
69
|
+
rule /0b#{bin_digit}+/i, Num::Bin
|
|
70
|
+
rule /0x#{hex_digit}+/i, Num::Hex
|
|
71
|
+
rule /0#{oct_digit}+/, Num::Oct
|
|
72
|
+
rule /#{digit}+L?/, Num::Integer
|
|
73
|
+
rule /\n/, Text
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :class do
|
|
77
|
+
rule /\s+/m, Text
|
|
78
|
+
rule id, Name::Class, :pop!
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
state :import do
|
|
82
|
+
rule /\s+/m, Text
|
|
83
|
+
rule /[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
# IMPORTANT NOTICE:
|
|
6
|
+
#
|
|
7
|
+
# Please do not copy this lexer and open a pull request
|
|
8
|
+
# for a new language. It will not get merged, you will
|
|
9
|
+
# be unhappy, and kittens will cry.
|
|
10
|
+
#
|
|
11
|
+
class Javascript < RegexLexer
|
|
12
|
+
title "JavaScript"
|
|
13
|
+
desc "JavaScript, the browser scripting language"
|
|
14
|
+
|
|
15
|
+
tag 'javascript'
|
|
16
|
+
aliases 'js'
|
|
17
|
+
filenames '*.js', '*.mjs'
|
|
18
|
+
mimetypes 'application/javascript', 'application/x-javascript',
|
|
19
|
+
'text/javascript', 'text/x-javascript'
|
|
20
|
+
|
|
21
|
+
def self.detect?(text)
|
|
22
|
+
return 1 if text.shebang?('node')
|
|
23
|
+
return 1 if text.shebang?('jsc')
|
|
24
|
+
# TODO: rhino, spidermonkey, etc
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
state :multiline_comment do
|
|
28
|
+
rule %r([*]/), Comment::Multiline, :pop!
|
|
29
|
+
rule %r([^*/]+), Comment::Multiline
|
|
30
|
+
rule %r([*/]), Comment::Multiline
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
state :comments_and_whitespace do
|
|
34
|
+
rule /\s+/, Text
|
|
35
|
+
rule /<!--/, Comment # really...?
|
|
36
|
+
rule %r(//.*?$), Comment::Single
|
|
37
|
+
rule %r(/[*]), Comment::Multiline, :multiline_comment
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
state :expr_start do
|
|
41
|
+
mixin :comments_and_whitespace
|
|
42
|
+
|
|
43
|
+
rule %r(/) do
|
|
44
|
+
token Str::Regex
|
|
45
|
+
goto :regex
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
rule /[{]/ do
|
|
49
|
+
token Punctuation
|
|
50
|
+
goto :object
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
rule //, Text, :pop!
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
state :regex do
|
|
57
|
+
rule %r(/) do
|
|
58
|
+
token Str::Regex
|
|
59
|
+
goto :regex_end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
rule %r([^/]\n), Error, :pop!
|
|
63
|
+
|
|
64
|
+
rule /\n/, Error, :pop!
|
|
65
|
+
rule /\[\^/, Str::Escape, :regex_group
|
|
66
|
+
rule /\[/, Str::Escape, :regex_group
|
|
67
|
+
rule /\\./, Str::Escape
|
|
68
|
+
rule %r{[(][?][:=<!]}, Str::Escape
|
|
69
|
+
rule /[{][\d,]+[}]/, Str::Escape
|
|
70
|
+
rule /[()?]/, Str::Escape
|
|
71
|
+
rule /./, Str::Regex
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
state :regex_end do
|
|
75
|
+
rule /[gim]+/, Str::Regex, :pop!
|
|
76
|
+
rule(//) { pop! }
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
state :regex_group do
|
|
80
|
+
# specially highlight / in a group to indicate that it doesn't
|
|
81
|
+
# close the regex
|
|
82
|
+
rule /\//, Str::Escape
|
|
83
|
+
|
|
84
|
+
rule %r([^/]\n) do
|
|
85
|
+
token Error
|
|
86
|
+
pop! 2
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
rule /\]/, Str::Escape, :pop!
|
|
90
|
+
rule /\\./, Str::Escape
|
|
91
|
+
rule /./, Str::Regex
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
state :bad_regex do
|
|
95
|
+
rule /[^\n]+/, Error, :pop!
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def self.keywords
|
|
99
|
+
@keywords ||= Set.new %w(
|
|
100
|
+
for in of while do break return continue switch case default
|
|
101
|
+
if else throw try catch finally new delete typeof instanceof
|
|
102
|
+
void this yield import export from as async super this
|
|
103
|
+
)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def self.declarations
|
|
107
|
+
@declarations ||= Set.new %w(
|
|
108
|
+
var let const with function class
|
|
109
|
+
extends constructor get set
|
|
110
|
+
)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def self.reserved
|
|
114
|
+
@reserved ||= Set.new %w(
|
|
115
|
+
abstract boolean byte char debugger double enum
|
|
116
|
+
final float goto implements int interface
|
|
117
|
+
long native package private protected public short static
|
|
118
|
+
synchronized throws transient volatile
|
|
119
|
+
eval arguments await
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def self.constants
|
|
124
|
+
@constants ||= Set.new %w(true false null NaN Infinity undefined)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def self.builtins
|
|
128
|
+
@builtins ||= %w(
|
|
129
|
+
Array Boolean Date Error Function Math netscape
|
|
130
|
+
Number Object Packages RegExp String sun decodeURI
|
|
131
|
+
decodeURIComponent encodeURI encodeURIComponent
|
|
132
|
+
Error eval isFinite isNaN parseFloat parseInt
|
|
133
|
+
document window navigator self global
|
|
134
|
+
Promise Set Map WeakSet WeakMap Symbol Proxy Reflect
|
|
135
|
+
Int8Array Uint8Array Uint8ClampedArray
|
|
136
|
+
Int16Array Uint16Array Uint16ClampedArray
|
|
137
|
+
Int32Array Uint32Array Uint32ClampedArray
|
|
138
|
+
Float32Array Float64Array DataView ArrayBuffer
|
|
139
|
+
)
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def self.id_regex
|
|
143
|
+
/[$a-z_][a-z0-9_]*/io
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
id = self.id_regex
|
|
147
|
+
|
|
148
|
+
state :root do
|
|
149
|
+
rule /\A\s*#!.*?\n/m, Comment::Preproc, :statement
|
|
150
|
+
rule %r((?<=\n)(?=\s|/|<!--)), Text, :expr_start
|
|
151
|
+
mixin :comments_and_whitespace
|
|
152
|
+
rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | ===
|
|
153
|
+
| !== )x,
|
|
154
|
+
Operator, :expr_start
|
|
155
|
+
rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
|
|
156
|
+
rule /[(\[,]/, Punctuation, :expr_start
|
|
157
|
+
rule /;/, Punctuation, :statement
|
|
158
|
+
rule /[)\].]/, Punctuation
|
|
159
|
+
|
|
160
|
+
rule /`/ do
|
|
161
|
+
token Str::Double
|
|
162
|
+
push :template_string
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
rule /[?]/ do
|
|
166
|
+
token Punctuation
|
|
167
|
+
push :ternary
|
|
168
|
+
push :expr_start
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
rule /(\@)(\w+)?/ do
|
|
172
|
+
groups Punctuation, Name::Decorator
|
|
173
|
+
push :expr_start
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
rule /[{}]/, Punctuation, :statement
|
|
177
|
+
|
|
178
|
+
rule id do |m|
|
|
179
|
+
if self.class.keywords.include? m[0]
|
|
180
|
+
token Keyword
|
|
181
|
+
push :expr_start
|
|
182
|
+
elsif self.class.declarations.include? m[0]
|
|
183
|
+
token Keyword::Declaration
|
|
184
|
+
push :expr_start
|
|
185
|
+
elsif self.class.reserved.include? m[0]
|
|
186
|
+
token Keyword::Reserved
|
|
187
|
+
elsif self.class.constants.include? m[0]
|
|
188
|
+
token Keyword::Constant
|
|
189
|
+
elsif self.class.builtins.include? m[0]
|
|
190
|
+
token Name::Builtin
|
|
191
|
+
else
|
|
192
|
+
token Name::Other
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
|
|
197
|
+
rule /0x[0-9a-fA-F]+/i, Num::Hex
|
|
198
|
+
rule /0o[0-7][0-7_]*/i, Num::Oct
|
|
199
|
+
rule /0b[01][01_]*/i, Num::Bin
|
|
200
|
+
rule /[0-9]+/, Num::Integer
|
|
201
|
+
|
|
202
|
+
rule /"/, Str::Double, :dq
|
|
203
|
+
rule /'/, Str::Single, :sq
|
|
204
|
+
rule /:/, Punctuation
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
state :dq do
|
|
208
|
+
rule /[^\\"]+/, Str::Double
|
|
209
|
+
rule /\\"/, Str::Escape
|
|
210
|
+
rule /"/, Str::Double, :pop!
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
state :sq do
|
|
214
|
+
rule /[^\\']+/, Str::Single
|
|
215
|
+
rule /\\'/, Str::Escape
|
|
216
|
+
rule /'/, Str::Single, :pop!
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# braced parts that aren't object literals
|
|
220
|
+
state :statement do
|
|
221
|
+
rule /case\b/ do
|
|
222
|
+
token Keyword
|
|
223
|
+
goto :expr_start
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
rule /(#{id})(\s*)(:)/ do
|
|
227
|
+
groups Name::Label, Text, Punctuation
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
rule /[{}]/, Punctuation
|
|
231
|
+
|
|
232
|
+
mixin :expr_start
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# object literals
|
|
236
|
+
state :object do
|
|
237
|
+
mixin :comments_and_whitespace
|
|
238
|
+
|
|
239
|
+
rule /[{]/ do
|
|
240
|
+
token Punctuation
|
|
241
|
+
push
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
rule /[}]/ do
|
|
245
|
+
token Punctuation
|
|
246
|
+
goto :statement
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
rule /(#{id})(\s*)(:)/ do
|
|
250
|
+
groups Name::Attribute, Text, Punctuation
|
|
251
|
+
push :expr_start
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
rule /:/, Punctuation
|
|
255
|
+
mixin :root
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
# ternary expressions, where <id>: is not a label!
|
|
259
|
+
state :ternary do
|
|
260
|
+
rule /:/ do
|
|
261
|
+
token Punctuation
|
|
262
|
+
goto :expr_start
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
mixin :root
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# template strings
|
|
269
|
+
state :template_string do
|
|
270
|
+
rule /\${/, Punctuation, :template_string_expr
|
|
271
|
+
rule /`/, Str::Double, :pop!
|
|
272
|
+
rule /(\\\\|\\[\$`]|[^\$`]|\$(?!{))*/, Str::Double
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
state :template_string_expr do
|
|
276
|
+
rule /}/, Punctuation, :pop!
|
|
277
|
+
mixin :root
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
end
|