rouge 3.2.1 → 3.3.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/bin/rougify +1 -0
  4. data/lib/rouge.rb +1 -0
  5. data/lib/rouge/cli.rb +2 -1
  6. data/lib/rouge/demos/jsp +29 -0
  7. data/lib/rouge/demos/m68k +16 -0
  8. data/lib/rouge/demos/mathematica +8 -0
  9. data/lib/rouge/demos/sqf +14 -0
  10. data/lib/rouge/formatter.rb +2 -1
  11. data/lib/rouge/formatters/html.rb +1 -0
  12. data/lib/rouge/formatters/html_inline.rb +1 -0
  13. data/lib/rouge/formatters/html_legacy.rb +1 -0
  14. data/lib/rouge/formatters/html_linewise.rb +1 -0
  15. data/lib/rouge/formatters/html_pygments.rb +2 -0
  16. data/lib/rouge/formatters/html_table.rb +2 -1
  17. data/lib/rouge/formatters/null.rb +1 -0
  18. data/lib/rouge/formatters/terminal256.rb +1 -0
  19. data/lib/rouge/guesser.rb +2 -0
  20. data/lib/rouge/guessers/disambiguation.rb +5 -0
  21. data/lib/rouge/guessers/filename.rb +2 -0
  22. data/lib/rouge/guessers/glob_mapping.rb +2 -0
  23. data/lib/rouge/guessers/mimetype.rb +2 -0
  24. data/lib/rouge/guessers/modeline.rb +2 -0
  25. data/lib/rouge/guessers/source.rb +2 -0
  26. data/lib/rouge/guessers/util.rb +2 -0
  27. data/lib/rouge/lexer.rb +1 -0
  28. data/lib/rouge/lexers/abap.rb +2 -0
  29. data/lib/rouge/lexers/actionscript.rb +1 -0
  30. data/lib/rouge/lexers/apache.rb +2 -0
  31. data/lib/rouge/lexers/apiblueprint.rb +2 -0
  32. data/lib/rouge/lexers/apple_script.rb +2 -0
  33. data/lib/rouge/lexers/awk.rb +1 -0
  34. data/lib/rouge/lexers/biml.rb +2 -0
  35. data/lib/rouge/lexers/bsl.rb +1 -0
  36. data/lib/rouge/lexers/c.rb +1 -0
  37. data/lib/rouge/lexers/ceylon.rb +1 -0
  38. data/lib/rouge/lexers/cfscript.rb +1 -0
  39. data/lib/rouge/lexers/clojure.rb +1 -0
  40. data/lib/rouge/lexers/cmake.rb +1 -0
  41. data/lib/rouge/lexers/coffeescript.rb +1 -0
  42. data/lib/rouge/lexers/common_lisp.rb +1 -0
  43. data/lib/rouge/lexers/conf.rb +1 -0
  44. data/lib/rouge/lexers/console.rb +1 -0
  45. data/lib/rouge/lexers/coq.rb +1 -0
  46. data/lib/rouge/lexers/cpp.rb +1 -0
  47. data/lib/rouge/lexers/crystal.rb +1 -0
  48. data/lib/rouge/lexers/csharp.rb +1 -0
  49. data/lib/rouge/lexers/css.rb +1 -0
  50. data/lib/rouge/lexers/d.rb +1 -0
  51. data/lib/rouge/lexers/dart.rb +1 -0
  52. data/lib/rouge/lexers/diff.rb +2 -0
  53. data/lib/rouge/lexers/digdag.rb +2 -0
  54. data/lib/rouge/lexers/docker.rb +1 -0
  55. data/lib/rouge/lexers/dot.rb +1 -0
  56. data/lib/rouge/lexers/eiffel.rb +1 -0
  57. data/lib/rouge/lexers/elixir.rb +2 -1
  58. data/lib/rouge/lexers/elm.rb +1 -0
  59. data/lib/rouge/lexers/erb.rb +1 -0
  60. data/lib/rouge/lexers/erlang.rb +1 -0
  61. data/lib/rouge/lexers/factor.rb +1 -0
  62. data/lib/rouge/lexers/fortran.rb +2 -0
  63. data/lib/rouge/lexers/fsharp.rb +2 -1
  64. data/lib/rouge/lexers/gherkin.rb +1 -0
  65. data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
  66. data/lib/rouge/lexers/glsl.rb +1 -0
  67. data/lib/rouge/lexers/go.rb +1 -0
  68. data/lib/rouge/lexers/gradle.rb +1 -0
  69. data/lib/rouge/lexers/graphql.rb +1 -0
  70. data/lib/rouge/lexers/groovy.rb +1 -0
  71. data/lib/rouge/lexers/hack.rb +1 -0
  72. data/lib/rouge/lexers/haml.rb +1 -0
  73. data/lib/rouge/lexers/handlebars.rb +1 -0
  74. data/lib/rouge/lexers/haskell.rb +1 -0
  75. data/lib/rouge/lexers/hcl.rb +1 -0
  76. data/lib/rouge/lexers/html.rb +1 -0
  77. data/lib/rouge/lexers/http.rb +1 -0
  78. data/lib/rouge/lexers/hylang.rb +1 -0
  79. data/lib/rouge/lexers/idlang.rb +2 -0
  80. data/lib/rouge/lexers/igorpro.rb +1 -0
  81. data/lib/rouge/lexers/ini.rb +1 -0
  82. data/lib/rouge/lexers/io.rb +1 -0
  83. data/lib/rouge/lexers/irb.rb +1 -0
  84. data/lib/rouge/lexers/java.rb +1 -0
  85. data/lib/rouge/lexers/javascript.rb +1 -0
  86. data/lib/rouge/lexers/jinja.rb +1 -0
  87. data/lib/rouge/lexers/json.rb +1 -0
  88. data/lib/rouge/lexers/json_doc.rb +1 -0
  89. data/lib/rouge/lexers/jsonnet.rb +1 -0
  90. data/lib/rouge/lexers/jsp.rb +120 -0
  91. data/lib/rouge/lexers/jsx.rb +2 -0
  92. data/lib/rouge/lexers/julia.rb +1 -0
  93. data/lib/rouge/lexers/kotlin.rb +64 -16
  94. data/lib/rouge/lexers/lasso.rb +1 -0
  95. data/lib/rouge/lexers/liquid.rb +1 -0
  96. data/lib/rouge/lexers/literate_coffeescript.rb +1 -0
  97. data/lib/rouge/lexers/literate_haskell.rb +1 -0
  98. data/lib/rouge/lexers/llvm.rb +1 -0
  99. data/lib/rouge/lexers/lua.rb +1 -0
  100. data/lib/rouge/lexers/lua/builtins.rb +2 -0
  101. data/lib/rouge/lexers/m68k.rb +144 -0
  102. data/lib/rouge/lexers/make.rb +1 -0
  103. data/lib/rouge/lexers/markdown.rb +1 -0
  104. data/lib/rouge/lexers/mathematica.rb +96 -0
  105. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  106. data/lib/rouge/lexers/matlab.rb +1 -0
  107. data/lib/rouge/lexers/matlab/builtins.rb +2 -0
  108. data/lib/rouge/lexers/moonscript.rb +1 -0
  109. data/lib/rouge/lexers/mosel.rb +1 -0
  110. data/lib/rouge/lexers/mxml.rb +1 -0
  111. data/lib/rouge/lexers/nasm.rb +1 -0
  112. data/lib/rouge/lexers/nginx.rb +1 -0
  113. data/lib/rouge/lexers/nim.rb +1 -0
  114. data/lib/rouge/lexers/nix.rb +1 -0
  115. data/lib/rouge/lexers/objective_c.rb +2 -1
  116. data/lib/rouge/lexers/ocaml.rb +1 -0
  117. data/lib/rouge/lexers/pascal.rb +1 -0
  118. data/lib/rouge/lexers/perl.rb +1 -0
  119. data/lib/rouge/lexers/php.rb +1 -0
  120. data/lib/rouge/lexers/php/builtins.rb +2 -0
  121. data/lib/rouge/lexers/plain_text.rb +1 -0
  122. data/lib/rouge/lexers/plist.rb +2 -0
  123. data/lib/rouge/lexers/pony.rb +1 -0
  124. data/lib/rouge/lexers/powershell.rb +1 -0
  125. data/lib/rouge/lexers/praat.rb +1 -0
  126. data/lib/rouge/lexers/prolog.rb +2 -0
  127. data/lib/rouge/lexers/prometheus.rb +2 -0
  128. data/lib/rouge/lexers/properties.rb +1 -0
  129. data/lib/rouge/lexers/protobuf.rb +1 -0
  130. data/lib/rouge/lexers/puppet.rb +2 -1
  131. data/lib/rouge/lexers/python.rb +35 -20
  132. data/lib/rouge/lexers/q.rb +2 -0
  133. data/lib/rouge/lexers/qml.rb +1 -0
  134. data/lib/rouge/lexers/r.rb +1 -0
  135. data/lib/rouge/lexers/racket.rb +2 -0
  136. data/lib/rouge/lexers/ruby.rb +3 -1
  137. data/lib/rouge/lexers/rust.rb +7 -1
  138. data/lib/rouge/lexers/sass.rb +1 -0
  139. data/lib/rouge/lexers/sass/common.rb +1 -0
  140. data/lib/rouge/lexers/scala.rb +1 -0
  141. data/lib/rouge/lexers/scheme.rb +1 -0
  142. data/lib/rouge/lexers/scss.rb +1 -0
  143. data/lib/rouge/lexers/sed.rb +1 -0
  144. data/lib/rouge/lexers/shell.rb +1 -0
  145. data/lib/rouge/lexers/sieve.rb +1 -0
  146. data/lib/rouge/lexers/slim.rb +1 -0
  147. data/lib/rouge/lexers/smalltalk.rb +1 -0
  148. data/lib/rouge/lexers/smarty.rb +1 -0
  149. data/lib/rouge/lexers/sml.rb +1 -0
  150. data/lib/rouge/lexers/sqf.rb +109 -0
  151. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  152. data/lib/rouge/lexers/sql.rb +1 -0
  153. data/lib/rouge/lexers/swift.rb +2 -1
  154. data/lib/rouge/lexers/tap.rb +2 -0
  155. data/lib/rouge/lexers/tcl.rb +1 -0
  156. data/lib/rouge/lexers/terraform.rb +1 -0
  157. data/lib/rouge/lexers/tex.rb +1 -0
  158. data/lib/rouge/lexers/toml.rb +1 -0
  159. data/lib/rouge/lexers/tsx.rb +1 -0
  160. data/lib/rouge/lexers/tulip.rb +2 -0
  161. data/lib/rouge/lexers/turtle.rb +1 -0
  162. data/lib/rouge/lexers/twig.rb +1 -0
  163. data/lib/rouge/lexers/typescript.rb +1 -0
  164. data/lib/rouge/lexers/typescript/common.rb +1 -0
  165. data/lib/rouge/lexers/vala.rb +1 -0
  166. data/lib/rouge/lexers/vb.rb +1 -0
  167. data/lib/rouge/lexers/verilog.rb +1 -0
  168. data/lib/rouge/lexers/vhdl.rb +1 -0
  169. data/lib/rouge/lexers/viml.rb +1 -0
  170. data/lib/rouge/lexers/viml/keywords.rb +2 -0
  171. data/lib/rouge/lexers/vue.rb +2 -0
  172. data/lib/rouge/lexers/wollok.rb +1 -0
  173. data/lib/rouge/lexers/xml.rb +1 -0
  174. data/lib/rouge/lexers/yaml.rb +1 -0
  175. data/lib/rouge/plugins/redcarpet.rb +1 -0
  176. data/lib/rouge/regex_lexer.rb +1 -0
  177. data/lib/rouge/template_lexer.rb +1 -0
  178. data/lib/rouge/text_analyzer.rb +1 -0
  179. data/lib/rouge/theme.rb +1 -0
  180. data/lib/rouge/themes/base16.rb +1 -0
  181. data/lib/rouge/themes/colorful.rb +1 -0
  182. data/lib/rouge/themes/github.rb +1 -0
  183. data/lib/rouge/themes/gruvbox.rb +1 -0
  184. data/lib/rouge/themes/igor_pro.rb +1 -0
  185. data/lib/rouge/themes/molokai.rb +1 -0
  186. data/lib/rouge/themes/monokai.rb +1 -0
  187. data/lib/rouge/themes/monokai_sublime.rb +2 -0
  188. data/lib/rouge/themes/pastie.rb +1 -0
  189. data/lib/rouge/themes/thankful_eyes.rb +1 -0
  190. data/lib/rouge/themes/tulip.rb +1 -0
  191. data/lib/rouge/token.rb +1 -0
  192. data/lib/rouge/util.rb +1 -0
  193. data/lib/rouge/version.rb +2 -1
  194. data/rouge.gemspec +2 -0
  195. metadata +13 -3
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'set'
2
4
  module Rouge
