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/cython.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
+
require_relative 'python'
|
|
5
|
+
|
|
4
6
|
module Rouge
|
|
5
7
|
module Lexers
|
|
6
|
-
load_lexer 'python.rb'
|
|
7
|
-
|
|
8
8
|
class Cython < Python
|
|
9
9
|
title "Cython"
|
|
10
10
|
desc "Cython and Pyrex source code (cython.org)"
|
|
@@ -25,13 +25,20 @@ module Rouge
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def self.c_keywords
|
|
28
|
-
@
|
|
28
|
+
@c_keywords ||= Set.new %w(
|
|
29
29
|
public readonly extern api inline enum union
|
|
30
30
|
)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
def self.builtins
|
|
34
|
+
@builtins ||= super + %w(python_call)
|
|
35
|
+
end
|
|
36
|
+
|
|
33
37
|
identifier = /[a-z_]\w*/i
|
|
34
|
-
|
|
38
|
+
|
|
39
|
+
prepend :from_import do
|
|
40
|
+
rule %r/cimport\b/, Keyword::Namespace, :pop!
|
|
41
|
+
end
|
|
35
42
|
|
|
36
43
|
prepend :root do
|
|
37
44
|
rule %r/cp?def|ctypedef/ do
|
|
@@ -40,54 +47,16 @@ module Rouge
|
|
|
40
47
|
push :c_start
|
|
41
48
|
end
|
|
42
49
|
|
|
43
|
-
rule %r/
|
|
44
|
-
groups Keyword::Namespace,
|
|
45
|
-
Text,
|
|
46
|
-
Name::Namespace,
|
|
47
|
-
Text,
|
|
48
|
-
Keyword::Namespace
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
rule %r/(cimport)(\s+)(#{dotted_identifier})/ do
|
|
52
|
-
groups Keyword::Namespace, Text, Name::Namespace
|
|
53
|
-
end
|
|
50
|
+
rule %r/cimport\b/, Keyword::Namespace, :import
|
|
54
51
|
|
|
55
52
|
rule %r/(struct)((?:\\\s|\s)+)/ do
|
|
56
53
|
groups Keyword, Text
|
|
57
54
|
push :classname
|
|
58
55
|
end
|
|
59
56
|
|
|
60
|
-
mixin :func_call_fix
|
|
61
|
-
|
|
62
57
|
rule %r/[(,]/, Punctuation, :c_start
|
|
63
58
|
end
|
|
64
59
|
|
|
65
|
-
prepend :classname do
|
|
66
|
-
rule %r/(?:\\\s|\s)+/, Text
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
prepend :funcname do
|
|
70
|
-
rule %r/(?:\\\s|\s)+/, Text
|
|
71
|
-
end
|
|
72
|
-
# This is a fix for the way that function calls are lexed in the Python
|
|
73
|
-
# lexer. This should be moved to the Python lexer once confirmed that it
|
|
74
|
-
# does not cause any regressions.
|
|
75
|
-
state :func_call_fix do
|
|
76
|
-
rule %r/#{identifier}(?=\()/ do |m|
|
|
77
|
-
if self.class.keywords.include? m[0]
|
|
78
|
-
token Keyword
|
|
79
|
-
elsif self.class.exceptions.include? m[0]
|
|
80
|
-
token Name::Builtin
|
|
81
|
-
elsif self.class.builtins.include? m[0]
|
|
82
|
-
token Name::Builtin
|
|
83
|
-
elsif self.class.builtins_pseudo.include? m[0]
|
|
84
|
-
token Name::Builtin::Pseudo
|
|
85
|
-
else
|
|
86
|
-
token Name::Function
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
60
|
# The Cython lexer adds three states to those already in the Python lexer.
|
|
92
61
|
# Calls to `cdef`, `cpdef` and `ctypedef` move the lexer into the :c_start
|
|
93
62
|
# state. The primary purpose of this state is to highlight datatypes. Once
|
|
@@ -97,7 +66,7 @@ module Rouge
|
|
|
97
66
|
# have moved out of a C block.
|
|
98
67
|
|
|
99
68
|
state :c_start do
|
|
100
|
-
|
|
69
|
+
mixin :inline_whitespace
|
|
101
70
|
|
|
102
71
|
rule %r/cp?def|ctypedef/, Keyword
|
|
103
72
|
|
|
@@ -106,16 +75,16 @@ module Rouge
|
|
|
106
75
|
# This rule matches identifiers that could be type declarations. The
|
|
107
76
|
# lookahead matches (1) pointers, (2) arrays and (3) variable names.
|
|
108
77
|
rule %r/#{identifier}(?=(?:\*+)|(?:[ \t]*\[)|(?:[ \t]+\w))/ do |m|
|
|
109
|
-
if self.class.keywords.include?
|
|
78
|
+
if self.class.keywords.include?(m[0])
|
|
110
79
|
token Keyword
|
|
111
80
|
pop!
|
|
112
|
-
elsif
|
|
81
|
+
elsif m[0] == 'def'
|
|
113
82
|
token Keyword
|
|
114
83
|
goto :funcname
|
|
115
|
-
elsif %w(struct class).include?
|
|
116
|
-
token Keyword
|
|
84
|
+
elsif %w(struct class).include?(m[0])
|
|
85
|
+
token Keyword
|
|
117
86
|
goto :classname
|
|
118
|
-
elsif self.class.c_keywords.include?
|
|
87
|
+
elsif self.class.c_keywords.include?(m[0])
|
|
119
88
|
token Keyword::Reserved
|
|
120
89
|
else
|
|
121
90
|
token Keyword::Type
|
|
@@ -144,7 +113,14 @@ module Rouge
|
|
|
144
113
|
end
|
|
145
114
|
end
|
|
146
115
|
|
|
147
|
-
rule(//)
|
|
116
|
+
rule(//) do
|
|
117
|
+
@indentation = nil
|
|
118
|
+
# pop c_indent
|
|
119
|
+
pop!
|
|
120
|
+
|
|
121
|
+
# replace :c_definitions with :newline
|
|
122
|
+
goto :newline
|
|
123
|
+
end
|
|
148
124
|
end
|
|
149
125
|
end
|
|
150
126
|
end
|
data/lib/rouge/lexers/dafny.rb
CHANGED
|
@@ -58,7 +58,7 @@ module Rouge
|
|
|
58
58
|
schar = /(?:[^\\"\n\r]|\\["'ntr\\0])/
|
|
59
59
|
uchar = /(?:\\u#{hex_digit}{4})/
|
|
60
60
|
|
|
61
|
-
## IMPORTANT: Rules are ordered, which allows later rules to be
|
|
61
|
+
## IMPORTANT: Rules are ordered, which allows later rules to be
|
|
62
62
|
## simpler than they would otherwise be
|
|
63
63
|
state :root do
|
|
64
64
|
rule %r(/\*), Comment::Multiline, :comment
|
data/lib/rouge/lexers/dart.rb
CHANGED
|
@@ -45,6 +45,8 @@ module Rouge
|
|
|
45
45
|
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
46
46
|
rule %r/"/, Str, :dqs
|
|
47
47
|
rule %r/'/, Str, :sqs
|
|
48
|
+
rule %r/r""".*?"""/m, Str::Other
|
|
49
|
+
rule %r/r'''.*?'''/m, Str::Other
|
|
48
50
|
rule %r/r"[^"]*"/, Str::Other
|
|
49
51
|
rule %r/r'[^']*'/, Str::Other
|
|
50
52
|
rule %r/##{id}*/i, Str::Symbol
|
data/lib/rouge/lexers/digdag.rb
CHANGED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Dylan < RegexLexer
|
|
7
|
+
title 'Dylan'
|
|
8
|
+
desc 'Dylan Language (https://opendylan.org)'
|
|
9
|
+
tag 'dylan'
|
|
10
|
+
filenames '*.dylan'
|
|
11
|
+
|
|
12
|
+
# Definitions from the Dylan Reference Manual
|
|
13
|
+
# see:
|
|
14
|
+
# https://opendylan.org/books/drm/Modules
|
|
15
|
+
# https://opendylan.org/books/drm/Conditional_Execution
|
|
16
|
+
# https://opendylan.org/books/drm/Statement_Macros
|
|
17
|
+
reserved_words = Set.new %w(
|
|
18
|
+
begin block case class constant create define domain else
|
|
19
|
+
end exception for function generic handler if let library local
|
|
20
|
+
macro method module otherwise select unless until variable while
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
hash_word = Set.new %w(#t #f #next #rest #key #all-keys #include)
|
|
24
|
+
operators = Set.new %w(+ - * / ^ = == ~ ~= ~== < <= > >= & | :=)
|
|
25
|
+
|
|
26
|
+
state :root do
|
|
27
|
+
rule %r/^[\w.-]+:/, Comment::Preproc, :header
|
|
28
|
+
rule %r/\s+/, Text::Whitespace
|
|
29
|
+
rule(%r//) { goto :main }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# see https://opendylan.org/books/drm/Dylan_Interchange_Format
|
|
33
|
+
state :header do
|
|
34
|
+
rule(/.*?$/) { token Comment; goto :header_value }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
state :header_value do
|
|
38
|
+
# line continuations are defined as any line that starts with whitespace
|
|
39
|
+
rule %r/^[ \t]+.*?$/, Comment
|
|
40
|
+
rule %r/\n+/, Comment
|
|
41
|
+
rule(//) { pop! }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
state :main do
|
|
45
|
+
# Comments
|
|
46
|
+
rule %r(//.*?$), Comment::Single
|
|
47
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
48
|
+
rule %r/\s+/, Text::Whitespace
|
|
49
|
+
|
|
50
|
+
# Keywords
|
|
51
|
+
rule %r/\w+/ do |m|
|
|
52
|
+
if reserved_words.include?(m[0])
|
|
53
|
+
token Keyword
|
|
54
|
+
elsif hash_word.include?(m[0])
|
|
55
|
+
token Keyword::Constant
|
|
56
|
+
else
|
|
57
|
+
fallthrough!
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
rule %r/#(t|f|next|rest|key|all-keys|include)\b/, Keyword::Constant
|
|
62
|
+
|
|
63
|
+
# Numbers
|
|
64
|
+
rule %r([+-]?\d+/\d+), Literal::Number::Other
|
|
65
|
+
rule %r/[+-]?\d*[.]\d+(?:e[+-]?\d+)?/i, Literal::Number::Float
|
|
66
|
+
rule %r/[+-]?\d+[.]\d*(?:e[+-]?\d+)?/i, Literal::Number::Float
|
|
67
|
+
rule %r/[+-]\d+(?:e[+-]?\d+)?/i, Literal::Number::Float
|
|
68
|
+
rule %r/#b[01]+/, Literal::Number::Bin
|
|
69
|
+
rule %r/#o[0-7]+/, Literal::Number::Oct
|
|
70
|
+
rule %r/[+-]?[0-9]+/, Literal::Number::Integer
|
|
71
|
+
rule %r/#x[0-9a-f]+/i, Literal::Number::Hex
|
|
72
|
+
|
|
73
|
+
# Operators and punctuation
|
|
74
|
+
rule %r/::|=>|#[(\[#]|[.][.][.]|[(),.;\[\]{}=?]/, Punctuation
|
|
75
|
+
|
|
76
|
+
word_re = %r([\w!&*<>|^\$%@][\w!&*<>|^\$%@=/?~+-]*|[+-~])
|
|
77
|
+
|
|
78
|
+
rule %r/\\#{word_re}/, Str::Symbol
|
|
79
|
+
|
|
80
|
+
rule word_re do |m|
|
|
81
|
+
word = m[0]
|
|
82
|
+
if operators.include?(word)
|
|
83
|
+
token Operator
|
|
84
|
+
elsif word.start_with?('<') && word.end_with?('>')
|
|
85
|
+
token Name::Class
|
|
86
|
+
elsif word.start_with?('*') && word.end_with?('*')
|
|
87
|
+
token Name::Variable::Instance
|
|
88
|
+
elsif word.start_with?('$')
|
|
89
|
+
token Name::Constant
|
|
90
|
+
else
|
|
91
|
+
token Name
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
rule %r/:/, Operator # For 'constrained names'
|
|
96
|
+
# Strings, characters and whitespace
|
|
97
|
+
rule %r/"/, Str::Double, :dq
|
|
98
|
+
rule %r/'([^\\']|(\\[\\'abefnrt0])|(\\[0-9a-f]+))'/, Str::Char
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
state :dq do
|
|
102
|
+
rule %r/\\[\\'"abefnrt0]/, Str::Escape
|
|
103
|
+
rule %r/\\<\h+>/, Str::Escape
|
|
104
|
+
rule %r/[^\\"]+/, Str::Double
|
|
105
|
+
rule %r/"/, Str::Double, :pop!
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
data/lib/rouge/lexers/ecl.rb
CHANGED
|
@@ -42,9 +42,9 @@ module Rouge
|
|
|
42
42
|
row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt
|
|
43
43
|
stepped stored sum table tan tanh thisnode topn tounicode toxml
|
|
44
44
|
transfer transform trim truncate typeof ungroup unicodeorder variance
|
|
45
|
-
which workunit xmldecode xmlencode xmltext xmlunicode
|
|
46
|
-
build buildindex
|
|
47
|
-
output parallel sequential
|
|
45
|
+
which workunit xmldecode xmlencode xmltext xmlunicode assert
|
|
46
|
+
build buildindex fail keydiff keypatch loadxml nothor notify
|
|
47
|
+
output parallel sequential wait
|
|
48
48
|
)
|
|
49
49
|
end
|
|
50
50
|
|
data/lib/rouge/lexers/elixir.rb
CHANGED
|
@@ -99,43 +99,48 @@ module Rouge
|
|
|
99
99
|
|
|
100
100
|
state :sigil_strings do
|
|
101
101
|
# ~-sigiled strings
|
|
102
|
-
# ~(abc), ~[abc],
|
|
102
|
+
# ~r(abc), ~r[abc], ~r<abc>, ~r|abc|, ~r/abc/, etc
|
|
103
103
|
# Cribbed and adjusted from Ruby lexer
|
|
104
104
|
delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' }
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
rule %r/~([A-Za-z])?(#{sigil_opens})/ do |m|
|
|
105
|
+
sigil_opens = Regexp.union(delimiter_map.keys + [%r/"{3}/] + %w(| / ' "))
|
|
106
|
+
rule %r/~([a-z]|[A-Z][A-Z0-9]*)(#{sigil_opens})/ do |m|
|
|
108
107
|
open = Regexp.escape(m[2])
|
|
109
108
|
close = Regexp.escape(delimiter_map[m[2]] || m[2])
|
|
110
|
-
interp =
|
|
109
|
+
interp = /^[srcw]$/ === m[1]
|
|
111
110
|
toktype = Str::Other
|
|
112
111
|
|
|
113
112
|
puts " open: #{open.inspect}" if @debug
|
|
114
113
|
puts " close: #{close.inspect}" if @debug
|
|
115
114
|
|
|
116
115
|
# regexes
|
|
117
|
-
if '
|
|
116
|
+
if m[1] == 'r' || m[1] == 'R'
|
|
118
117
|
toktype = Str::Regex
|
|
119
118
|
push :regex_flags
|
|
120
119
|
end
|
|
121
120
|
|
|
122
|
-
if '
|
|
121
|
+
if m[1] == 'w' || m[1] == 'W'
|
|
123
122
|
push :list_flags
|
|
124
123
|
end
|
|
125
124
|
|
|
125
|
+
if open == '"""'
|
|
126
|
+
toktype = Str::Doc
|
|
127
|
+
end
|
|
128
|
+
|
|
126
129
|
token toktype
|
|
127
130
|
|
|
128
131
|
push do
|
|
129
132
|
rule %r/#{close}/, toktype, :pop!
|
|
130
133
|
|
|
131
|
-
if
|
|
134
|
+
if toktype == Str::Doc
|
|
135
|
+
rule %r/(?:.|\n)*?"""/, toktype, :pop!
|
|
136
|
+
elsif interp
|
|
132
137
|
mixin :interpoling
|
|
133
138
|
rule %r/#/, toktype
|
|
134
139
|
else
|
|
135
140
|
rule %r/[\\#]/, toktype
|
|
136
141
|
end
|
|
137
142
|
|
|
138
|
-
uniq_chars = [open, close].uniq.join
|
|
143
|
+
uniq_chars = [open, close].uniq.join.squeeze
|
|
139
144
|
rule %r/[^##{uniq_chars}\\]+/m, toktype
|
|
140
145
|
end
|
|
141
146
|
end
|
data/lib/rouge/lexers/escape.rb
CHANGED
data/lib/rouge/lexers/factor.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Rouge
|
|
|
25
25
|
do unless* if* loop bi-curry* drop when* assert= retainstack
|
|
26
26
|
assert? -rot execute 2bi@ 2tri@ boa with either? 3drop bi
|
|
27
27
|
curry? datastack until 3dip over 3curry tri-curry* tri-curry@
|
|
28
|
-
swap and 2nip throw bi-curry (clone) hashcode* compose 2dip
|
|
28
|
+
swap and 2nip throw bi-curry (clone) hashcode* compose 2dip
|
|
29
29
|
3tri unless compose? tuple keep 2curry equal? assert tri 2drop
|
|
30
30
|
most <wrapper> boolean? identity-hashcode identity-tuple?
|
|
31
31
|
null new dip bi-curry@ rot xor identity-tuple boolean
|
data/lib/rouge/lexers/freefem.rb
CHANGED
data/lib/rouge/lexers/ghc_cmm.rb
CHANGED
|
@@ -88,7 +88,7 @@ module Rouge
|
|
|
88
88
|
rule %r/[A-Z][^\s.,(){}]*/, Keyword::Type
|
|
89
89
|
|
|
90
90
|
# packages, e.g. 'ghc-prim-0.5.3:'
|
|
91
|
-
rule %r/(
|
|
91
|
+
rule %r/([a-z].*?\d+\.\d+\.\d+)(:)(?=\S)/ do |m|
|
|
92
92
|
token Name::Namespace, m[1]
|
|
93
93
|
token Punctuation, m[2]
|
|
94
94
|
end
|
|
@@ -7,12 +7,16 @@
|
|
|
7
7
|
|
|
8
8
|
module Rouge
|
|
9
9
|
module Lexers
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
class Gherkin
|
|
11
|
+
# [jneen] this giant regex is staying, because Gherkin step
|
|
12
|
+
# keywords are so arbitrary that there is not a good simple
|
|
13
|
+
# pattern to match all of them and check post-hoc.
|
|
14
|
+
STEP_REGEX = %r('a\b|'ach\b|'ej\b|\*|7\b|A\b|A\ taktiež\b|A\ také\b|A\ tiež\b|A\ zároveň\b|AN\b|Aber\b|Ac\b|Ach\b|Adott\b|Agus\b|Ak\b|Akkor\b|Alavez\b|Ale\b|Aleshores\b|Ali\b|All\ git\ out\b|Allora\b|Alors\b|Als\b|Ama\b|Amennyiben\b|Amikor\b|Amma\b|Ampak\b|An\b|Ananging\b|Ancaq\b|And\b|Angenommen\b|Anrhegedig\ a\b|Ansin\b|Antonces\b|Apabila\b|Atesa\b|Atunci\b|Atès\b|Avast!|Aye\b|BUT\b|Bagi\b|Banjur\b|Belgilangan\b|Bet\b|Bila\b|Biết\b|Blimey!|Buh\b|But\b|But\ at\ the\ end\ of\ the\ day\ I\ reckon\b|Bæþsealf\b|Bæþsealfa\b|Bæþsealfe\b|Cal\b|Cand\b|Cando\b|Ce\b|Cho\b|Ciricæw\b|Ciricæwa\b|Ciricæwe\b|Come\ hell\ or\ high\ water\b|Cuan\b|Cuando\b|Cuir\ i\ gcás\ go\b|Cuir\ i\ gcás\ gur\b|Cuir\ i\ gcás\ nach\b|Cuir\ i\ gcás\ nár\b|Când\b|DEN\b|DaH\ ghu'\ bejlu'|Dada\b|Dadas\b|Dadena\b|Dadeno\b|Dado\b|Dados\b|Daes\b|Dan\b|Dann\b|Dano\b|Daos\b|Dar\b|Dat\ fiind\b|Data\b|Date\b|Date\ fiind\b|Dati\b|Dati\ fiind\b|Dato\b|Dată\ fiind\b|Dau\b|Daus\b|Daţi\ fiind\b|Dați\ fiind\b|De\b|Den\ youse\ gotta\b|Dengan\b|Diasumsikan\b|Diberi\b|Diketahui\b|Diyelim\ ki\b|Do\b|Donada\b|Donat\b|Donc\b|Donitaĵo\b|Dun\b|Duota\b|Dáu\b|E\b|Ed\b|Eeldades\b|Ef\b|En\b|Entao\b|Entonces\b|Então\b|Entón\b|Entós\b|Epi\b|Et\b|Et\ qu'|Et\ que\b|Etant\ donné\b|Etant\ donné\ qu'|Etant\ donné\ que\b|Etant\ donnée\b|Etant\ données\b|Etant\ donnés\b|Eğer\ ki\b|Fakat\b|Fixin'\ to\b|Gangway!|Gdy\b|Gegeben\ sei\b|Gegeben\ seien\b|Gegeven\b|Gegewe\b|Gitt\b|Given\b|Givet\b|Givun\b|Ha\b|Həm\b|I\b|I\ CAN\ HAZ\b|In\b|Ir\b|It's\ just\ unbelievable\b|Ja\b|Jeśli\b|Jeżeli\b|Jika\b|Kad\b|Kada\b|Kadar\b|Kai\b|Kaj\b|Když\b|Kemudian\b|Ketika\b|Keď\b|Khi\b|Kiedy\b|Ko\b|Koga\b|Komence\b|Kui\b|Kuid\b|Kun\b|Lan\b|Le\b|Le\ sa\ a\b|Let\ go\ and\ haul\b|Logo\b|Lorsqu'|Lorsque\b|Lè\b|Lè\ sa\ a\b|Ma\b|Maar\b|Mais\b|Mais\ qu'|Mais\ que\b|Majd\b|Mając\b|Maka\b|Manawa\b|Mas\b|Men\b|Menawa\b|Mutta\b|Nalika\b|Nalikaning\b|Nanging\b|Nato\b|Nhưng\b|Niin\b|Njuk\b|No\b|Nuair\ a\b|Nuair\ ba\b|Nuair\ nach\b|Nuair\ nár\b|När\b|Når\b|Nə\ vaxt\ ki\b|O\ halda\b|O\ zaman\b|Och\b|Og\b|Oletetaan\b|Ond\b|Onda\b|Oraz\b|Pak\b|Pero\b|Peru\b|Però\b|Podano\b|Pokiaľ\b|Pokud\b|Potem\b|Potom\b|Privzeto\b|Pryd\b|Quan\b|Quand\b|Quando\b|Quick\ out\ of\ the\ chute\b|Sachant\b|Sachant\ qu'|Sachant\ que\b|Se\b|Sed\b|Si\b|Siis\b|Sipoze\b|Sipoze\ Ke\b|Sipoze\ ke\b|Soit\b|Stel\b|Så\b|Tad\b|Tada\b|Tak\b|Takrat\b|Tapi\b|Ter\b|Tetapi\b|Tha\b|Tha\ the\b|Then\b|There’s\ no\ tree\ but\ bears\ some\ fruit\b|Thurh\b|Thì\b|Toda\b|Togash\b|Too\ right\b|Tutaq\ ki\b|Ukoliko\b|Un\b|Und\b|Ve\b|Vendar\b|Verilir\b|Và\b|Və\b|WEN\b|Wanneer\b|Well\ now\ hold\ on,\ I'll\ you\ what\b|Wenn\b|When\b|Wtedy\b|Wun\b|Y\b|Y'know\b|Ya\b|Yeah\ nah\b|Yna\b|Youse\ know\ like\ when\b|Youse\ know\ when\ youse\ got\b|Za\ date\b|Za\ dati\b|Za\ dato\b|Za\ predpokladu\b|Za\ předpokladu\b|Zadan\b|Zadani\b|Zadano\b|Zakładając\b|Zakładając,\ że\b|Zaradi\b|Zatim\b|a\b|an\b|awer\b|dann\b|ghu'\ noblu'|latlh\b|mä\b|qaSDI'|ugeholl\b|vaj\b|wann\b|És\b|Étant\ donné\b|Étant\ donné\ qu'|Étant\ donné\ que\b|Étant\ donnée\b|Étant\ données\b|Étant\ donnés\b|Ða\b|Ða\ ðe\b|Ðurh\b|Þa\b|Þa\ þe\b|Þegar\b|Þurh\b|Þá\b|Če\b|Şi\b|Əgər\b|Și\b|Όταν\b|Αλλά\b|Δεδομένου\b|Και\b|Τότε\b|І\b|Інакш\b|А\b|А\ також\b|Агар\b|Але\b|Али\b|Аммо\b|Анх\b|Бирок\b|Ва\b|Вә\b|Гэхдээ\b|Дадена\b|Дадено\b|Дадзена\b|Дано\b|Допустим\b|Ды\b|Если\b|За\ дате\b|За\ дати\b|За\ дато\b|Затем\b|И\b|Иначе\b|К\ тому\ же\b|Кад\b|Када\b|Калі\b|Кога\b|Когато\b|Когда\b|Коли\b|Лекин\b|Ләкин\b|Мөн\b|Нехай\b|Но\b|Няхай\b|Нәтиҗәдә\b|Онда\b|Припустимо\b|Припустимо,\ що\b|Пусть\b|Та\b|Тады\b|Также\b|Таксама\b|То\b|Тогаш\b|Тогда\b|Тоді\b|Тэгэхэд\b|Тэгээд\b|Унда\b|Харин\b|Хэрэв\b|Якщо\b|Үүний\ дараа\b|Һәм\b|Әгәр\b|Әйтик\b|Әмма\b|Өгөгдсөн\ нь\b|Ապա\b|Բայց\b|Դիցուք\b|Եթե\b|Եվ\b|Երբ\b|אבל\b|אז\b|אזי\b|בהינתן\b|וגם\b|כאשר\b|آنگاه\b|اذاً\b|اما\b|اور\b|اگر\b|با\ فرض\b|بالفرض\b|بفرض\b|تب\b|ثم\b|جب\b|عندما\b|فرض\ کیا\b|لكن\b|لیکن\b|متى\b|هنگامی\b|و\b|پھر\b|अगर\b|अनि\b|अनी\b|आणि\b|और\b|कदा\b|किन्तु\b|चूंकि\b|जब\b|जर\b|जेव्हा\b|तथा\b|तदा\b|तब\b|तर\b|तसेच\b|तेव्हा\b|त्यसपछि\b|दिइएको\b|दिएको\b|दिलेल्या\ प्रमाणे\b|पण\b|पर\b|परंतु\b|परन्तु\b|मग\b|यदि\b|र\b|ਅਤੇ\b|ਜਦੋਂ\b|ਜਿਵੇਂ\ ਕਿ\b|ਜੇਕਰ\b|ਤਦ\b|ਪਰ\b|અને\b|આપેલ\ છે\b|ક્યારે\b|પછી\b|પણ\b|அப்பொழுது\b|ஆனால்\b|எப்போது\b|கொடுக்கப்பட்ட\b|மற்றும்\b|மேலும்\b|అప్పుడు\b|ఈ\ పరిస్థితిలో\b|కాని\b|చెప్పబడినది\b|మరియు\b|ಆದರೆ\b|ನಂತರ\b|ನೀಡಿದ\b|ಮತ್ತು\b|ಸ್ಥಿತಿಯನ್ನು\b|എപ്പോൾ\b|ഒപ്പം\b|നൽകിയത്\b|പക്ഷേ\b|പിന്നെ\b|กำหนดให้\b|ดังนั้น\b|เมื่อ\b|แต่\b|และ\b|ასევე\b|და\b|ვთქვათ\b|თუ\b|თუმცა\b|მაგრამ\b|მაშინ\b|მოცემული\b|მოცემულია\b|როგორც\ კი\b|როდესაც\b|როცა\b|መቼ\b|እና\b|ከዚያ\b|የተሰጠ\b|ግን\b|かつ\b|しかし\b|ただし\b|ならば\b|もし\b|且つ\b|並且\b|但し\b|但是\b|假如\b|假定\b|假設\b|假设\b|前提\b|同时\b|同時\b|并且\b|当\b|然し\b|當\b|而且\b|那么\b|那麼\b|그러면\b|그리고\b|단\b|만약\b|만일\b|먼저\b|조건\b|하지만\b|🎬|😂|😐|😔|🙏)o
|
|
15
|
+
|
|
16
|
+
KEYWORDS = {}.tap do |k|
|
|
17
|
+
k[:element] = Set.new ["Abstract Scenario", "Abstrakt Scenario", "Achtergrond", "Aer", "Agtergrond", "All hat and no cattle", "Antecedentes", "Antecedents", "Atburðarás", "Aturan", "Awww, look mate", "B4", "Background", "Baggrund", "Bakgrund", "Bakgrunn", "Bakgrunnur", "Beispiel", "Beispill", "Busy as a hound in flea season", "Bối cảnh", "Caso", "Casu", "Cefndir", "Cenario", "Cenario de Fundo", "Cenário", "Cenário de Fundo", "Contesto", "Context", "Contexte", "Contexto", "Cás", "Cás Achomair", "Cúlra", "Cцэнар", "Dasar", "Delineacao do Cenario", "Delineação do Cenário", "Dis is what went down", "Dyagram Senaryo", "Dyagram senaryo", "Eixemplo", "Ejemplo", "Eksempel", "Ekzemplo", "Enghraifft", "Esbozo do escenario", "Esbozu del casu", "Escenari", "Escenario", "Esempio", "Esquema de l'escenari", "Esquema del caso", "Esquema del escenario", "Esquema do Cenario", "Esquema do Cenário", "Example", "Exemple", "Exemplo", "Exemplu", "First off", "Fono", "Forgatókönyv", "Forgatókönyv vázlat", "Fundo", "Garis Panduan Senario", "Garis-Besar Skenario", "Geçmiş", "Grundlage", "Hannergrond", "Heave to", "Hintergrund", "Háttér", "Istorik", "Juhtum", "Kazo", "Kazo-skizo", "Keadaan", "Kerangka Keadaan", "Kerangka Senario", "Kerangka Situasi", "Keçmiş", "Khung kịch bản", "Khung tình huống", "Koncept", "Konsep skenario", "Kontekst", "Kontekstas", "Konteksts", "Kontext", "Konturo de la scenaro", "Kontèks", "Kural", "Kịch bản", "Latar Belakang", "Lemme tell y'all a story", "Lýsing Atburðarásar", "Lýsing Dæma", "MISHUN", "MISHUN SRSLY", "Na primer", "Náčrt Scenára", "Náčrt Scenáru", "Náčrt Scénáře", "Nümunə", "Oris scenarija", "Osnova", "Osnova Scenára", "Osnova scénáře", "Osnutek", "Ozadje", "Pavyzdys", "Piemērs", "Plan Senaryo", "Plan du Scénario", "Plan du scénario", "Plan senaryo", "Plang vum Szenario", "Pozadie", "Pozadina", "Pozadí", "Pravidlo", "Pravilo", "Pregled na scenarija", "Primer", "Primjer", "Przykład", "Príklad", "Példa", "Příklad", "Quy tắc", "Raamjuhtum", "Raamstsenaarium", "Reckon it's like", "Reegel", "Reel", "Regel", "Regla", "Regla de negocio", "Regola", "Regra", "Regulo", "Reguła", "Rerefons", "Reël", "Riail", "Rule", "Règle", "Sampla", "Scenarie", "Scenarij", "Scenarijaus šablonas", "Scenariju", "Scenariju-obris", "Scenarijus", "Scenario", "Scenario Amlinellol", "Scenario Outline", "Scenario Template", "Scenario-outline", "Scenariomal", "Scenariomall", "Scenariu", "Scenariusz", "Scenaro", "Scenár", "Scenārijs", "Scenārijs pēc parauga", "Schema dello scenario", "Scénario", "Scénář", "Senario", "Senaryo", "Senaryo Deskripsyon", "Senaryo deskripsyon", "Senaryo taslağı", "Serious as a snake bite", "Shiver me timbers", "Situasi", "Situasie", "Situasie Uiteensetting", "Situācija", "Skenario", "Skenario konsep", "Skica", "Skizo", "Sodrzhina", "Ssenari", "Ssenarinin strukturu", "Structura scenariu", "Structură scenariu", "Struktura scenarija", "Stsenaarium", "Swa", "Swa hwaer swa", "Swa hwær swa", "Szablon scenariusza", "Szabály", "Szenarien", "Szenario", "Szenariogrundriss", "Tapaus", "Tapausaihio", "Taust", "Tausta", "The thing of it is", "Tình huống", "Voorbeeld", "Voraussetzungen", "Vorbedingungen", "Wharrimean is", "Yo-ho-ho", "Zasada", "Założenia", "lut", "lut chovnatlh", "mo'", "Ær", "Örnek", "Παράδειγμα", "Περίγραμμα Σεναρίου", "Περιγραφή Σεναρίου", "Σενάριο", "Υπόβαθρο", "Агуулга", "Кантэкст", "Кереш", "Контекст", "Концепт", "На пример", "Основа", "Передумова", "Позадина", "Правило", "Правілы", "Преглед на сценарија", "Предистория", "Предыстория", "Приклад", "Пример", "Рамка на сценарий", "Скица", "Содржина", "Структура сценария", "Структура сценарија", "Структура сценарію", "Сценар", "Сценарий", "Сценарий структураси", "Сценарийның төзелеше", "Сценарио", "Сценарын төлөвлөгөө", "Сценарій", "Сцэнарый", "Тарих", "Узор сцэнара", "Шаблон сценария", "Шаблон сцэнарыя", "Կոնտեքստ", "Սցենար", "Սցենարի կառուցվացքը", "Օրինակ", "דוגמא", "כלל", "רקע", "תבנית תרחיש", "תרחיש", "الخلفية", "الگوی سناریو", "زمینه", "سناریو", "سيناريو", "سيناريو مخطط", "مثال", "منظر نامے کا خاکہ", "منظرنامہ", "پس منظر", "नियम", "परिदृश्य", "परिदृश्य रूपरेखा", "पार्श्वभूमी", "पृष्ठभूमि", "पृष्ठभूमी", "ਉਦਾਹਰਨ", "ਪਟਕਥਾ", "ਪਟਕਥਾ ਢਾਂਚਾ", "ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ", "ਪਿਛੋਕੜ", "ઉદાહરણ", "નિયમ", "પરિદ્દશ્ય ઢાંચો", "પરિદ્દશ્ય રૂપરેખા", "બેકગ્રાઉન્ડ", "સ્થિતિ", "உதாரணமாக", "காட்சி", "காட்சி சுருக்கம்", "காட்சி வார்ப்புரு", "பின்னணி", "ఉదాహరణ", "కథనం", "నేపథ్యం", "సన్నివేశం", "ಉದಾಹರಣೆ", "ಕಥಾಸಾರಾಂಶ", "ವಿವರಣೆ", "ಹಿನ್ನೆಲೆ", "നിയമം", "പശ്ചാത്തലം", "രംഗം", "സാഹചര്യത്തിന്റെ രൂപരേഖ", "สรุปเหตุการณ์", "เหตุการณ์", "แนวคิด", "โครงสร้างของเหตุการณ์", "კონტექსტი", "მაგ", "მაგალითად", "მაგალითი", "ნიმუში", "სცენარი", "სცენარის ნიმუში", "სცენარის შაბლონი", "შაბლონი", "წესი", "ሁናቴ", "ሁናቴ አብነት", "ሁናቴ ዝርዝር", "ህግ", "መነሻ", "መነሻ ሀሳብ", "ምሳሌ", "ቅድመ ሁኔታ", "シナリオ", "シナリオアウトライン", "シナリオテンプレ", "シナリオテンプレート", "テンプレ", "ルール", "剧本", "剧本大纲", "劇本", "劇本大綱", "场景", "场景大纲", "場景", "場景大綱", "背景", "规则", "규칙", "배경", "시나리오", "시나리오 개요", "💤", "📕", "📖", "🥒"]
|
|
18
|
+
k[:examples] = Set.new ["Atburðarásir", "Beispiele", "Beispiller", "Cenarios", "Cenários", "Conto", "Contoh", "Contone", "Dead men tell no tales", "Dæmi", "Dữ liệu", "EXAMPLZ", "Egzanp", "Eixemplos", "Ejemplos", "Eksempler", "Ekzemploj", "Enghreifftiau", "Esempi", "Examples", "Exempel", "Exemple", "Exemples", "Exemplos", "Juhtumid", "Misal", "Now that's a story longer than a cattle drive in July", "Nümunələr", "Paraugs", "Pavyzdžiai", "Piemēri", "Primeri", "Primjeri", "Przykłady", "Príklady", "Példák", "Příklady", "Samplaí", "Scenaria", "Scenarijai", "Scenariji", "Scenarios", "Se the", "Se ðe", "Se þe", "Tapaukset", "Variantai", "Voorbeelde", "Voorbeelden", "You'll wanna", "ghantoH", "lutmey", "Örnekler", "Παραδείγματα", "Σενάρια", "Значения", "Мисаллар", "Мисоллар", "Приклади", "Примери", "Примеры", "Прыклады", "Сценарија", "Сценарији", "Тухайлбал", "Үрнәкләр", "Օրինակներ", "דוגמאות", "امثلة", "مثالیں", "نمونه ها", "उदाहरण", "उदाहरणहरु", "ਉਦਾਹਰਨਾਂ", "ઉદાહરણો", "எடுத்துக்காட்டுகள்", "காட்சிகள்", "நிலைமைகளில்", "ఉదాహరణలు", "ಉದಾಹರಣೆಗಳು", "ഉദാഹരണങ്ങൾ", "ชุดของตัวอย่าง", "ชุดของเหตุการณ์", "მაგალითები", "ሁናቴዎች", "ምሳሌዎች", "サンプル", "例", "例子", "예", "📓"]
|
|
19
|
+
k[:feature] = Set.new ["Ability", "Abilità", "Ahoy matey!", "All gussied up", "Arwedd", "Aspekt", "Besigheid Behoefte", "Biznis potreba", "Business Need", "Caracteristica", "Característica", "Carauterística", "Egenskab", "Egenskap", "Eiginleiki", "Esigenza di Business", "Feature", "Fitur", "Fonctionnalité", "Fonksyonalite", "Funcionalidade", "Funcionalitat", "Functionalitate", "Functionaliteit", "Funcţionalitate", "Funcționalitate", "Fungsi", "Funkcia", "Funkcija", "Funkcionalitāte", "Funkcionalnost", "Funkcja", "Funksie", "Funktion", "Funktionalität", "Funktionalitéit", "Funzionalità", "Fīča", "Gné", "Hwaet", "Hwæt", "Jellemző", "Karakteristik", "Karakteristika", "Lastnost", "Mak", "Mogucnost", "Mogućnost", "Mozhnost", "Moznosti", "Možnosti", "Necesidad del negocio", "OH HAI", "Omadus", "Ominaisuus", "Osobina", "Potrzeba biznesowa", "Požadavek", "Požiadavka", "Pretty much", "Qap", "Qu'meH 'ut", "Requisito", "Savybė", "This ain’t my first rodeo", "Trajto", "Tính năng", "Vermoë", "Vlastnosť", "Właściwość", "Značilnost", "laH", "perbogh", "poQbogh malja'", "Özellik", "Özəllik", "Δυνατότητα", "Λειτουργία", "Бизнис потреба", "Могућност", "Можност", "Мөмкинлек", "Особина", "Свойство", "Фича", "Функц", "Функционал", "Функционалност", "Функциональность", "Функция", "Функцыянальнасць", "Функціонал", "Фіча", "Үзенчәлеклелек", "Հատկություն", "Ֆունկցիոնալություն", "תכונה", "خاصية", "خصوصیت", "صلاحیت", "وِیژگی", "کاروبار کی ضرورت", "रूप लेख", "विशेषता", "वैशिष्ट्य", "सुविधा", "ਖਾਸੀਅਤ", "ਨਕਸ਼ ਨੁਹਾਰ", "ਮੁਹਾਂਦਰਾ", "ક્ષમતા", "લક્ષણ", "વ્યાપાર જરૂર", "அம்சம்", "திறன்", "வணிக தேவை", "గుణము", "ಹೆಚ್ಚಳ", "സവിശേഷത", "ความต้องการทางธุรกิจ", "ความสามารถ", "โครงหลัก", "თვისება", "მოთხოვნა", "ስራ", "የሚፈለገው ድርጊት", "የተፈለገው ስራ", "フィーチャ", "功能", "機能", "기능", "📚"]
|
|
16
20
|
end
|
|
17
21
|
end
|
|
18
22
|
end
|
data/lib/rouge/lexers/gherkin.rb
CHANGED
|
@@ -17,26 +17,8 @@ module Rouge
|
|
|
17
17
|
return true if text.shebang? 'cucumber'
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Kernel::load File.join(Lexers::BASE_DIR, 'gherkin/keywords.rb')
|
|
23
|
-
keywords
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def self.step_regex
|
|
27
|
-
# in Gherkin's config, keywords that end in < don't
|
|
28
|
-
# need word boundaries at the ends - all others do.
|
|
29
|
-
@step_regex ||= Regexp.new(
|
|
30
|
-
keywords[:step].map do |w|
|
|
31
|
-
if w.end_with? '<'
|
|
32
|
-
Regexp.escape(w.chop)
|
|
33
|
-
elsif w.end_with?(' ')
|
|
34
|
-
Regexp.escape(w)
|
|
35
|
-
else
|
|
36
|
-
"#{Regexp.escape(w)}\\b"
|
|
37
|
-
end
|
|
38
|
-
end.join('|')
|
|
39
|
-
)
|
|
20
|
+
lazy do
|
|
21
|
+
require_relative 'gherkin/keywords'
|
|
40
22
|
end
|
|
41
23
|
|
|
42
24
|
rest_of_line = /.*?(?=[#\n])/
|
|
@@ -46,10 +28,29 @@ module Rouge
|
|
|
46
28
|
rule %r/[ \r\t]+/, Text
|
|
47
29
|
end
|
|
48
30
|
|
|
31
|
+
state :annotated_string do
|
|
32
|
+
rule %r((""")(\S*)(.*?)("""))m do |m|
|
|
33
|
+
open, lang, content, close = m.captures
|
|
34
|
+
|
|
35
|
+
token Str, open
|
|
36
|
+
token Str::Escape, lang
|
|
37
|
+
|
|
38
|
+
sublexer = Rouge::Lexer.find(lang.strip)
|
|
39
|
+
|
|
40
|
+
if sublexer
|
|
41
|
+
delegate sublexer, content
|
|
42
|
+
else
|
|
43
|
+
token Str, content
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
token Str, close
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
49
50
|
state :root do
|
|
50
51
|
mixin :basic
|
|
51
52
|
rule %r(\n), Text
|
|
52
|
-
|
|
53
|
+
mixin :annotated_string
|
|
53
54
|
rule %r(@[^\s@]+), Name::Tag
|
|
54
55
|
mixin :has_table
|
|
55
56
|
mixin :has_examples
|
|
@@ -60,11 +61,11 @@ module Rouge
|
|
|
60
61
|
reset_stack
|
|
61
62
|
|
|
62
63
|
keyword = m[1]
|
|
63
|
-
keyword_tok = if
|
|
64
|
+
keyword_tok = if KEYWORDS[:element].include? keyword
|
|
64
65
|
push :description; Keyword::Namespace
|
|
65
|
-
elsif
|
|
66
|
+
elsif KEYWORDS[:feature].include? keyword
|
|
66
67
|
push :feature_description; Keyword::Declaration
|
|
67
|
-
elsif
|
|
68
|
+
elsif KEYWORDS[:examples].include? keyword
|
|
68
69
|
push :example_description; Name::Namespace
|
|
69
70
|
else
|
|
70
71
|
Error
|
|
@@ -76,9 +77,10 @@ module Rouge
|
|
|
76
77
|
|
|
77
78
|
state :has_examples do
|
|
78
79
|
mixin :has_scenarios
|
|
79
|
-
rule Gherkin
|
|
80
|
+
rule Gherkin::STEP_REGEX do
|
|
80
81
|
token Name::Function
|
|
81
|
-
reset_stack
|
|
82
|
+
reset_stack
|
|
83
|
+
push :step
|
|
82
84
|
end
|
|
83
85
|
end
|
|
84
86
|
|