rouge 3.4.1 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rouge.rb +4 -0
  3. data/lib/rouge/cli.rb +38 -13
  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/demos/openedge +4 -0
  8. data/lib/rouge/demos/powershell +12 -48
  9. data/lib/rouge/demos/xojo +2 -1
  10. data/lib/rouge/demos/xpath +2 -0
  11. data/lib/rouge/demos/xquery +22 -0
  12. data/lib/rouge/formatter.rb +2 -2
  13. data/lib/rouge/formatters/html.rb +18 -2
  14. data/lib/rouge/formatters/html_line_table.rb +51 -0
  15. data/lib/rouge/formatters/tex.rb +90 -0
  16. data/lib/rouge/guessers/glob_mapping.rb +1 -1
  17. data/lib/rouge/guessers/modeline.rb +1 -1
  18. data/lib/rouge/lexer.rb +22 -10
  19. data/lib/rouge/lexers/abap.rb +11 -11
  20. data/lib/rouge/lexers/actionscript.rb +34 -34
  21. data/lib/rouge/lexers/apache.rb +8 -8
  22. data/lib/rouge/lexers/apple_script.rb +15 -14
  23. data/lib/rouge/lexers/awk.rb +25 -25
  24. data/lib/rouge/lexers/biml.rb +4 -4
  25. data/lib/rouge/lexers/bpf.rb +104 -0
  26. data/lib/rouge/lexers/brainfuck.rb +53 -0
  27. data/lib/rouge/lexers/bsl.rb +12 -12
  28. data/lib/rouge/lexers/c.rb +30 -30
  29. data/lib/rouge/lexers/ceylon.rb +6 -34
  30. data/lib/rouge/lexers/cfscript.rb +26 -26
  31. data/lib/rouge/lexers/clojure.rb +14 -14
  32. data/lib/rouge/lexers/cmake.rb +14 -14
  33. data/lib/rouge/lexers/coffeescript.rb +30 -30
  34. data/lib/rouge/lexers/common_lisp.rb +36 -36
  35. data/lib/rouge/lexers/conf.rb +6 -6
  36. data/lib/rouge/lexers/coq.rb +18 -18
  37. data/lib/rouge/lexers/cpp.rb +8 -8
  38. data/lib/rouge/lexers/crystal.rb +70 -70
  39. data/lib/rouge/lexers/csharp.rb +28 -28
  40. data/lib/rouge/lexers/css.rb +23 -23
  41. data/lib/rouge/lexers/d.rb +59 -59
  42. data/lib/rouge/lexers/dart.rb +33 -33
  43. data/lib/rouge/lexers/digdag.rb +1 -1
  44. data/lib/rouge/lexers/docker.rb +10 -10
  45. data/lib/rouge/lexers/dot.rb +16 -16
  46. data/lib/rouge/lexers/eiffel.rb +20 -20
  47. data/lib/rouge/lexers/elixir.rb +34 -30
  48. data/lib/rouge/lexers/elm.rb +29 -29
  49. data/lib/rouge/lexers/erb.rb +4 -4
  50. data/lib/rouge/lexers/factor.rb +40 -40
  51. data/lib/rouge/lexers/fortran.rb +32 -32
  52. data/lib/rouge/lexers/fsharp.rb +30 -30
  53. data/lib/rouge/lexers/gherkin.rb +13 -13
  54. data/lib/rouge/lexers/glsl.rb +1 -5
  55. data/lib/rouge/lexers/go.rb +1 -1
  56. data/lib/rouge/lexers/graphql.rb +62 -62
  57. data/lib/rouge/lexers/groovy.rb +23 -25
  58. data/lib/rouge/lexers/hack.rb +1 -1
  59. data/lib/rouge/lexers/haml.rb +25 -29
  60. data/lib/rouge/lexers/handlebars.rb +18 -18
  61. data/lib/rouge/lexers/haskell.rb +66 -65
  62. data/lib/rouge/lexers/hcl.rb +25 -25
  63. data/lib/rouge/lexers/html.rb +31 -31
  64. data/lib/rouge/lexers/http.rb +4 -4
  65. data/lib/rouge/lexers/hylang.rb +14 -14
  66. data/lib/rouge/lexers/idlang.rb +32 -32
  67. data/lib/rouge/lexers/igorpro.rb +30 -30
  68. data/lib/rouge/lexers/ini.rb +12 -12
  69. data/lib/rouge/lexers/io.rb +7 -7
  70. data/lib/rouge/lexers/irb.rb +5 -5
  71. data/lib/rouge/lexers/java.rb +24 -24
  72. data/lib/rouge/lexers/javascript.rb +51 -51
  73. data/lib/rouge/lexers/jinja.rb +22 -22
  74. data/lib/rouge/lexers/json.rb +12 -11
  75. data/lib/rouge/lexers/json_doc.rb +2 -2
  76. data/lib/rouge/lexers/jsonnet.rb +18 -18
  77. data/lib/rouge/lexers/jsp.rb +30 -30
  78. data/lib/rouge/lexers/jsx.rb +16 -16
  79. data/lib/rouge/lexers/julia.rb +44 -44
  80. data/lib/rouge/lexers/kotlin.rb +3 -3
  81. data/lib/rouge/lexers/lasso.rb +50 -50
  82. data/lib/rouge/lexers/liquid.rb +76 -53
  83. data/lib/rouge/lexers/literate_coffeescript.rb +2 -2
  84. data/lib/rouge/lexers/literate_haskell.rb +5 -5
  85. data/lib/rouge/lexers/llvm.rb +23 -16
  86. data/lib/rouge/lexers/lua.rb +3 -3
  87. data/lib/rouge/lexers/m68k.rb +18 -19
  88. data/lib/rouge/lexers/magik.rb +127 -0
  89. data/lib/rouge/lexers/make.rb +26 -31
  90. data/lib/rouge/lexers/markdown.rb +37 -37
  91. data/lib/rouge/lexers/mathematica.rb +11 -11
  92. data/lib/rouge/lexers/matlab.rb +20 -20
  93. data/lib/rouge/lexers/moonscript.rb +3 -3
  94. data/lib/rouge/lexers/mosel.rb +63 -63
  95. data/lib/rouge/lexers/mxml.rb +18 -18
  96. data/lib/rouge/lexers/nasm.rb +24 -25
  97. data/lib/rouge/lexers/nginx.rb +14 -14
  98. data/lib/rouge/lexers/nim.rb +3 -2
  99. data/lib/rouge/lexers/nix.rb +43 -43
  100. data/lib/rouge/lexers/objective_c.rb +38 -38
  101. data/lib/rouge/lexers/ocaml.rb +29 -29
  102. data/lib/rouge/lexers/openedge.rb +429 -0
  103. data/lib/rouge/lexers/pascal.rb +4 -4
  104. data/lib/rouge/lexers/perl.rb +77 -79
  105. data/lib/rouge/lexers/php.rb +38 -38
  106. data/lib/rouge/lexers/plist.rb +14 -14
  107. data/lib/rouge/lexers/pony.rb +19 -19
  108. data/lib/rouge/lexers/powershell.rb +183 -637
  109. data/lib/rouge/lexers/praat.rb +75 -75
  110. data/lib/rouge/lexers/prolog.rb +26 -20
  111. data/lib/rouge/lexers/prometheus.rb +30 -30
  112. data/lib/rouge/lexers/properties.rb +12 -12
  113. data/lib/rouge/lexers/protobuf.rb +22 -22
  114. data/lib/rouge/lexers/puppet.rb +31 -31
  115. data/lib/rouge/lexers/python.rb +52 -52
  116. data/lib/rouge/lexers/q.rb +12 -12
  117. data/lib/rouge/lexers/qml.rb +12 -12
  118. data/lib/rouge/lexers/r.rb +12 -12
  119. data/lib/rouge/lexers/racket.rb +22 -22
  120. data/lib/rouge/lexers/ruby.rb +72 -70
  121. data/lib/rouge/lexers/rust.rb +30 -30
  122. data/lib/rouge/lexers/sass.rb +8 -8
  123. data/lib/rouge/lexers/sass/common.rb +40 -40
  124. data/lib/rouge/lexers/scala.rb +43 -43
  125. data/lib/rouge/lexers/scheme.rb +18 -18
  126. data/lib/rouge/lexers/scss.rb +3 -3
  127. data/lib/rouge/lexers/sed.rb +29 -29
  128. data/lib/rouge/lexers/shell.rb +61 -52
  129. data/lib/rouge/lexers/sieve.rb +8 -8
  130. data/lib/rouge/lexers/slim.rb +24 -24
  131. data/lib/rouge/lexers/smalltalk.rb +33 -33
  132. data/lib/rouge/lexers/smarty.rb +12 -12
  133. data/lib/rouge/lexers/sml.rb +67 -67
  134. data/lib/rouge/lexers/sqf.rb +1 -1
  135. data/lib/rouge/lexers/sql.rb +21 -21
  136. data/lib/rouge/lexers/supercollider.rb +19 -19
  137. data/lib/rouge/lexers/swift.rb +46 -43
  138. data/lib/rouge/lexers/tap.rb +20 -20
  139. data/lib/rouge/lexers/tcl.rb +27 -27
  140. data/lib/rouge/lexers/terraform.rb +13 -13
  141. data/lib/rouge/lexers/tex.rb +19 -19
  142. data/lib/rouge/lexers/toml.rb +19 -19
  143. data/lib/rouge/lexers/tulip.rb +36 -36
  144. data/lib/rouge/lexers/turtle.rb +35 -38
  145. data/lib/rouge/lexers/vala.rb +18 -18
  146. data/lib/rouge/lexers/vb.rb +27 -27
  147. data/lib/rouge/lexers/verilog.rb +25 -27
  148. data/lib/rouge/lexers/vhdl.rb +11 -11
  149. data/lib/rouge/lexers/viml.rb +14 -14
  150. data/lib/rouge/lexers/vue.rb +9 -9
  151. data/lib/rouge/lexers/wollok.rb +26 -26
  152. data/lib/rouge/lexers/xml.rb +17 -21
  153. data/lib/rouge/lexers/xojo.rb +17 -17
  154. data/lib/rouge/lexers/xpath.rb +332 -0
  155. data/lib/rouge/lexers/xquery.rb +145 -0
  156. data/lib/rouge/lexers/yaml.rb +63 -61
  157. data/lib/rouge/plugins/redcarpet.rb +1 -1
  158. data/lib/rouge/regex_lexer.rb +14 -13
  159. data/lib/rouge/tex_theme_renderer.rb +128 -0
  160. data/lib/rouge/theme.rb +4 -0
  161. data/lib/rouge/themes/magritte.rb +78 -0
  162. data/lib/rouge/themes/monokai_sublime.rb +2 -1
  163. data/lib/rouge/themes/pastie.rb +1 -1
  164. data/lib/rouge/util.rb +2 -2
  165. data/lib/rouge/version.rb +1 -1
  166. metadata +19 -3