3
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -20,7 +21,7 @@ module Rouge
20
21
  rule /#.*$/, Comment::Single
21
22
  rule %r{\b(case|cond|end|bc|lc|if|unless|try|loop|receive|fn|defmodule|
22
23
  defp?|defprotocol|defimpl|defrecord|defmacrop?|defdelegate|
23
- defexception|exit|raise|throw|after|rescue|catch|else)\b(?![?!])|
24
+ defexception|defguardp?|defstruct|exit|raise|throw|after|rescue|catch|else)\b(?![?!])|
24
25
  (?<!\.)\b(do|\-\>)\b}x, Keyword
25
26
  rule /\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])/, Keyword::Namespace
26
27
  rule /(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
2
4
  # vim: set ts=2 sw=2 et:
3
5
 
4
6
  # TODO: Implement format list support.
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -6,7 +7,7 @@ module Rouge
6
7
  title "FSharp"
7
8
  desc 'F# (fsharp.net)'
8
9
  tag 'fsharp'
9
- filenames '*.fs', '*.fsx'
10
+ filenames '*.fs', '*.fsi', '*.fsx'
10
11
  mimetypes 'application/fsharp-script', 'text/x-fsharp', 'text/x-fsi'
11
12
 
12
13
  def self.keywords
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
2
4
  # automatically generated by `rake builtins:gherkin`
3
5
  module Rouge
4
6
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,6 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
2
4
  # vim: set ts=2 sw=2 et:
3
5
 
4
6
  module Rouge
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -0,0 +1,120 @@
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 /<%--/, Comment, :jsp_comment
23
+
24
+ rule /<%@\s*(#{directives.join('|')})\s*/, Name::Tag, :jsp_directive
25
+
26
+ rule /<jsp:directive\.(#{directives.join('|')})/, Name::Tag, :jsp_directive2
27
+
28
+ rule /<jsp:(#{actions.join('|')})>/, Name::Tag, :jsp_expression
29
+
30
+ # start of tag, e.g. <c:if>
31
+ rule /<[a-zA-Z]*:[a-zA-Z]*\s*/, Name::Tag, :jsp_tag
32
+
33
+ # end of tag, e.g. </c:if>
34
+ rule /<\/[a-zA-Z]*:[a-zA-Z]*>/, Name::Tag
35
+
36
+ rule /<%[!=]?/, 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 /(--%>)/, Comment, :pop!
45
+ rule /./m, Comment
46
+ end
47
+
48
+ state :jsp_directive do
49
+ rule /(%>)/, Name::Tag, :pop!
50
+ mixin :attributes
51
+ rule(/(.+?)(?=%>)/m) { delegate parent }
52
+ end
53
+
54
+ state :jsp_directive2 do
55
+ rule /(\/>)/, Name::Tag, :pop!
56
+ mixin :attributes
57
+ rule(/(.+?)(?=\/>)/m) { delegate parent }
58
+ end
59
+
60
+ state :jsp_expression do
61
+ rule /<\/jsp:(#{actions.join('|')})>/, Name::Tag, :pop!
62
+ mixin :attributes
63
+ rule(/[^<\/]+/) { delegate @java }
64
+ end
65
+
66
+ state :jsp_expression2 do
67
+ rule /%>/, Name::Tag, :pop!
68
+ rule(/[^%>]+/) { delegate @java }
69
+ end
70
+
71
+ state :jsp_tag do
72
+ rule /\/?>/, Name::Tag, :pop!
73
+ mixin :attributes
74
+ rule(/(.+?)(?=\/?>)/m) { delegate parent }
75
+ end
76
+
77
+ state :attributes do
78
+ rule /\s*[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr
79
+ end
80
+
81
+ state :attr do
82
+ rule /"/ do
83
+ token Str
84
+ goto :double_quotes
85
+ end
86
+
87
+ rule /'/ do
88
+ token Str
89
+ goto :single_quotes
90
+ end
91
+
92
+ rule /[^\s>]+/, Str, :pop!
93
+ end
94
+
95
+ state :double_quotes do
96
+ rule /"/, Str, :pop!
97
+ rule /\$\{/, Str::Interpol, :jsp_interp
98
+ rule /[^"]+/, Str
99
+ end
100
+
101
+ state :single_quotes do
102
+ rule /'/, Str, :pop!
103
+ rule /\$\{/, Str::Interpol, :jsp_interp
104
+ rule /[^']+/, Str
105
+ end
106
+
107
+ state :jsp_interp do
108
+ rule /\}/, Str::Interpol, :pop!
109
+ rule /'/, Literal, :jsp_interp_literal_start
110
+ rule(/[^'\}]+/) { delegate @java }
111
+ end
112
+
113
+ state :jsp_interp_literal_start do
114
+ rule /'/, Literal, :pop!
115
+ rule /[^']*/, Literal
116
+ end
117
+
118
+ end
119
+ end
120
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rouge
2
4
  module Lexers
3
5
  load_lexer 'javascript.rb'
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -24,25 +25,18 @@ module Rouge
24
25
  )
25
26
 
26
27
  name = %r'@?[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}][\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Nl}\p{Nd}\p{Pc}\p{Cf}\p{Mn}\p{Mc}]*'
28
+ name_backtick = %r'#{name}|`#{name}`'
27
29
 
28
- id = %r'(#{name}|`#{name}`)'
30
+ id = %r'(#{name_backtick})'
29
31
 
30
32
  state :root do
31
- rule %r'^\s*\[.*?\]', Name::Attribute
32
- rule %r'[^\S\n]+', Text
33
- rule %r'\\\n', Text # line continuation
34
- rule %r'//.*?$', Comment::Single
35
- rule %r'/[*].*?[*]/'m, Comment::Multiline
36
- rule %r'\n', Text
37
- rule %r'::|!!|\?[:.]', Operator
38
- rule %r"(\.\.)", Operator
39
- rule %r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation
40
- rule %r'[{}]', Punctuation
41
- rule %r'@"(""|[^"])*"'m, Str
42
- rule %r'""".*?"""'m, Str
43
- rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
44
- rule %r"'\\.'|'[^\\]'", Str::Char
45
- rule %r"[0-9](\.[0-9]+)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?", Num
33
+ rule %r'(\))(\s*)(:)(\s+)(#{name_backtick})(<)' do
34
+ groups Punctuation, Text, Punctuation, Text, Name::Class, Punctuation
35
+ push :generic_parameters
36
+ end
37
+ rule %r'(\))(\s*)(:)(\s+)(#{name_backtick})' do
38
+ groups Punctuation, Text, Punctuation, Text, Name::Class
39
+ end
46
40
  rule %r'\b(companion)(\s+)(object)\b' do
47
41
  groups Keyword, Text, Keyword
48
42
  end
@@ -50,16 +44,47 @@ module Rouge
50
44
  groups Keyword::Declaration, Text
51
45
  push :class
52
46
  end
47
+ rule %r'\b(fun)(\s+)' do
48
+ groups Keyword, Text
49
+ push :function
50
+ end
51
+ rule %r'(#{name_backtick})(:)(\s+)(#{name_backtick})(<)' do
52
+ groups Name::Variable, Punctuation, Text, Name::Class, Punctuation
53
+ push :generic_parameters
54
+ end
55
+ rule %r'(#{name_backtick})(:)(\s+)(#{name_backtick})' do
56
+ groups Name::Variable, Punctuation, Text, Name::Class
57
+ end
53
58
  rule %r'\b(package|import)(\s+)' do
54
59
  groups Keyword, Text
55
60
  push :package
56
61
  end
62
+ rule %r'\b(val|var)(\s+)(\()' do
63
+ groups Keyword::Declaration, Text, Punctuation
64
+ push :destructure
65
+ end
57
66
  rule %r'\b(val|var)(\s+)' do
58
67
  groups Keyword::Declaration, Text
59
68
  push :property
60
69
  end
61
70
  rule %r/\bfun\b/, Keyword
62
71
  rule /\b(?:#{keywords.join('|')})\b/, Keyword
72
+ rule %r'^\s*\[.*?\]', Name::Attribute
73
+ rule %r'[^\S\n]+', Text
74
+ rule %r'\\\n', Text # line continuation
75
+ rule %r'//.*?$', Comment::Single
76
+ rule %r'/[*].*?[*]/'m, Comment::Multiline
77
+ rule %r'\n', Text
78
+ rule %r'::|!!|\?[:.]', Operator
79
+ rule %r"(\.\.)", Operator
80
+ rule %r'[~!%^&*()+=|\[\]:;,.<>/?-]', Punctuation
81
+ rule %r'[{}]', Punctuation
82
+ rule %r'@"(""|[^"])*"'m, Str
83
+ rule %r'""".*?"""'m, Str
84
+ rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
85
+ rule %r"'\\.'|'[^\\]'", Str::Char
86
+ rule %r"[0-9](\.[0-9]+)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?", Num
87
+ rule /@#{id}/, Name::Decorator
63
88
  rule id, Name
64
89
  end
65
90
 
@@ -71,9 +96,32 @@ module Rouge
71
96
  rule id, Name::Class, :pop!
72
97
  end
73
98
 
99
+ state :function do
100
+ rule %r'(<)', Punctuation, :generic_parameters
101
+ rule %r'(\s+)', Text
102
+ rule %r'(#{name_backtick})(\.)' do
103
+ groups Name::Class, Punctuation
104
+ end
105
+ rule id, Name::Function, :pop!
106
+ end
107
+
108
+ state :generic_parameters do
109
+ rule id, Name::Class
110
+ rule %r'(,)', Punctuation
111
+ rule %r'(\s+)', Text
112
+ rule %r'(>)', Punctuation, :pop!
113
+ end
114
+
74
115
  state :property do
75
116
  rule id, Name::Property, :pop!
76
117
  end
118
+
119
+ state :destructure do
120
+ rule %r'(,)', Punctuation
121
+ rule %r'(\))', Punctuation, :pop!
122
+ rule %r'(\s+)', Text
123
+ rule id, Name::Property
124
+ end
77
125
  end
78
126
  end
79
127
  end