rouge 4.7.0 → 5.0.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 +4 -4
- data/Gemfile +11 -4
- data/bin/rougify +3 -4
- data/lib/rouge/cli.rb +7 -10
- data/lib/rouge/demos/abap +30 -4
- data/lib/rouge/demos/dylan +8 -0
- data/lib/rouge/demos/kick_assembler +14 -0
- data/lib/rouge/demos/pdf +29 -0
- data/lib/rouge/demos/thrift +15 -0
- data/lib/rouge/demos/veryl +24 -0
- data/lib/rouge/eager.rb +3 -0
- data/lib/rouge/formatters/html.rb +8 -1
- data/lib/rouge/formatters/html_debug.rb +16 -0
- data/lib/rouge/formatters/html_legacy.rb +15 -1
- data/lib/rouge/formatters/html_legacy_table.rb +57 -0
- data/lib/rouge/formatters/html_line_highlighter.rb +11 -4
- data/lib/rouge/formatters/html_line_table.rb +8 -3
- data/lib/rouge/formatters/html_linewise.rb +11 -2
- data/lib/rouge/formatters/html_pygments.rb +6 -1
- data/lib/rouge/formatters/html_table.rb +47 -21
- data/lib/rouge/formatters/terminal256.rb +3 -3
- data/lib/rouge/formatters/tex.rb +1 -1
- data/lib/rouge/guesser.rb +1 -1
- data/lib/rouge/guessers/disambiguation.rb +2 -2
- data/lib/rouge/guessers/glob_mapping.rb +2 -2
- data/lib/rouge/guessers/modeline.rb +2 -2
- data/lib/rouge/lexer.rb +40 -21
- data/lib/rouge/lexers/abap/builtins.rb +187 -0
- data/lib/rouge/lexers/abap.rb +70 -178
- data/lib/rouge/lexers/ada.rb +1 -1
- data/lib/rouge/lexers/apache/keywords.rb +3 -11
- data/lib/rouge/lexers/apache.rb +25 -24
- data/lib/rouge/lexers/apex.rb +2 -2
- data/lib/rouge/lexers/apiblueprint.rb +2 -2
- data/lib/rouge/lexers/bicep.rb +2 -2
- data/lib/rouge/lexers/biml.rb +36 -9
- data/lib/rouge/lexers/brightscript.rb +3 -4
- data/lib/rouge/lexers/c.rb +9 -5
- data/lib/rouge/lexers/console.rb +11 -5
- data/lib/rouge/lexers/cpp.rb +10 -12
- data/lib/rouge/lexers/crystal.rb +1 -1
- data/lib/rouge/lexers/css.rb +21 -2
- data/lib/rouge/lexers/cuda.rb +4 -4
- data/lib/rouge/lexers/cython.rb +26 -50
- data/lib/rouge/lexers/dafny.rb +1 -1
- data/lib/rouge/lexers/dart.rb +2 -0
- data/lib/rouge/lexers/datastudio.rb +1 -1
- data/lib/rouge/lexers/digdag.rb +2 -3
- data/lib/rouge/lexers/dylan.rb +109 -0
- data/lib/rouge/lexers/ecl.rb +3 -3
- data/lib/rouge/lexers/elixir.rb +14 -9
- data/lib/rouge/lexers/escape.rb +1 -1
- data/lib/rouge/lexers/factor.rb +1 -1
- data/lib/rouge/lexers/freefem.rb +2 -2
- data/lib/rouge/lexers/ghc_cmm.rb +1 -1
- data/lib/rouge/lexers/ghc_core.rb +1 -1
- data/lib/rouge/lexers/gherkin/keywords.rb +10 -6
- data/lib/rouge/lexers/gherkin.rb +28 -26
- data/lib/rouge/lexers/gjs.rb +2 -2
- data/lib/rouge/lexers/glsl/builtins.rb +17 -0
- data/lib/rouge/lexers/glsl.rb +50 -113
- data/lib/rouge/lexers/go.rb +1 -1
- data/lib/rouge/lexers/gradle.rb +2 -2
- data/lib/rouge/lexers/groovy.rb +6 -0
- data/lib/rouge/lexers/gts.rb +2 -2
- data/lib/rouge/lexers/hack.rb +4 -6
- data/lib/rouge/lexers/haxe.rb +2 -2
- data/lib/rouge/lexers/hlsl.rb +6 -6
- data/lib/rouge/lexers/hocon.rb +2 -2
- data/lib/rouge/lexers/hql.rb +15 -19
- data/lib/rouge/lexers/idris.rb +1 -1
- data/lib/rouge/lexers/igorpro/builtins.rb +1530 -0
- data/lib/rouge/lexers/igorpro.rb +49 -520
- data/lib/rouge/lexers/irb.rb +3 -3
- data/lib/rouge/lexers/isbl.rb +7 -43
- data/lib/rouge/lexers/j.rb +1 -1
- data/lib/rouge/lexers/json5.rb +2 -2
- data/lib/rouge/lexers/json_doc.rb +2 -2
- data/lib/rouge/lexers/jsp.rb +119 -119
- data/lib/rouge/lexers/jsx.rb +2 -2
- data/lib/rouge/lexers/kick_assembler.rb +100 -0
- data/lib/rouge/lexers/kotlin.rb +5 -0
- data/lib/rouge/lexers/lasso/keywords.rb +6 -6
- data/lib/rouge/lexers/lasso.rb +9 -11
- data/lib/rouge/lexers/liquid.rb +5 -6
- data/lib/rouge/lexers/llvm/keywords.rb +3 -12
- data/lib/rouge/lexers/llvm.rb +5 -16
- data/lib/rouge/lexers/lua/keywords.rb +11 -13
- data/lib/rouge/lexers/lua.rb +8 -7
- data/lib/rouge/lexers/lutin.rb +5 -4
- data/lib/rouge/lexers/m68k.rb +3 -3
- data/lib/rouge/lexers/mason.rb +110 -110
- data/lib/rouge/lexers/mathematica/keywords.rb +1 -3
- data/lib/rouge/lexers/mathematica.rb +6 -7
- data/lib/rouge/lexers/matlab/keywords.rb +2 -2
- data/lib/rouge/lexers/matlab.rb +5 -5
- data/lib/rouge/lexers/meson.rb +1 -1
- data/lib/rouge/lexers/mojo.rb +6 -2
- data/lib/rouge/lexers/moonscript.rb +19 -17
- data/lib/rouge/lexers/nesasm.rb +6 -6
- data/lib/rouge/lexers/nial.rb +7 -8
- data/lib/rouge/lexers/nim.rb +3 -3
- data/lib/rouge/lexers/nix.rb +10 -8
- data/lib/rouge/lexers/objective_c.rb +3 -3
- data/lib/rouge/lexers/objective_cpp.rb +3 -2
- data/lib/rouge/lexers/ocaml.rb +2 -2
- data/lib/rouge/lexers/openedge.rb +9 -9
- data/lib/rouge/lexers/pdf.rb +109 -0
- data/lib/rouge/lexers/php/keywords.rb +136 -138
- data/lib/rouge/lexers/php.rb +58 -9
- data/lib/rouge/lexers/plsql.rb +8 -9
- data/lib/rouge/lexers/postscript.rb +1 -1
- data/lib/rouge/lexers/powershell.rb +1 -1
- data/lib/rouge/lexers/python.rb +110 -65
- data/lib/rouge/lexers/qml.rb +2 -2
- data/lib/rouge/lexers/reasonml.rb +2 -2
- data/lib/rouge/lexers/rego.rb +53 -53
- data/lib/rouge/lexers/rescript.rb +2 -2
- data/lib/rouge/lexers/robot_framework.rb +12 -12
- data/lib/rouge/lexers/{coq.rb → rocq.rb} +15 -6
- data/lib/rouge/lexers/ruby.rb +33 -7
- data/lib/rouge/lexers/rust.rb +1 -0
- data/lib/rouge/lexers/sas.rb +164 -165
- data/lib/rouge/lexers/sass/common.rb +1 -1
- data/lib/rouge/lexers/sass.rb +2 -2
- data/lib/rouge/lexers/scss.rb +2 -2
- data/lib/rouge/lexers/sed.rb +1 -1
- data/lib/rouge/lexers/shell.rb +5 -5
- data/lib/rouge/lexers/slice.rb +2 -2
- data/lib/rouge/lexers/sparql.rb +1 -1
- data/lib/rouge/lexers/sqf/keywords.rb +5 -3
- data/lib/rouge/lexers/sqf.rb +3 -4
- data/lib/rouge/lexers/stan.rb +9 -15
- data/lib/rouge/lexers/svelte.rb +2 -2
- data/lib/rouge/lexers/swift.rb +2 -2
- data/lib/rouge/lexers/tcl.rb +1 -1
- data/lib/rouge/lexers/terraform.rb +2 -2
- data/lib/rouge/lexers/thrift.rb +120 -0
- data/lib/rouge/lexers/tsx.rb +3 -3
- data/lib/rouge/lexers/ttcn3.rb +1 -1
- data/lib/rouge/lexers/twig.rb +2 -2
- data/lib/rouge/lexers/typescript.rb +3 -3
- data/lib/rouge/lexers/varnish.rb +8 -8
- data/lib/rouge/lexers/veryl.rb +109 -0
- data/lib/rouge/lexers/viml/keywords.rb +5 -7
- data/lib/rouge/lexers/viml.rb +8 -10
- data/lib/rouge/lexers/vue.rb +2 -2
- data/lib/rouge/lexers/xquery.rb +2 -1
- data/lib/rouge/lexers/yaml.rb +13 -1
- data/lib/rouge/lexers/yang.rb +42 -74
- data/lib/rouge/lexers/zig.rb +10 -10
- data/lib/rouge/plugins/redcarpet.rb +3 -2
- data/lib/rouge/regex_lexer.rb +25 -14
- data/lib/rouge/themes/gruvbox.rb +3 -0
- data/lib/rouge/token.rb +1 -1
- data/lib/rouge/util.rb +1 -1
- data/lib/rouge/version.rb +1 -1
- data/lib/rouge.rb +70 -59
- data/lib/rubocop/cop/rouge/no_building_alternation_pattern_in_regexp.rb +71 -0
- data/lib/rubocop/cop/rouge/no_huge_collections.rb +37 -0
- data/rouge.gemspec +8 -5
- metadata +40 -9
- data/lib/rouge/lexers/isbl/builtins.rb +0 -17
- data/lib/rouge/lexers/matlab/builtins.rb +0 -11
- /data/lib/rouge/demos/{coq → rocq} +0 -0
data/lib/rouge/lexers/isbl.rb
CHANGED
|
@@ -9,23 +9,6 @@ module Rouge
|
|
|
9
9
|
tag 'isbl'
|
|
10
10
|
filenames '*.isbl'
|
|
11
11
|
|
|
12
|
-
def self.builtins
|
|
13
|
-
Kernel::load File.join(Lexers::BASE_DIR, 'isbl/builtins.rb')
|
|
14
|
-
self.builtins
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def self.constants
|
|
18
|
-
@constants ||= self.builtins["const"].merge(self.builtins["enum"]).collect!(&:downcase)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def self.interfaces
|
|
22
|
-
@interfaces ||= self.builtins["interface"].collect!(&:downcase)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.globals
|
|
26
|
-
@globals ||= self.builtins["global"].collect!(&:downcase)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
12
|
def self.keywords
|
|
30
13
|
@keywords = Set.new %w(
|
|
31
14
|
and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile
|
|
@@ -41,30 +24,16 @@ module Rouge
|
|
|
41
24
|
|
|
42
25
|
state :dotted do
|
|
43
26
|
mixin :whitespace
|
|
44
|
-
rule %r
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
token Name::Builtin
|
|
48
|
-
elsif in_state? :type
|
|
49
|
-
token Keyword::Type
|
|
50
|
-
else
|
|
51
|
-
token Name
|
|
52
|
-
end
|
|
27
|
+
rule %r/\p{Alnum}+/i do |m|
|
|
28
|
+
token(in_state?(:type) ? Keyword::Type : Name)
|
|
29
|
+
|
|
53
30
|
pop!
|
|
54
31
|
end
|
|
55
32
|
end
|
|
56
33
|
|
|
57
34
|
state :type do
|
|
58
35
|
mixin :whitespace
|
|
59
|
-
rule %r
|
|
60
|
-
name = m[0]
|
|
61
|
-
if self.class.interfaces.include? name.downcase
|
|
62
|
-
token Keyword::Type
|
|
63
|
-
else
|
|
64
|
-
token Name
|
|
65
|
-
end
|
|
66
|
-
pop!
|
|
67
|
-
end
|
|
36
|
+
rule %r/\p{Word}+/, Name, :pop!
|
|
68
37
|
rule %r/[.]/, Punctuation, :dotted
|
|
69
38
|
rule(//) { pop! }
|
|
70
39
|
end
|
|
@@ -75,15 +44,10 @@ module Rouge
|
|
|
75
44
|
rule %r/[.]/, Punctuation, :dotted
|
|
76
45
|
rule %r/[\[\]();]/, Punctuation
|
|
77
46
|
rule %r([&*+=<>/-]), Operator
|
|
78
|
-
rule %r
|
|
79
|
-
rule %r/[
|
|
80
|
-
|
|
81
|
-
if self.class.keywords.include? name.downcase
|
|
47
|
+
rule %r/[\p{Alpha}_!]\p{Word}*(?=[(])/i, Name::Function
|
|
48
|
+
rule %r/[\p{Alpha}_!]\p{Word}*/i do |m|
|
|
49
|
+
if self.class.keywords.include?(m[0].downcase)
|
|
82
50
|
token Keyword
|
|
83
|
-
elsif self.class.constants.include? name.downcase
|
|
84
|
-
token Name::Builtin
|
|
85
|
-
elsif self.class.globals.include? name.downcase
|
|
86
|
-
token Name::Variable::Global
|
|
87
51
|
else
|
|
88
52
|
token Name::Variable
|
|
89
53
|
end
|
data/lib/rouge/lexers/j.rb
CHANGED
data/lib/rouge/lexers/json5.rb
CHANGED
data/lib/rouge/lexers/jsp.rb
CHANGED
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*- #
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
module Rouge
|
|
5
|
-
module Lexers
|
|
6
|
-
class JSP < TemplateLexer
|
|
7
|
-
desc 'JSP'
|
|
8
|
-
tag 'jsp'
|
|
9
|
-
filenames '*.jsp'
|
|
10
|
-
mimetypes 'text/x-jsp', 'application/x-jsp'
|
|
11
|
-
|
|
12
|
-
def initialize(*)
|
|
13
|
-
super
|
|
14
|
-
@java = Java.new
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
directives = %w(page include taglib)
|
|
18
|
-
actions = %w(scriptlet declaration expression)
|
|
19
|
-
|
|
20
|
-
state :root do
|
|
21
|
-
|
|
22
|
-
rule %r/<%--/, Comment, :jsp_comment
|
|
23
|
-
|
|
24
|
-
rule %r/<%@\s*(#{directives.join('|')})\s*/, Name::Tag, :jsp_directive
|
|
25
|
-
|
|
26
|
-
rule %r/<jsp:directive\.(#{directives.join('|')})/, Name::Tag, :jsp_directive2
|
|
27
|
-
|
|
28
|
-
rule %r/<jsp:(#{actions.join('|')})>/, Name::Tag, :jsp_expression
|
|
29
|
-
|
|
30
|
-
# start of tag, e.g. <c:if>
|
|
31
|
-
rule %r/<[a-zA-Z]*:[a-zA-Z]*\s*/, Name::Tag, :jsp_tag
|
|
32
|
-
|
|
33
|
-
# end of tag, e.g. </c:if>
|
|
34
|
-
rule %r(</[a-zA-Z]*:[a-zA-Z]*>), Name::Tag
|
|
35
|
-
|
|
36
|
-
rule %r/<%[!=]?/, Name::Tag, :jsp_expression2
|
|
37
|
-
|
|
38
|
-
# fallback to HTML
|
|
39
|
-
rule(/(.+?)(?=(<%|<\/?[a-zA-Z]*:))/m) { delegate parent }
|
|
40
|
-
rule(/.+/m) { delegate parent }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
state :jsp_comment do
|
|
44
|
-
rule %r/(--%>)/, Comment, :pop!
|
|
45
|
-
rule %r/./m, Comment
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
state :jsp_directive do
|
|
49
|
-
rule %r/(%>)/, Name::Tag, :pop!
|
|
50
|
-
mixin :attributes
|
|
51
|
-
rule(/(.+?)(?=%>)/m) { delegate parent }
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
state :jsp_directive2 do
|
|
55
|
-
rule %r!(/>)!, Name::Tag, :pop!
|
|
56
|
-
mixin :attributes
|
|
57
|
-
rule(/(.+?)(?=\/>)/m) { delegate parent }
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
state :jsp_expression do
|
|
61
|
-
rule %r/<\/jsp:(#{actions.join('|')})>/, Name::Tag, :pop!
|
|
62
|
-
mixin :attributes
|
|
63
|
-
rule(/[^<\/]+/) { delegate @java }
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
state :jsp_expression2 do
|
|
67
|
-
rule %r/%>/, Name::Tag, :pop!
|
|
68
|
-
rule(/[^%>]+/) { delegate @java }
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
state :jsp_tag do
|
|
72
|
-
rule %r/\/?>/, Name::Tag, :pop!
|
|
73
|
-
mixin :attributes
|
|
74
|
-
rule(/(.+?)(?=\/?>)/m) { delegate parent }
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
state :attributes do
|
|
78
|
-
rule %r/\s*[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
state :attr do
|
|
82
|
-
rule %r/"/ do
|
|
83
|
-
token Str
|
|
84
|
-
goto :double_quotes
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
rule %r/'/ do
|
|
88
|
-
token Str
|
|
89
|
-
goto :single_quotes
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
rule %r/[^\s>]+/, Str, :pop!
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
state :double_quotes do
|
|
96
|
-
rule %r/"/, Str, :pop!
|
|
97
|
-
rule %r/\$\{/, Str::Interpol, :jsp_interp
|
|
98
|
-
rule %r/[^"]+/, Str
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
state :single_quotes do
|
|
102
|
-
rule %r/'/, Str, :pop!
|
|
103
|
-
rule %r/\$\{/, Str::Interpol, :jsp_interp
|
|
104
|
-
rule %r/[^']+/, Str
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
state :jsp_interp do
|
|
108
|
-
rule %r/\}/, Str::Interpol, :pop!
|
|
109
|
-
rule %r/'/, Literal, :jsp_interp_literal_start
|
|
110
|
-
rule(/[^'\}]+/) { delegate @java }
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
state :jsp_interp_literal_start do
|
|
114
|
-
rule %r/'/, Literal, :pop!
|
|
115
|
-
rule %r/[^']+/, Literal
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class JSP < TemplateLexer
|
|
7
|
+
desc 'JSP'
|
|
8
|
+
tag 'jsp'
|
|
9
|
+
filenames '*.jsp'
|
|
10
|
+
mimetypes 'text/x-jsp', 'application/x-jsp'
|
|
11
|
+
|
|
12
|
+
def initialize(*)
|
|
13
|
+
super
|
|
14
|
+
@java = Java.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
directives = %w(page include taglib)
|
|
18
|
+
actions = %w(scriptlet declaration expression)
|
|
19
|
+
|
|
20
|
+
state :root do
|
|
21
|
+
|
|
22
|
+
rule %r/<%--/, Comment, :jsp_comment
|
|
23
|
+
|
|
24
|
+
rule %r/<%@\s*(#{directives.join('|')})\s*/, Name::Tag, :jsp_directive
|
|
25
|
+
|
|
26
|
+
rule %r/<jsp:directive\.(#{directives.join('|')})/, Name::Tag, :jsp_directive2
|
|
27
|
+
|
|
28
|
+
rule %r/<jsp:(#{actions.join('|')})>/, Name::Tag, :jsp_expression
|
|
29
|
+
|
|
30
|
+
# start of tag, e.g. <c:if>
|
|
31
|
+
rule %r/<[a-zA-Z]*:[a-zA-Z]*\s*/, Name::Tag, :jsp_tag
|
|
32
|
+
|
|
33
|
+
# end of tag, e.g. </c:if>
|
|
34
|
+
rule %r(</[a-zA-Z]*:[a-zA-Z]*>), Name::Tag
|
|
35
|
+
|
|
36
|
+
rule %r/<%[!=]?/, Name::Tag, :jsp_expression2
|
|
37
|
+
|
|
38
|
+
# fallback to HTML
|
|
39
|
+
rule(/(.+?)(?=(<%|<\/?[a-zA-Z]*:))/m) { delegate parent }
|
|
40
|
+
rule(/.+/m) { delegate parent }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
state :jsp_comment do
|
|
44
|
+
rule %r/(--%>)/, Comment, :pop!
|
|
45
|
+
rule %r/./m, Comment
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
state :jsp_directive do
|
|
49
|
+
rule %r/(%>)/, Name::Tag, :pop!
|
|
50
|
+
mixin :attributes
|
|
51
|
+
rule(/(.+?)(?=%>)/m) { delegate parent }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
state :jsp_directive2 do
|
|
55
|
+
rule %r!(/>)!, Name::Tag, :pop!
|
|
56
|
+
mixin :attributes
|
|
57
|
+
rule(/(.+?)(?=\/>)/m) { delegate parent }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
state :jsp_expression do
|
|
61
|
+
rule %r/<\/jsp:(#{actions.join('|')})>/, Name::Tag, :pop!
|
|
62
|
+
mixin :attributes
|
|
63
|
+
rule(/[^<\/]+/) { delegate @java }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
state :jsp_expression2 do
|
|
67
|
+
rule %r/%>/, Name::Tag, :pop!
|
|
68
|
+
rule(/[^%>]+/) { delegate @java }
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
state :jsp_tag do
|
|
72
|
+
rule %r/\/?>/, Name::Tag, :pop!
|
|
73
|
+
mixin :attributes
|
|
74
|
+
rule(/(.+?)(?=\/?>)/m) { delegate parent }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
state :attributes do
|
|
78
|
+
rule %r/\s*[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
state :attr do
|
|
82
|
+
rule %r/"/ do
|
|
83
|
+
token Str
|
|
84
|
+
goto :double_quotes
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
rule %r/'/ do
|
|
88
|
+
token Str
|
|
89
|
+
goto :single_quotes
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
rule %r/[^\s>]+/, Str, :pop!
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
state :double_quotes do
|
|
96
|
+
rule %r/"/, Str, :pop!
|
|
97
|
+
rule %r/\$\{/, Str::Interpol, :jsp_interp
|
|
98
|
+
rule %r/[^"]+/, Str
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
state :single_quotes do
|
|
102
|
+
rule %r/'/, Str, :pop!
|
|
103
|
+
rule %r/\$\{/, Str::Interpol, :jsp_interp
|
|
104
|
+
rule %r/[^']+/, Str
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
state :jsp_interp do
|
|
108
|
+
rule %r/\}/, Str::Interpol, :pop!
|
|
109
|
+
rule %r/'/, Literal, :jsp_interp_literal_start
|
|
110
|
+
rule(/[^'\}]+/) { delegate @java }
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
state :jsp_interp_literal_start do
|
|
114
|
+
rule %r/'/, Literal, :pop!
|
|
115
|
+
rule %r/[^']+/, Literal
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
data/lib/rouge/lexers/jsx.rb
CHANGED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
|
|
7
|
+
# Find the reference for the KickAssembler syntax at
|
|
8
|
+
# https://www.theweb.dk/KickAssembler/KickAssembler.pdf
|
|
9
|
+
class KickAssembler < RegexLexer
|
|
10
|
+
title 'KickAssembler'
|
|
11
|
+
desc 'Kick assembler NMOS 65xx syntax'
|
|
12
|
+
tag 'kick_assembler'
|
|
13
|
+
aliases 'kickass'
|
|
14
|
+
filenames '*.asm'
|
|
15
|
+
mimetypes 'text/x-asm', 'text/x-assembly'
|
|
16
|
+
|
|
17
|
+
def self.mnemonics
|
|
18
|
+
@mnemonics ||= Set.new %w(
|
|
19
|
+
lda ldx ldy sta stx sty tax tay txa tya tsx txs pha php pla plp
|
|
20
|
+
and eor ora bit adc sbc cmp cpx cpy inc inx iny dec dex dey asl
|
|
21
|
+
lsr rol ror jmp jsr rts rti bcc bcs beq bmi bne bpl bvc bvs
|
|
22
|
+
clc cld cli clv sec sed sei brk nop
|
|
23
|
+
phx plx phy ply
|
|
24
|
+
stz trb tsb bra
|
|
25
|
+
neg asr dea ina
|
|
26
|
+
ahx alr anc anc2 arr axs dcp isc las lax rla rra sax shx shy slo sre tas xaa
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.type_directives
|
|
31
|
+
@type_directives ||= Set.new %w(
|
|
32
|
+
.align .assert .asserterror .break .by .byte .cpu
|
|
33
|
+
.disk .dword .dw .encoding .enum .error .errorif .eval
|
|
34
|
+
.file .fill .fillword .for .function .import .importonce
|
|
35
|
+
.label .lohifill .macro .memblock .modify .namespace
|
|
36
|
+
.pc .print .printnow .pseudocommand .pseudopc .return
|
|
37
|
+
.segment .segmentdef .struct .text .var .word .while .zp
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.preprocessor_directives
|
|
42
|
+
@preprocessor_directives ||= Set.new %w(
|
|
43
|
+
define undef import importonce importif
|
|
44
|
+
if endif else elif
|
|
45
|
+
print printnow error asserterror
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
state :root do
|
|
50
|
+
rule %r(//.*?$), Comment::Single
|
|
51
|
+
|
|
52
|
+
rule %r/"(?:[^"\\]|\\.)*"/, Literal::String
|
|
53
|
+
rule %r/'.'/, Literal::String::Char
|
|
54
|
+
|
|
55
|
+
rule %r/\#?\%[0-1]+/, Literal::Number # Binary
|
|
56
|
+
rule %r/\#?\$[0-9a-fA-F]+/, Literal::Number # Hexa
|
|
57
|
+
rule %r/\#?\d+/, Literal::Number # Decimal
|
|
58
|
+
|
|
59
|
+
rule %r/[+\-*\/=<>!]/, Operator
|
|
60
|
+
|
|
61
|
+
rule %r/#\w+/i do |m|
|
|
62
|
+
directive = m[0][1..-1].downcase
|
|
63
|
+
if self.class.preprocessor_directives.include?(directive)
|
|
64
|
+
token Keyword
|
|
65
|
+
else
|
|
66
|
+
token Punctuation
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
rule %r/#/, Punctuation
|
|
71
|
+
rule %r/[(){},]/, Punctuation
|
|
72
|
+
|
|
73
|
+
rule %r/[a-z$._?][\w$.?#@~]*:/i, Name::Label
|
|
74
|
+
|
|
75
|
+
rule %r/\.\w+/i do |m|
|
|
76
|
+
if m[0] == '.const'
|
|
77
|
+
token Keyword::Constant
|
|
78
|
+
elsif m[0] =~ /^\.(for|while|macro|function|pseudopc|pseudocommand)$/io
|
|
79
|
+
token Keyword::Reserved
|
|
80
|
+
elsif self.class.type_directives.include?(m[0].downcase)
|
|
81
|
+
token Keyword::Declaration
|
|
82
|
+
else
|
|
83
|
+
token Keyword
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
rule %r/\b\w+\b/i do |m|
|
|
88
|
+
word = m[0].downcase
|
|
89
|
+
if self.class.mnemonics.include?(word)
|
|
90
|
+
token Keyword
|
|
91
|
+
else
|
|
92
|
+
token Name
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
rule %r/[ \t\r\n]+/, Text
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
data/lib/rouge/lexers/kotlin.rb
CHANGED
|
@@ -24,6 +24,8 @@ module Rouge
|
|
|
24
24
|
while yield
|
|
25
25
|
)
|
|
26
26
|
|
|
27
|
+
use_site_targets = %w(file property field get set receiver param setparam delegate)
|
|
28
|
+
|
|
27
29
|
name_chars = %r'[-\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}\p{Nd}\p{Pc}\p{Cf}\p{Mn}\p{Mc}]*'
|
|
28
30
|
|
|
29
31
|
class_name = %r'`?[\p{Lu}]#{name_chars}`?'
|
|
@@ -85,6 +87,9 @@ module Rouge
|
|
|
85
87
|
rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
|
|
86
88
|
rule %r"'\\.'|'[^\\]'", Str::Char
|
|
87
89
|
rule %r'(@#{class_name})', Name::Decorator
|
|
90
|
+
rule %r'(@)(#{use_site_targets.join('|')})(:)' do
|
|
91
|
+
groups Name::Decorator, Keyword, Punctuation
|
|
92
|
+
end
|
|
88
93
|
rule %r'(#{class_name})(<)' do
|
|
89
94
|
groups Name::Class, Punctuation
|
|
90
95
|
push :generic_parameters
|