@@ -21,11 +21,11 @@ module Rouge
21
21
  start { markdown.reset!; coffee.reset! }
22
22
 
23
23
  state :root do
24
- rule /^( .*?\n)+/m do
24
+ rule %r/^( .*?\n)+/m do
25
25
  delegate coffee
26
26
  end
27
27
 
28
- rule /^([ ]{0,3}(\S.*?|)\n)*/m do
28
+ rule %r/^([ ]{0,3}(\S.*?|)\n)*/m do
29
29
  delegate markdown
30
30
  end
31
31
  end
@@ -19,18 +19,18 @@ module Rouge
19
19
 
20
20
  # TODO: support TeX versions as well.
21
21
  state :root do
22
- rule /\s*?\n(?=>)/, Text, :code
23
- rule /.*?\n/, Text
24
- rule /.+\z/, Text
22
+ rule %r/\s*?\n(?=>)/, Text, :code
23
+ rule %r/.*?\n/, Text
24
+ rule %r/.+\z/, Text
25
25
  end
26
26
 
27
27
  state :code do
28
- rule /(>)( .*?(\n|\z))/ do |m|
28
+ rule %r/(>)( .*?(\n|\z))/ do |m|
29
29
  token Name::Label, m[1]
30
30
  delegate haskell, m[2]
