rouge 3.4.1 → 3.5.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.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rouge.rb +3 -0
  3. data/lib/rouge/cli.rb +19 -2
  4. data/lib/rouge/demos/bpf +7 -0
  5. data/lib/rouge/demos/brainfuck +5 -0
  6. data/lib/rouge/demos/magik +6 -0
  7. data/lib/rouge/formatter.rb +2 -2
  8. data/lib/rouge/formatters/tex.rb +90 -0
  9. data/lib/rouge/guessers/glob_mapping.rb +1 -1
  10. data/lib/rouge/lexer.rb +22 -10
  11. data/lib/rouge/lexers/abap.rb +11 -11
  12. data/lib/rouge/lexers/actionscript.rb +34 -34
  13. data/lib/rouge/lexers/apache.rb +8 -8
  14. data/lib/rouge/lexers/apple_script.rb +15 -14
  15. data/lib/rouge/lexers/awk.rb +25 -25
  16. data/lib/rouge/lexers/biml.rb +4 -4
  17. data/lib/rouge/lexers/bpf.rb +104 -0
  18. data/lib/rouge/lexers/brainfuck.rb +53 -0
  19. data/lib/rouge/lexers/bsl.rb +12 -12
  20. data/lib/rouge/lexers/c.rb +30 -30
  21. data/lib/rouge/lexers/ceylon.rb +1 -29
  22. data/lib/rouge/lexers/cfscript.rb +26 -26
  23. data/lib/rouge/lexers/clojure.rb +14 -14
  24. data/lib/rouge/lexers/cmake.rb +14 -14
  25. data/lib/rouge/lexers/coffeescript.rb +30 -30
  26. data/lib/rouge/lexers/common_lisp.rb +36 -36
  27. data/lib/rouge/lexers/conf.rb +6 -6
  28. data/lib/rouge/lexers/coq.rb +18 -18
  29. data/lib/rouge/lexers/cpp.rb +8 -8
  30. data/lib/rouge/lexers/crystal.rb +70 -70
  31. data/lib/rouge/lexers/csharp.rb +28 -28
  32. data/lib/rouge/lexers/css.rb +23 -23
  33. data/lib/rouge/lexers/d.rb +59 -59
  34. data/lib/rouge/lexers/dart.rb +33 -33
  35. data/lib/rouge/lexers/digdag.rb +1 -1
  36. data/lib/rouge/lexers/docker.rb +10 -10
  37. data/lib/rouge/lexers/dot.rb +16 -16
  38. data/lib/rouge/lexers/eiffel.rb +20 -20
  39. data/lib/rouge/lexers/elixir.rb +29 -28
  40. data/lib/rouge/lexers/elm.rb +29 -29
  41. data/lib/rouge/lexers/erb.rb +4 -4
  42. data/lib/rouge/lexers/factor.rb +40 -40
  43. data/lib/rouge/lexers/fortran.rb +32 -32
  44. data/lib/rouge/lexers/fsharp.rb +26 -26
  45. data/lib/rouge/lexers/gherkin.rb +13 -13
  46. data/lib/rouge/lexers/glsl.rb +0 -4
  47. data/lib/rouge/lexers/go.rb +1 -1
  48. data/lib/rouge/lexers/graphql.rb +62 -62
  49. data/lib/rouge/lexers/groovy.rb +23 -25
  50. data/lib/rouge/lexers/hack.rb +1 -1
  51. data/lib/rouge/lexers/haml.rb +25 -29
  52. data/lib/rouge/lexers/handlebars.rb +18 -18
  53. data/lib/rouge/lexers/haskell.rb +66 -65
  54. data/lib/rouge/lexers/hcl.rb +25 -25
  55. data/lib/rouge/lexers/html.rb +31 -31
  56. data/lib/rouge/lexers/http.rb +4 -4
  57. data/lib/rouge/lexers/hylang.rb +14 -14
  58. data/lib/rouge/lexers/idlang.rb +32 -32
  59. data/lib/rouge/lexers/igorpro.rb +30 -30
  60. data/lib/rouge/lexers/ini.rb +12 -12
  61. data/lib/rouge/lexers/io.rb +7 -7
  62. data/lib/rouge/lexers/irb.rb +5 -5
  63. data/lib/rouge/lexers/java.rb +24 -24
  64. data/lib/rouge/lexers/javascript.rb +51 -51
  65. data/lib/rouge/lexers/jinja.rb +22 -22
  66. data/lib/rouge/lexers/json.rb +11 -10
  67. data/lib/rouge/lexers/json_doc.rb +2 -2
  68. data/lib/rouge/lexers/jsonnet.rb +18 -18
  69. data/lib/rouge/lexers/jsp.rb +28 -28
  70. data/lib/rouge/lexers/jsx.rb +16 -16
  71. data/lib/rouge/lexers/julia.rb +44 -44
  72. data/lib/rouge/lexers/kotlin.rb +3 -3
  73. data/lib/rouge/lexers/lasso.rb +50 -50
  74. data/lib/rouge/lexers/liquid.rb +53 -53
  75. data/lib/rouge/lexers/literate_coffeescript.rb +2 -2
  76. data/lib/rouge/lexers/literate_haskell.rb +5 -5
  77. data/lib/rouge/lexers/llvm.rb +23 -16
  78. data/lib/rouge/lexers/lua.rb +3 -3
  79. data/lib/rouge/lexers/m68k.rb +18 -19
  80. data/lib/rouge/lexers/magik.rb +126 -0
  81. data/lib/rouge/lexers/make.rb +22 -28
  82. data/lib/rouge/lexers/markdown.rb +37 -37
  83. data/lib/rouge/lexers/mathematica.rb +11 -11
  84. data/lib/rouge/lexers/matlab.rb +20 -20
  85. data/lib/rouge/lexers/moonscript.rb +3 -3
  86. data/lib/rouge/lexers/mosel.rb +17 -17
  87. data/lib/rouge/lexers/mxml.rb +18 -18
  88. data/lib/rouge/lexers/nasm.rb +24 -25
  89. data/lib/rouge/lexers/nginx.rb +14 -14
  90. data/lib/rouge/lexers/nim.rb +1 -1
  91. data/lib/rouge/lexers/nix.rb +42 -42
  92. data/lib/rouge/lexers/objective_c.rb +38 -38
  93. data/lib/rouge/lexers/ocaml.rb +29 -29
  94. data/lib/rouge/lexers/pascal.rb +4 -4
  95. data/lib/rouge/lexers/perl.rb +68 -68
  96. data/lib/rouge/lexers/php.rb +38 -38
  97. data/lib/rouge/lexers/plist.rb +14 -14
  98. data/lib/rouge/lexers/pony.rb +19 -19
  99. data/lib/rouge/lexers/powershell.rb +25 -25
  100. data/lib/rouge/lexers/praat.rb +75 -75
  101. data/lib/rouge/lexers/prolog.rb +26 -20
  102. data/lib/rouge/lexers/prometheus.rb +30 -30
  103. data/lib/rouge/lexers/properties.rb +12 -12
  104. data/lib/rouge/lexers/protobuf.rb +22 -22
  105. data/lib/rouge/lexers/puppet.rb +31 -31
  106. data/lib/rouge/lexers/python.rb +52 -52
  107. data/lib/rouge/lexers/q.rb +12 -12
  108. data/lib/rouge/lexers/qml.rb +12 -12
  109. data/lib/rouge/lexers/r.rb +12 -12
  110. data/lib/rouge/lexers/racket.rb +22 -22
  111. data/lib/rouge/lexers/ruby.rb +71 -69
  112. data/lib/rouge/lexers/rust.rb +30 -30
  113. data/lib/rouge/lexers/sass.rb +8 -8
  114. data/lib/rouge/lexers/sass/common.rb +40 -40
  115. data/lib/rouge/lexers/scala.rb +43 -43
  116. data/lib/rouge/lexers/scheme.rb +18 -18
  117. data/lib/rouge/lexers/scss.rb +3 -3
  118. data/lib/rouge/lexers/sed.rb +29 -29
  119. data/lib/rouge/lexers/shell.rb +61 -52
  120. data/lib/rouge/lexers/sieve.rb +8 -8
  121. data/lib/rouge/lexers/slim.rb +24 -24
  122. data/lib/rouge/lexers/smalltalk.rb +33 -33
  123. data/lib/rouge/lexers/smarty.rb +12 -12
  124. data/lib/rouge/lexers/sml.rb +67 -67
  125. data/lib/rouge/lexers/sqf.rb +1 -1
  126. data/lib/rouge/lexers/sql.rb +21 -21
  127. data/lib/rouge/lexers/supercollider.rb +19 -19
  128. data/lib/rouge/lexers/swift.rb +42 -39
  129. data/lib/rouge/lexers/tap.rb +20 -20
  130. data/lib/rouge/lexers/tcl.rb +27 -27
  131. data/lib/rouge/lexers/terraform.rb +13 -13
  132. data/lib/rouge/lexers/tex.rb +19 -19
  133. data/lib/rouge/lexers/toml.rb +18 -18
  134. data/lib/rouge/lexers/tulip.rb +36 -36
  135. data/lib/rouge/lexers/turtle.rb +35 -38
  136. data/lib/rouge/lexers/vala.rb +17 -17
  137. data/lib/rouge/lexers/vb.rb +27 -27
  138. data/lib/rouge/lexers/verilog.rb +25 -27
  139. data/lib/rouge/lexers/vhdl.rb +10 -10
  140. data/lib/rouge/lexers/viml.rb +14 -14
  141. data/lib/rouge/lexers/vue.rb +9 -9
  142. data/lib/rouge/lexers/wollok.rb +25 -25
  143. data/lib/rouge/lexers/xml.rb +17 -21
  144. data/lib/rouge/lexers/xojo.rb +15 -15
  145. data/lib/rouge/lexers/yaml.rb +61 -61
  146. data/lib/rouge/plugins/redcarpet.rb +1 -1
  147. data/lib/rouge/tex_theme_renderer.rb +128 -0
  148. data/lib/rouge/theme.rb +4 -0
  149. data/lib/rouge/themes/magritte.rb +78 -0
  150. data/lib/rouge/version.rb +1 -1
  151. metadata +11 -2