31
31
  end
32
32
 
33
- rule /\s*\n(?=\s*[^>])/, Text, :pop!
33
+ rule %r/\s*\n(?=\s*[^>])/, Text, :pop!
34
34
  end
35
35
  end
36
36
  end
@@ -15,21 +15,22 @@ module Rouge
15
15
  identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
16
16
 
17
17
  state :basic do
18
- rule /;.*?$/, Comment::Single
19
- rule /\s+/, Text
18
+ rule %r/;.*?$/, Comment::Single
19
+ rule %r/\s+/, Text
20
20
 
21
- rule /#{identifier}\s*:/, Name::Label
21
+ rule %r/#{identifier}\s*:/, Name::Label
22
22
 
23
- rule /@(#{identifier}|\d+)/, Name::Variable::Global
24
- rule /(%|!)#{identifier}/, Name::Variable
25
- rule /(%|!)\d+/, Name::Variable
23
+ rule %r/@(#{identifier}|\d+)/, Name::Variable::Global
24
+ rule %r/#\d+/, Name::Variable::Global
25
+ rule %r/(%|!)#{identifier}/, Name::Variable
26
+ rule %r/(%|!)\d+/, Name::Variable
26
27
 
27
- rule /c?#{string}/, Str
28
+ rule %r/c?#{string}/, Str
28
29
 
29
- rule /0[xX][a-fA-F0-9]+/, Num
30
- rule /-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
30
+ rule %r/0[xX][a-fA-F0-9]+/, Num
31
+ rule %r/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
31
32
 
32
- rule /[=<>{}\[\]()*.,!]|x/, Punctuation
33
+ rule %r/[=<>{}\[\]()*.,!]|x/, Punctuation
33
34
  end
34
35
 
35
36
  builtin_types = %w(
@@ -37,12 +38,12 @@ module Rouge
37
38
  )
38
39
 
39
40
  state :types do
40
- rule /i[1-9]\d*/, Keyword::Type
41
- rule /#{builtin_types.join('|')}/, Keyword::Type
41
+ rule %r/i[1-9]\d*/, Keyword::Type
42
+ rule %r/#{builtin_types.join('|')}/, Keyword::Type
42
43
  end
43
44
 
44
45
  builtin_keywords = %w(
45
- begin end true false declare define global constant personality private
46
+ begin end true false declare define global constant alignstack private
46
47
  landingpad linker_private internal available_externally linkonce_odr
47
48
  linkonce weak weak_odr appending dllimport dllexport common default
48
49
  hidden protected extern_weak external thread_local zeroinitializer
@@ -54,7 +55,13 @@ module Rouge
54
55
  nest readnone readonly inlinehint noinline alwaysinline optsize ssp
55
56
  sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle
56
57
  sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq
57
- une uwtable x
58
+ une uwtable x personality allocsize builtin cold convergent
59
+ inaccessiblememonly inaccessiblemem_or_argmemonly jumptable minsize
60
+ no-jump-tables nobuiltin noduplicate nonlazybind noredzone norecurse
61
+ optforfuzzing optnone writeonly argmemonly returns_twice safestack
62
+ sanitize_address sanitize_memory sanitize_thread sanitize_hwaddress
63
+ speculative_load_hardening speculatable sspstrong strictfp nocf_check
64
+ shadowcallstack attributes
58
65
  )
59
66
 
60
67
  builtin_instructions = %w(
@@ -67,8 +74,8 @@ module Rouge
67
74
  )
68
75
 
69
76
  state :keywords do
70
- rule /#{builtin_instructions.join('|')}/, Keyword
71
- rule /#{builtin_keywords.join('|')}/, Keyword
77
+ rule %r/#{builtin_instructions.join('|')}/, Keyword
78
+ rule %r/#{builtin_keywords.join('|')}/, Keyword
72
79
  end
73
80
 
74
81
  state :root do
@@ -25,7 +25,7 @@ module Rouge
25
25
  end
26
26
 
27
27
  def self.builtins
28
- load Pathname.new(__FILE__).dirname.join('lua/builtins.rb')
28
+ load File.join(__dir__, 'lua/builtins.rb')
29
29
  self.builtins
30
30
  end
31
31
 
@@ -43,7 +43,7 @@ module Rouge
43
43
  state :root do
44
44
  # lua allows a file to start with a shebang
45
45
  rule %r(#!(.*?)$), Comment::Preproc
46
- rule //, Text, :base
46
+ rule %r//, Text, :base
47
47
  end
48
48
 
49
49
  state :base do
@@ -89,7 +89,7 @@ module Rouge
89
89
  end
90
90
 
91
91
  state :function_name do
92
- rule /\s+/, Text
92
+ rule %r/\s+/, Text
93
93
  rule %r((?:([A-Za-z_][A-Za-z0-9_]*)(\.))?([A-Za-z_][A-Za-z0-9_]*)) do
94
94
  groups Name::Class, Punctuation, Name::Function
95
95
  pop!
@@ -9,7 +9,6 @@ module Rouge
9
9
  title "M68k"
10
10
  desc "Motorola 68k Assembler"
11
11
 
12
- ws = %r((?:\s|;.*?\n/)+)
13
12
  id = /[a-zA-Z_][a-zA-Z0-9_]*/
14
13
 
15
14
  def self.keywords
@@ -83,11 +82,11 @@ module Rouge
83
82
  end
84
83
 
85
84
  state :inline_whitespace do
86
- rule /[\s\t\r]+/, Text
85
+ rule %r/\s+/, Text
87
86
  end
88
87
 
89
88
  state :whitespace do
90
- rule /\n+/m, Text, :expr_bol
89
+ rule %r/\n+/m, Text, :expr_bol
91
90
  rule %r(^\*(\\.|.)*?\n), Comment::Single, :expr_bol
92
91
  rule %r(;(\\.|.)*?\n), Comment::Single, :expr_bol
93
92
  mixin :inline_whitespace
@@ -99,19 +98,19 @@ module Rouge
99
98
 
100
99
  state :statements do
101
100
  mixin :whitespace
102
- rule /"/, Str, :string
103
- rule /#/, Name::Decorator
104
- rule /^\.?[a-zA-Z0-9_]+:?/, Name::Label
105
- rule /\.[bswl]\s/i, Name::Decorator
101
+ rule %r/"/, Str, :string
102
+ rule %r/#/, Name::Decorator
103
+ rule %r/^\.?[a-zA-Z0-9_]+:?/, Name::Label
104
+ rule %r/\.[bswl]\s/i, Name::Decorator
106
105
  rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
107
- rule /\$[0-9a-f]+/i, Num::Hex
108
- rule /@[0-8]+/i, Num::Oct
109
- rule /%[01]+/i, Num::Bin
110
- rule /\d+/i, Num::Integer
106
+ rule %r/\$[0-9a-f]+/i, Num::Hex
107
+ rule %r/@[0-8]+/i, Num::Oct
108
+ rule %r/%[01]+/i, Num::Bin
109
+ rule %r/\d+/i, Num::Integer
111
110
  rule %r([*~&+=\|?:<>/-]), Operator
112
- rule /\\./, Comment::Preproc
113
- rule /[(),.]/, Punctuation
114
- rule /\[[a-zA-Z0-9]*\]/, Punctuation
111
+ rule %r/\\./, Comment::Preproc
112
+ rule %r/[(),.]/, Punctuation
113
+ rule %r/\[[a-zA-Z0-9]*\]/, Punctuation
115
114
 
116
115
  rule id do |m|
117
116
  name = m[0]
@@ -133,11 +132,11 @@ module Rouge
133
132
  end
134
133
 
135
134
  state :string do
136
- rule /"/, Str, :pop!
137
- rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
138
- rule /[^\\"\n]+/, Str
139
- rule /\\\n/, Str
140
- rule /\\/, Str # stray backslash
135
+ rule %r/"/, Str, :pop!
136
+ rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
137
+ rule %r/[^\\"\n]+/, Str
138
+ rule %r/\\\n/, Str
139
+ rule %r/\\/, Str # stray backslash
141
140
  end
142
141
  end
143
142
  end
@@ -0,0 +1,127 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Magik < RegexLexer
7
+ title "Magik"
8
+ desc "Smallworld Magik"
9
+ tag 'magik'
10
+ filenames '*.magik'
11
+ mimetypes 'text/x-magik', 'application/x-magik'
12
+
13
+ def self.keywords
14
+ @keywords ||= %w(
15
+ _package
16
+ _pragma
17
+ _block _endblock
18
+ _handling _default
19
+ _protect _protection _endprotect
20
+ _try _with _when _endtry
21
+ _catch _endcatch
22
+ _throw
23
+ _lock _endlock
24
+ _if _then _elif _else _endif
25
+ _for _over _while _loop _endloop _loopbody _continue _leave
26
+ _return
27
+ _class
28
+ _local _constant _recursive _global _dynamic _import
29
+ _private _iter _abstract _method _endmethod
30
+ _proc _endproc
31
+ _gather _scatter _allresults _optional
32
+ _thisthread _self _clone _super
33
+ _primitive
34
+ _unset _true _false _maybe
35
+ _is _isnt _not _and _or _xor _cf _andif _orif
36
+ _div _mod
37
+ )
38
+ end
39
+
40
+ def self.string_double
41
+ @string_double ||= /"[^"\n]*?"/
42
+ end
43
+ def self.string_single
44
+ @string_single ||= /'[^'\n]*?'/
45
+ end
46
+
47
+ def self.digits
48
+ @digits ||= /[0-9]+/
49
+ end
50
+ def self.radix
51
+ @radix ||= /r[0-9a-z]/i
52
+ end
53
+ def self.exponent
54
+ @exponent ||= /(e|&)[+-]?#{Magik.digits}/i
55
+ end
56
+ def self.decimal
57
+ @decimal ||= /\.#{Magik.digits}/
58
+ end
59
+ def self.number
60
+ @number = /#{Magik.digits}(#{Magik.radix}|#{Magik.exponent}|#{Magik.decimal})*/
61
+ end
62
+
63
+ def self.character
64
+ @character ||= /%u[0-9a-z]{4}|%[^\s]+/i
65
+ end
66
+
67
+ def self.simple_identifier
68
+ @simple_identifier ||= /(?>(?:[a-z0-9_!?]|\\.)+)/i
69
+ end
70
+ def self.piped_identifier
71
+ @piped_identifier ||= /\|[^\|\n]*\|/
72
+ end
73
+ def self.identifier
74
+ @identifier ||= /(?:#{Magik.simple_identifier}|#{Magik.piped_identifier})+/i
75
+ end
76
+ def self.package_identifier
77
+ @package_identifier ||= /#{Magik.identifier}:#{Magik.identifier}/
78
+ end
79
+ def self.symbol
80
+ @symbol ||= /:#{Magik.identifier}/i
81
+ end
82
+ def self.global_ref
83
+ @global_ref ||= /@[\s]*#{Magik.identifier}:#{Magik.identifier}/
84
+ end
85
+ def self.label
86
+ @label = /@[\s]*#{Magik.identifier}/
87
+ end
88
+
89
+ state :root do
90
+ rule %r/##(.*)?/, Comment::Doc
91
+ rule %r/#(.*)?/, Comment::Single
92
+
93
+ rule %r/(_method)(\s+)/ do
94
+ groups Keyword, Text::Whitespace
95
+ push :method_name
96
+ end
97
+
98
+ rule %r/(?:#{Magik.keywords.join('|')})\b/, Keyword
99
+
100
+ rule Magik.string_double, Literal::String
101
+ rule Magik.string_single, Literal::String
102
+ rule Magik.symbol, Str::Symbol
103
+ rule Magik.global_ref, Name::Label
104
+ rule Magik.label, Name::Label
105
+ rule Magik.character, Literal::String::Char
106
+ rule Magik.number, Literal::Number
107
+ rule Magik.package_identifier, Name
108
+ rule Magik.identifier, Name
109
+
110
+ rule %r/[\[\]{}()\.,;]/, Punctuation
111
+ rule %r/\$/, Punctuation
112
+ rule %r/(<<|^<<)/, Operator
113
+ rule %r/(>>)/, Operator
114
+ rule %r/[-~+\/*%=&^<>]|!=/, Operator
115
+
116
+ rule %r/[\s]+/, Text::Whitespace
117
+ end
118
+
119
+ state :method_name do
120
+ rule %r/(#{Magik.identifier})(\.)(#{Magik.identifier})/ do
121
+ groups Name::Class, Punctuation, Name::Function
122
+ pop!
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -11,15 +11,10 @@ module Rouge
11
11
  filenames '*.make', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'
12
12
  mimetypes 'text/x-makefile'
13
13
 
14
- bsd_special = %w(
15
- include undef error warning if else elif endif for endfor
16
- )
17
-
18
- gnu_special = %w(
19
- ifeq ifneq ifdef ifndef else endif include -include define endef :
20
- )
21
-
22
- line = /(?:\\.|\\\n|[^\\\n])*/m
14
+ # TODO: Add support for special keywords
15
+ # bsd_special = %w(
16
+ # include undef error warning if else elif endif for endfor
17
+ # )
23
18
 
24
19
  def initialize(opts={})
25
20
  super
@@ -29,53 +24,53 @@ module Rouge
29
24
  start { @shell.reset! }
30
25
 
31
26
  state :root do
32
- rule /\s+/, Text
27
+ rule %r/\s+/, Text
33
28
 
34
- rule /#.*?\n/, Comment
29
+ rule %r/#.*?\n/, Comment
35
30
 
36
- rule /(export)(\s+)(?=[a-zA-Z0-9_\${}\t -]+\n)/ do
31
+ rule %r/(export)(\s+)(?=[a-zA-Z0-9_\${}\t -]+\n)/ do
37
32
  groups Keyword, Text
38
33
  push :export
39
34
  end
40
35
 
41
- rule /export\s+/, Keyword
36
+ rule %r/export\s+/, Keyword
42
37
 
43
38
  # assignment
44
- rule /([a-zA-Z0-9_${}.-]+)(\s*)([!?:+]?=)/m do |m|
39
+ rule %r/([a-zA-Z0-9_${}.-]+)(\s*)([!?:+]?=)/m do |m|
45
40
  token Name::Variable, m[1]
46
41
  token Text, m[2]
47
42
  token Operator, m[3]
48
43
  push :shell_line
49
44
  end
50
45
 
51
- rule /"(\\\\|\\.|[^"\\])*"/, Str::Double
52
- rule /'(\\\\|\\.|[^'\\])*'/, Str::Single
53
- rule /([^\n:]+)(:+)([ \t]*)/ do
46
+ rule %r/"(\\\\|\\.|[^"\\])*"/, Str::Double
47
+ rule %r/'(\\\\|\\.|[^'\\])*'/, Str::Single
48
+ rule %r/([^\n:]+)(:+)([ \t]*)/ do
54
49
  groups Name::Label, Operator, Text