@@ -60,7 +60,7 @@ module Rouge
60
60
  ))
61
61
 
62
62
  prepend :block_nodes do
63
- rule /(#{KEYWORD_PATTERN})(:)(?=\s|$)/ do |m|
63
+ rule %r/(#{KEYWORD_PATTERN})(:)(?=\s|$)/ do |m|
64
64
  groups Keyword::Reserved, Punctuation::Indicator
65
65
  set_indent m[0], :implicit => true
66
66
  end
@@ -18,32 +18,32 @@ module Rouge
18
18
  start { @shell = Shell.new(@options) }
19
19
 
20
20
  state :root do
21
- rule /\s+/, Text
21
+ rule %r/\s+/, Text
22
22
 
23
- rule /^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do |m|
23
+ rule %r/^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do |m|
24
24
  groups Keyword, Text::Whitespace, Keyword, Str
25
25
  end
26
26
 
27
- rule /^(#{KEYWORDS})\b(.*)/io do |m|
27
+ rule %r/^(#{KEYWORDS})\b(.*)/io do |m|
28
28
  groups Keyword, Str
29
29
  end
30
30
 
31
- rule /#.*?$/, Comment
31
+ rule %r/#.*?$/, Comment
32
32
 
33
- rule /^(ONBUILD\s+)?RUN(\s+)/i do
33
+ rule %r/^(ONBUILD\s+)?RUN(\s+)/i do
34
34
  token Keyword
35
35
  push :run
36
36
  @shell.reset!
37
37
  end
38
38
 
39
- rule /\w+/, Text
40
- rule /[^\w]+/, Text
41
- rule /./, Text
39
+ rule %r/\w+/, Text
40
+ rule %r/[^\w]+/, Text
41
+ rule %r/./, Text
42
42
  end
43
43
 
44
44
  state :run do
45
- rule /\n/, Text, :pop!
46
- rule /\\./m, Str::Escape
45
+ rule %r/\n/, Text, :pop!
46
+ rule %r/\\./m, Str::Escape
47
47
  rule(/(\\.|[^\n\\])+/) { delegate @shell }
48
48
  end
49
49
  end
@@ -16,33 +16,33 @@ module Rouge
16
16
  end
17
17
 
18
18
  state :comments_and_whitespace do
19
- rule /\s+/, Text
19
+ rule %r/\s+/, Text
20
20
  rule %r(#.*?\n), Comment::Single
21
21
  rule %r(//.*?\n), Comment::Single
22
22
  rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
23
23
  end
24
24
 
25
25
  state :html do
26
- rule /[^<>]+/ do
26
+ rule %r/[^<>]+/ do
27
27
  delegate @html
28
28
  end
29
- rule /<.+?>/m do
29
+ rule %r/<.+?>/m do
30
30
  delegate @html
31
31
  end
32
- rule />/, Punctuation, :pop!
32
+ rule %r/>/, Punctuation, :pop!
33
33
  end
34
34
 
35
35
  state :ID do
36
- rule /([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
36
+ rule %r/([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
37
37
  token Name, m[1]
38
38
  token Text, m[2]
39
39
  token Punctuation, m[3]
40
40
  end
41
- rule /[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
42
- rule /([0-9]+)?\.[0-9]+/, Num::Float
43
- rule /[0-9]+/, Num::Integer
44
- rule /"(\\"|[^"])*"/, Str::Double
45
- rule /</ do
41
+ rule %r/[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
42
+ rule %r/([0-9]+)?\.[0-9]+/, Num::Float
43
+ rule %r/[0-9]+/, Num::Integer
44
+ rule %r/"(\\"|[^"])*"/, Str::Double
45
+ rule %r/</ do
46
46
  token Punctuation
47
47
  @html.reset!
48
48
  push :html
@@ -52,16 +52,16 @@ module Rouge
52
52
  state :a_list do
53
53
  mixin :comments_and_whitespace
54
54
  mixin :ID
55
- rule /[=;,]/, Punctuation
56
- rule /\]/, Operator, :pop!
55
+ rule %r/[=;,]/, Punctuation
56
+ rule %r/\]/, Operator, :pop!
57
57
  end
58
58
 
59
59
  state :root do
60
60
  mixin :comments_and_whitespace
61
- rule /\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
62
- rule /[{};:=]/, Punctuation
63
- rule /-[->]/, Operator
64
- rule /\[/, Operator, :a_list
61
+ rule %r/\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
62
+ rule %r/[{};:=]/, Punctuation
63
+ rule %r/-[->]/, Operator
64
+ rule %r/\[/, Operator, :a_list
65
65
  mixin :ID
66
66
  end
67
67
  end
@@ -27,37 +27,37 @@ module Rouge
27
27
  SimpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/
28
28
 
29
29
  state :root do
30
- rule /"\[/, Str::Other, :aligned_verbatim_string
31
- rule /"\{/, Str::Other, :non_aligned_verbatim_string
32
- rule /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/, Str::Double
33
- rule /--.*/, Comment::Single
34
- rule /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/, Str::Char
30
+ rule %r/"\[/, Str::Other, :aligned_verbatim_string
31
+ rule %r/"\{/, Str::Other, :non_aligned_verbatim_string
32
+ rule %r/"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/, Str::Double
33
+ rule %r/--.*/, Comment::Single
34
+ rule %r/'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/, Str::Char
35
35
 
36
- rule /(?:#{LanguageKeywords.join('|')})\b/, Keyword
37
- rule /(?:#{LanguageVariables.join('|')})\b/, Keyword::Variable
38
- rule /(?:#{BooleanConstants.join('|')})\b/, Keyword::Constant
36
+ rule %r/(?:#{LanguageKeywords.join('|')})\b/, Keyword
37
+ rule %r/(?:#{LanguageVariables.join('|')})\b/, Keyword::Variable
38
+ rule %r/(?:#{BooleanConstants.join('|')})\b/, Keyword::Constant
39
39
 
40
- rule /\b0[xX][\da-fA-F](?:_*[\da-fA-F])*b/, Num::Hex
41
- rule /\b0[cC][0-7](?:_*[0-7])*\b/, Num::Oct
42
- rule /\b0[bB][01](?:_*[01])*\b/, Num::Bin
43
- rule /\d(?:_*\d)*/, Num::Integer
44
- rule /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
40
+ rule %r/\b0[xX][\da-fA-F](?:_*[\da-fA-F])*b/, Num::Hex
41
+ rule %r/\b0[cC][0-7](?:_*[0-7])*\b/, Num::Oct
42
+ rule %r/\b0[bB][01](?:_*[01])*\b/, Num::Bin
43
+ rule %r/\d(?:_*\d)*/, Num::Integer
44
+ rule %r/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
45
45
 
46
- rule /:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
47
- rule /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/, Operator
46
+ rule %r/:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
47
+ rule %r/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/, Operator
48
48
 
49
- rule /[A-Z][\dA-Z_]*/, Name::Class
50
- rule /[A-Za-z][\dA-Za-z_]*/, Name
51
- rule /\s+/, Text
49
+ rule %r/[A-Z][\dA-Z_]*/, Name::Class
50
+ rule %r/[A-Za-z][\dA-Za-z_]*/, Name
51
+ rule %r/\s+/, Text
52
52
  end
53
53
 
54
54
  state :aligned_verbatim_string do
55
- rule /]"/, Str::Other, :pop!
55
+ rule %r/]"/, Str::Other, :pop!
56
56
  rule SimpleString, Str::Other
57
57
  end
58
58
 
59
59
  state :non_aligned_verbatim_string do
60
- rule /}"/, Str::Other, :pop!
60
+ rule %r/}"/, Str::Other, :pop!
61
61
  rule SimpleString, Str::Other
62
62
  end
63
63
  end
@@ -17,27 +17,27 @@ module Rouge
17
17
  mimetypes 'text/x-elixir', 'application/x-elixir'
18
18
 
19
19
  state :root do
20
- rule /\s+/m, Text
21
- rule /#.*$/, Comment::Single
20
+ rule %r/\s+/m, Text
21
+ rule %r/#.*$/, Comment::Single
22
22
  rule %r{\b(case|cond|end|bc|lc|if|unless|try|loop|receive|fn|defmodule|
23
23
  defp?|defprotocol|defimpl|defrecord|defmacrop?|defdelegate|
24
24
  defexception|defguardp?|defstruct|exit|raise|throw|after|rescue|catch|else)\b(?![?!])|
25
25
  (?<!\.)\b(do|\-\>)\b}x, Keyword
26
- rule /\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])/, Keyword::Namespace
27
- rule /(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
26
+ rule %r/\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])/, Keyword::Namespace
27
+ rule %r/(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
28
28
  rule %r{%=|\*=|\*\*=|\+=|\-=|\^=|\|\|=|
29
- <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[\s\t])\?|
30
- (?<=[\s\t])!+|&(&&?|(?!\d))|\|\||\^|\*|\+|\-|/|
29
+ <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[\s])\?|
30
+ (?<=[\s])!+|&(&&?|(?!\d))|\|\||\^|\*|\+|\-|/|
31
31
  \||\+\+|\-\-|\*\*|\/\/|\<\-|\<\>|<<|>>|=|\.|~~~}x, Operator
32
32
  rule %r{(?<!:)(:)([a-zA-Z_]\w*([?!]|=(?![>=]))?|\<\>|===?|>=?|<=?|
33
33
  <=>|&&?|%\(\)|%\[\]|%\{\}|\+\+?|\-\-?|\|\|?|\!|//|[%&`/\|]|
34
34
  \*\*?|=?~|<\-)|([a-zA-Z_]\w*([?!])?)(:)(?!:)}, Str::Symbol
35
- rule /:"/, Str::Symbol, :interpoling_symbol
36
- rule /\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b/, Name::Constant
37
- rule /\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])/, Name::Builtin::Pseudo
38
- rule /[a-zA-Z_!][\w_]*[!\?]?/, Name
35
+ rule %r/:"/, Str::Symbol, :interpoling_symbol
36
+ rule %r/\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b/, Name::Constant
37
+ rule %r/\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])/, Name::Builtin::Pseudo
38
+ rule %r/[a-zA-Z_!]\w*[!\?]?/, Name
39
39
  rule %r{::|[%(){};,/\|:\\\[\]]}, Punctuation
40
- rule /@[a-zA-Z_]\w*|&\d/, Name::Variable
40
+ rule %r/@[a-zA-Z_]\w*|&\d/, Name::Variable
41
41
  rule %r{\b(0[xX][0-9A-Fa-f]+|\d(_?\d)*(\.(?![^\d\s])
42
42
  (_?\d)*)?([eE][-+]?\d(_?\d)*)?|0[bB][01]+)\b}x, Num
43
43
 
@@ -46,37 +46,37 @@ module Rouge
46
46
  end
47
47
 
48
48
  state :strings do
49
- rule /(%[A-Ba-z])?"""(?:.|\n)*?"""/, Str::Doc
50
- rule /'''(?:.|\n)*?'''/, Str::Doc
51
- rule /"/, Str::Doc, :dqs
52
- rule /'.*?'/, Str::Single
49
+ rule %r/(%[A-Ba-z])?"""(?:.|\n)*?"""/, Str::Doc
50
+ rule %r/'''(?:.|\n)*?'''/, Str::Doc
51
+ rule %r/"/, Str::Doc, :dqs
52
+ rule %r/'.*?'/, Str::Single
53
53
  rule %r{(?<!\w)\?(\\(x\d{1,2}|\h{1,2}(?!\h)\b|0[0-7]{0,2}(?![0-7])\b[^x0MC])|(\\[MC]-)+\w|[^\s\\])}, Str::Other
54
54
 
55
55
  end
56
56
 
57
57
  state :dqs do
58
- rule /"/, Str::Double, :pop!
58
+ rule %r/"/, Str::Double, :pop!
59
59
  mixin :enddoublestr
60
60
  end
61
61
 
62
62
  state :interpoling do
63
- rule /#\{/, Str::Interpol, :interpoling_string
63
+ rule %r/#\{/, Str::Interpol, :interpoling_string
64
64
  end
65
65
 
66
66
  state :interpoling_string do
67
- rule /\}/, Str::Interpol, :pop!
67
+ rule %r/\}/, Str::Interpol, :pop!
68
68
  mixin :root
69
69
  end
70
70
 
71
71
  state :interpoling_symbol do
72
- rule /"/, Str::Symbol, :pop!
72
+ rule %r/"/, Str::Symbol, :pop!
73
73
  mixin :interpoling
74
- rule /[^#"]+/, Str::Symbol
74
+ rule %r/[^#"]+/, Str::Symbol
75
75
  end
76
76
 
77
77
  state :enddoublestr do
78
78
  mixin :interpoling
79
- rule /[^#"]+/, Str::Double
79
+ rule %r/[^#"]+/, Str::Double
80
80
  end
81
81
 
82
82
  state :sigil_strings do
@@ -86,7 +86,7 @@ module Rouge
86
86
  delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' }
87
87
  # Match a-z for custom sigils too
88
88
  sigil_opens = Regexp.union(delimiter_map.keys + %w(| / ' "))
89
- rule /~([A-Za-z])?(#{sigil_opens})/ do |m|
89
+ rule %r/~([A-Za-z])?(#{sigil_opens})/ do |m|
90
90
  open = Regexp.escape(m[2])
91
91
  close = Regexp.escape(delimiter_map[m[2]] || m[2])
92
92
  interp = /[SRCW]/ === m[1]
@@ -108,26 +108,27 @@ module Rouge
108
108
  token toktype
109
109
 
110
110
  push do
111
- rule /#{close}/, toktype, :pop!
111
+ rule %r/#{close}/, toktype, :pop!
112
112
 
113
113
  if interp
114
114
  mixin :interpoling
115
- rule /#/, toktype
115
+ rule %r/#/, toktype
116
116
  else
117
- rule /[\\#]/, toktype
117
+ rule %r/[\\#]/, toktype
118
118
  end
119
119
 
120
- rule /[^##{open}#{close}\\]+/m, toktype
120
+ uniq_chars = "#{open}#{close}".squeeze
121
+ rule %r/[^##{uniq_chars}\\]+/m, toktype
121
122
  end
122
123
  end
123
124
  end
124
125
 
125
126
  state :regex_flags do
126
- rule /[fgimrsux]*/, Str::Regex, :pop!
127
+ rule %r/[fgimrsux]*/, Str::Regex, :pop!
127
128
  end
128
129
 
129
130
  state :list_flags do
130
- rule /[csa]?/, Str::Other, :pop!
131
+ rule %r/[csa]?/, Str::Other, :pop!
131
132
  end
132
133
  end
133
134
  end
@@ -23,66 +23,66 @@ module Rouge
23
23
 
24
24
  state :root do
25
25
  # Whitespaces
26
- rule /\s+/m, Text
26
+ rule %r/\s+/m, Text
27
27
  # Single line comments
28
- rule /--.*/, Comment::Single
28
+ rule %r/--.*/, Comment::Single
29
29
  # Multiline comments
30
- rule /{-/, Comment::Multiline, :multiline_comment
30
+ rule %r/{-/, Comment::Multiline, :multiline_comment
31
31
 
32
32
  # Keywords
33
- rule /\b(#{keywords.join('|')})\b/, Keyword
33
+ rule %r/\b(#{keywords.join('|')})\b/, Keyword
34
34
 
35
35
  # Variable or a function
36
- rule /[a-z][\w]*/, Name
36
+ rule %r/[a-z]\w*/, Name
37
37
  # Underscore is a name for a variable, when it won't be used later
38
- rule /_/, Name
38
+ rule %r/_/, Name
39
39
  # Type
40
- rule /[A-Z][\w]*/, Keyword::Type
40
+ rule %r/[A-Z]\w*/, Keyword::Type
41
41
 
42
42
  # Two symbol operators: -> :: // .. && || ++ |> <| << >> == /= <= >=
43
- rule /(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)/, Operator
43
+ rule %r/(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)/, Operator
44
44
  # One symbol operators: + - / * % = < > ^ | !
45
- rule /[+-\/*%=<>^\|!]/, Operator
45
+ rule %r/[+-\/*%=<>^\|!]/, Operator
46
46
  # Lambda operator
47
- rule /\\/, Operator
47
+ rule %r/\\/, Operator
48
48
  # Not standard Elm operators, but these symbols can be used for custom inflix operators. We need to highlight them as operators as well.
49
- rule /[@\#$&~?]/, Operator
49
+ rule %r/[@\#$&~?]/, Operator
50
50
 
51
51
  # Single, double quotes, and triple double quotes
52
- rule /"""/, Str, :multiline_string
53
- rule /'(\\.|.)'/, Str::Char
54
- rule /"/, Str, :double_quote
52
+ rule %r/"""/, Str, :multiline_string
53
+ rule %r/'(\\.|.)'/, Str::Char
54
+ rule %r/"/, Str, :double_quote
55
55
 
56
56
  # Numbers
57
- rule /0x[\da-f]+/i, Num::Hex
58
- rule /\d+e[+-]?\d+/i, Num::Float
59
- rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float
60
- rule /\d+/, Num::Integer
57
+ rule %r/0x[\da-f]+/i, Num::Hex
58
+ rule %r/\d+e[+-]?\d+/i, Num::Float
59
+ rule %r/\d+\.\d+(e[+-]?\d+)?/i, Num::Float
60
+ rule %r/\d+/, Num::Integer
61
61
 
62
62
  # Punctuation: [ ] ( ) , ; ` { } :
63
- rule /[\[\](),;`{}:]/, Punctuation
63
+ rule %r/[\[\](),;`{}:]/, Punctuation
64
64
  end
65
65
 
66
66
  # Multiline and nested commenting
67
67
  state :multiline_comment do
68
- rule /-}/, Comment::Multiline, :pop!
69
- rule /{-/, Comment::Multiline, :multiline_comment
70
- rule /[^-{}]+/, Comment::Multiline
71
- rule /[-{}]/, Comment::Multiline
68
+ rule %r/-}/, Comment::Multiline, :pop!
69
+ rule %r/{-/, Comment::Multiline, :multiline_comment
70
+ rule %r/[^-{}]+/, Comment::Multiline
71
+ rule %r/[-{}]/, Comment::Multiline
72
72
  end
73
73
 
74
74
  # Double quotes
75
75
  state :double_quote do
76
- rule /[^\\"]+/, Str::Double
77
- rule /\\"/, Str::Escape
78
- rule /"/, Str::Double, :pop!
76
+ rule %r/[^\\"]+/, Str::Double
77
+ rule %r/\\"/, Str::Escape
78
+ rule %r/"/, Str::Double, :pop!
79
79
  end
80
80
 
81
81
  # Multiple line string with tripple double quotes, e.g. """ multi """
82
82
  state :multiline_string do
83
- rule /\s*"""/, Str, :pop!
84
- rule /.*/, Str
85
- rule /\s*/, Str
83
+ rule %r/\s*"""/, Str, :pop!
84
+ rule %r/.*/, Str
85
+ rule %r/\s*/, Str
86
86
  end
87
87
 
88
88
  end
@@ -27,24 +27,24 @@ module Rouge
27
27
  close = /%%>|-%>|%>/
28
28
 
29
29
  state :root do
30
- rule /<%#/, Comment, :comment
30
+ rule %r/<%#/, Comment, :comment
31
31
 
32
32
  rule open, Comment::Preproc, :ruby
33
33
 
34
- rule /.+?(?=#{open})|.+/m do
34
+ rule %r/.+?(?=#{open})|.+/m do
35
35
  delegate parent
36
36
  end
37
37
  end
38
38
 
39
39
  state :comment do
40
40
  rule close, Comment, :pop!
41
- rule /.+?(?=#{close})|.+/m, Comment
41
+ rule %r/.+?(?=#{close})|.+/m, Comment
42
42
  end
43
43
 
44
44
  state :ruby do
45
45
  rule close, Comment::Preproc, :pop!
46
46
 
47
- rule /.+?(?=#{close})|.+/m do
47
+ rule %r/.+?(?=#{close})|.+/m do
48
48
  delegate @ruby_lexer
49
49
  end
50
50
  end
@@ -167,35 +167,35 @@ module Rouge
167
167
  end
168
168
 
169
169
  state :root do
170
- rule /\s+/m, Text
170
+ rule %r/\s+/m, Text
171
171
 
172
- rule /(:|::|MACRO:|MEMO:|GENERIC:|HELP:)(\s+)(\S+)/m do
172
+ rule %r/(:|::|MACRO:|MEMO:|GENERIC:|HELP:)(\s+)(\S+)/m do
173
173
  groups Keyword, Text, Name::Function
174
174
  end
175
175
 
176
- rule /(M:|HOOK:|GENERIC#)(\s+)(\S+)(\s+)(\S+)/m do
176
+ rule %r/(M:|HOOK:|GENERIC#)(\s+)(\S+)(\s+)(\S+)/m do
177
177
  groups Keyword, Text, Name::Class, Text, Name::Function
178
178
  end
179
179
 
180
- rule /\((?=\s)/, Name::Function, :stack_effect
181
- rule /;(?=\s)/, Keyword
180
+ rule %r/\((?=\s)/, Name::Function, :stack_effect
181
+ rule %r/;(?=\s)/, Keyword
182
182
 
183
- rule /(USING:)((?:\s|\\\s)+)/m do
183
+ rule %r/(USING:)((?:\s|\\\s)+)/m do
184
184
  groups Keyword::Namespace, Text
185
185
  push :import
186
186
  end
187
187
 
188
- rule /(IN:|USE:|UNUSE:|QUALIFIED:|QUALIFIED-WITH:)(\s+)(\S+)/m do
188
+ rule %r/(IN:|USE:|UNUSE:|QUALIFIED:|QUALIFIED-WITH:)(\s+)(\S+)/m do
189
189
  groups Keyword::Namespace, Text, Name::Namespace
190
190
  end
191
191
 
192
- rule /(FROM:|EXCLUDE:)(\s+)(\S+)(\s+)(=>)/m do
192
+ rule %r/(FROM:|EXCLUDE:)(\s+)(\S+)(\s+)(=>)/m do
193
193
  groups Keyword::Namespace, Text, Name::Namespace, Text, Punctuation
194
194
  end
195
195
 
196
- rule /(?:ALIAS|DEFER|FORGET|POSTPONE):/, Keyword::Namespace
196
+ rule %r/(?:ALIAS|DEFER|FORGET|POSTPONE):/, Keyword::Namespace
197
197
 
198
- rule /(TUPLE:)(\s+)(\S+)(\s+)(<)(\s+)(\S+)/m do
198
+ rule %r/(TUPLE:)(\s+)(\S+)(\s+)(<)(\s+)(\S+)/m do
199
199
  groups(
200
200
  Keyword, Text,
201
201
  Name::Class, Text,
@@ -205,16 +205,16 @@ module Rouge
205
205
  push :slots
206
206
  end
207
207
 
208
- rule /(TUPLE:)(\s+)(\S+)/m do
208
+ rule %r/(TUPLE:)(\s+)(\S+)/m do
209
209
  groups Keyword, Text, Name::Class
210
210
  push :slots
211
211
  end
212
212
 
213
- rule /(UNION:|INTERSECTION:)(\s+)(\S+)/m do
213
+ rule %r/(UNION:|INTERSECTION:)(\s+)(\S+)/m do
214
214
  groups Keyword, Text, Name::Class
215
215
  end
216
216
 
217
- rule /(PREDICATE:)(\s+)(\S+)(\s+)(<)(\s+)(\S+)/m do
217
+ rule %r/(PREDICATE:)(\s+)(\S+)(\s+)(<)(\s+)(\S+)/m do
218
218
  groups(
219
219
  Keyword, Text,
220
220
  Name::Class, Text,
@@ -223,7 +223,7 @@ module Rouge
223
223
  )
224
224
  end
225
225
 
226
- rule /(C:)(\s+)(\S+)(\s+)(\S+)/m do
226
+ rule %r/(C:)(\s+)(\S+)(\s+)(\S+)/m do
227
227
  groups(
228
228
  Keyword, Text,
229
229
  Name::Function, Text,
@@ -236,38 +236,38 @@ module Rouge
236
236
  |ALIEN|TYPEDEF|FUNCTION|STRUCT):
237
237
  )x, Keyword
238
238
 
239
- rule /(?:<PRIVATE|PRIVATE>)/, Keyword::Namespace
239
+ rule %r/(?:<PRIVATE|PRIVATE>)/, Keyword::Namespace
240
240
 
241
- rule /(MAIN:)(\s+)(\S+)/ do
241
+ rule %r/(MAIN:)(\s+)(\S+)/ do
242
242
  groups Keyword::Namespace, Text, Name::Function
243
243
  end
244
244
 
245
245
  # strings
246
- rule /"""\s+.*?\s+"""/, Str
247
- rule /"(\\.|[^\\])*?"/, Str
248
- rule /(CHAR:)(\s+)(\\[\\abfnrstv]*|\S)(?=\s)/, Str::Char
246
+ rule %r/"""\s+.*?\s+"""/, Str
247
+ rule %r/"(\\.|[^\\])*?"/, Str
248
+ rule %r/(CHAR:)(\s+)(\\[\\abfnrstv]*|\S)(?=\s)/, Str::Char
249
249
 
250
250
  # comments
251
- rule /!\s+.*$/, Comment
252
- rule /#!\s+.*$/, Comment
251
+ rule %r/!\s+.*$/, Comment
252
+ rule %r/#!\s+.*$/, Comment
253
253
 
254
254
  # booleans
255
- rule /[tf](?=\s)/, Name::Constant
255
+ rule %r/[tf](?=\s)/, Name::Constant
256
256
 
257
257
  # numbers
258
- rule /-?\d+\.\d+(?=\s)/, Num::Float
259
- rule /-?\d+(?=\s)/, Num::Integer
258
+ rule %r/-?\d+\.\d+(?=\s)/, Num::Float
259
+ rule %r/-?\d+(?=\s)/, Num::Integer
260
260
 
261
- rule /HEX:\s+[a-fA-F\d]+(?=\s)/m, Num::Hex
262
- rule /BIN:\s+[01]+(?=\s)/, Num::Bin
263
- rule /OCT:\s+[0-7]+(?=\s)/, Num::Oct
261
+ rule %r/HEX:\s+[a-fA-F\d]+(?=\s)/m, Num::Hex
262
+ rule %r/BIN:\s+[01]+(?=\s)/, Num::Bin
263
+ rule %r/OCT:\s+[0-7]+(?=\s)/, Num::Oct
264
264
 
265
265
  rule %r([-+/*=<>^](?=\s)), Operator
266
266
 
267
- rule /(?:deprecated|final|foldable|flushable|inline|recursive)(?=\s)/,
267
+ rule %r/(?:deprecated|final|foldable|flushable|inline|recursive)(?=\s)/,
268
268
  Keyword
269
269
 
270
- rule /\S+/ do |m|
270
+ rule %r/\S+/ do |m|
271
271
  name = m[0]
272
272
 
273
273
  if self.class.builtins.values.any? { |b| b.include? name }
@@ -279,24 +279,24 @@ module Rouge
279
279
  end
280
280
 
281
281
  state :stack_effect do
282
- rule /\s+/, Text
283
- rule /\(/, Name::Function, :stack_effect
284
- rule /\)/, Name::Function, :pop!
282
+ rule %r/\s+/, Text
283
+ rule %r/\(/, Name::Function, :stack_effect
284
+ rule %r/\)/, Name::Function, :pop!
285
285
 
286
- rule /--/, Name::Function
287
- rule /\S+/, Name::Variable
286
+ rule %r/--/, Name::Function
287
+ rule %r/\S+/, Name::Variable
288
288
  end
289
289
 
290
290
  state :slots do
291
- rule /\s+/, Text
292
- rule /;(?=\s)/, Keyword, :pop!
293
- rule /\S+/, Name::Variable
291
+ rule %r/\s+/, Text
292
+ rule %r/;(?=\s)/, Keyword, :pop!
293
+ rule %r/\S+/, Name::Variable
294
294
  end
295
295
 
296
296
  state :import do
297
- rule /;(?=\s)/, Keyword, :pop!
298
- rule /\s+/, Text
299
- rule /\S+/, Name::Namespace
297
+ rule %r/;(?=\s)/, Keyword, :pop!
298
+ rule %r/\s+/, Text
299
+ rule %r/\S+/, Name::Namespace
300
300
  end
301
301
  end
302
302
  end