55
50
  push :block_header
56
51
  end
57
52
  end
58
53
 
59
54
  state :export do
60
- rule /[\w\${}-]/, Name::Variable
61
- rule /\n/, Text, :pop!
62
- rule /\s+/, Text
55
+ rule %r/[\w\${}-]/, Name::Variable
56
+ rule %r/\n/, Text, :pop!
57
+ rule %r/\s+/, Text
63
58
  end
64
59
 
65
60
  state :block_header do
66
- rule /[^,\\\n#]+/, Name::Function
67
- rule /,/, Punctuation
68
- rule /#.*?/, Comment
69
- rule /\\\n/, Text
70
- rule /\\./, Text
71
- rule /\n/ do
61
+ rule %r/[^,\\\n#]+/, Name::Function
62
+ rule %r/,/, Punctuation
63
+ rule %r/#.*?/, Comment
64
+ rule %r/\\\n/, Text
65
+ rule %r/\\./, Text
66
+ rule %r/\n/ do
72
67
  token Text
73
68
  goto :block_body
74
69
  end
75
70
  end
76
71
 
77
72
  state :block_body do
78
- rule /(\t[\t ]*)([@-]?)/ do |m|
73
+ rule %r/(\t[\t ]*)([@-]?)/ do
79
74
  groups Text, Punctuation
80
75
  push :shell_line
81
76
  end
@@ -85,9 +80,9 @@ module Rouge
85
80
 
86
81
  state :shell do
87
82
  # macro interpolation
88
- rule /\$\(\s*[a-z_]\w*\s*\)/i, Name::Variable
83
+ rule %r/\$\(\s*[a-z_]\w*\s*\)/i, Name::Variable
89
84
  # $(shell ...)
90
- rule /(\$\()(\s*)(shell)(\s+)/m do
85
+ rule %r/(\$\()(\s*)(shell)(\s+)/m do
91
86
  groups Name::Function, Text, Name::Builtin, Text
92
87
  push :shell_expr
93
88
  end
@@ -100,12 +95,12 @@ module Rouge
100
95
 
101
96
  state :shell_expr do
102
97
  rule(/\(/) { delegate @shell; push }
103
- rule /\)/, Name::Variable, :pop!
98
+ rule %r/\)/, Name::Variable, :pop!
104
99
  mixin :shell
105
100
  end
106
101
 
107
102
  state :shell_line do
108
- rule /\n/, Text, :pop!
103
+ rule %r/\n/, Text, :pop!
109
104
  mixin :shell
110
105
  end
111
106
  end