rouge 1.10.1 → 1.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rouge/cli.rb +1 -1
  3. data/lib/rouge/demos/actionscript +4 -0
  4. data/lib/rouge/demos/apiblueprint +33 -0
  5. data/lib/rouge/demos/biml +38 -0
  6. data/lib/rouge/demos/ceylon +7 -0
  7. data/lib/rouge/demos/cmake +7 -0
  8. data/lib/rouge/demos/coq +11 -0
  9. data/lib/rouge/demos/d +16 -0
  10. data/lib/rouge/demos/eiffel +30 -0
  11. data/lib/rouge/demos/fortran +22 -0
  12. data/lib/rouge/demos/gradle +10 -0
  13. data/lib/rouge/demos/jinja +9 -0
  14. data/lib/rouge/demos/jsonnet +28 -0
  15. data/lib/rouge/demos/julia +11 -0
  16. data/lib/rouge/demos/nasm +26 -0
  17. data/lib/rouge/demos/objective_c +4 -0
  18. data/lib/rouge/demos/protobuf +5 -0
  19. data/lib/rouge/demos/shell_session +10 -0
  20. data/lib/rouge/demos/smarty +12 -0
  21. data/lib/rouge/demos/tap +5 -0
  22. data/lib/rouge/demos/twig +9 -0
  23. data/lib/rouge/demos/typescript +1 -0
  24. data/lib/rouge/demos/verilog +27 -0
  25. data/lib/rouge/demos/viml +14 -5
  26. data/lib/rouge/formatters/html_wrapper.rb +11 -0
  27. data/lib/rouge/formatters/terminal256.rb +1 -1
  28. data/lib/rouge/lexer.rb +4 -2
  29. data/lib/rouge/lexers/actionscript.rb +195 -0
  30. data/lib/rouge/lexers/apache.rb +23 -20
  31. data/lib/rouge/lexers/apache/keywords.yml +721 -410
  32. data/lib/rouge/lexers/apiblueprint.rb +51 -0
  33. data/lib/rouge/lexers/biml.rb +41 -0
  34. data/lib/rouge/lexers/c.rb +7 -2
  35. data/lib/rouge/lexers/ceylon.rb +123 -0
  36. data/lib/rouge/lexers/clojure.rb +1 -1
  37. data/lib/rouge/lexers/cmake.rb +206 -0
  38. data/lib/rouge/lexers/coffeescript.rb +1 -1
  39. data/lib/rouge/lexers/coq.rb +187 -0
  40. data/lib/rouge/lexers/cpp.rb +12 -1
  41. data/lib/rouge/lexers/csharp.rb +12 -5
  42. data/lib/rouge/lexers/css.rb +2 -0
  43. data/lib/rouge/lexers/d.rb +176 -0
  44. data/lib/rouge/lexers/diff.rb +9 -9
  45. data/lib/rouge/lexers/eiffel.rb +65 -0
  46. data/lib/rouge/lexers/fortran.rb +142 -0
  47. data/lib/rouge/lexers/gradle.rb +37 -0
  48. data/lib/rouge/lexers/groovy.rb +2 -2
  49. data/lib/rouge/lexers/ini.rb +2 -2
  50. data/lib/rouge/lexers/java.rb +11 -8
  51. data/lib/rouge/lexers/javascript.rb +2 -1
  52. data/lib/rouge/lexers/jinja.rb +137 -0
  53. data/lib/rouge/lexers/jsonnet.rb +151 -0
  54. data/lib/rouge/lexers/julia.rb +172 -0
  55. data/lib/rouge/lexers/markdown.rb +1 -0
  56. data/lib/rouge/lexers/nasm.rb +203 -0
  57. data/lib/rouge/lexers/objective_c.rb +11 -0
  58. data/lib/rouge/lexers/php.rb +1 -1
  59. data/lib/rouge/lexers/powershell.rb +1 -1
  60. data/lib/rouge/lexers/protobuf.rb +70 -0
  61. data/lib/rouge/lexers/python.rb +23 -0
  62. data/lib/rouge/lexers/r.rb +53 -20
  63. data/lib/rouge/lexers/ruby.rb +4 -4
  64. data/lib/rouge/lexers/rust.rb +2 -2
  65. data/lib/rouge/lexers/shell_session.rb +29 -0
  66. data/lib/rouge/lexers/smarty.rb +91 -0
  67. data/lib/rouge/lexers/sql.rb +1 -1
  68. data/lib/rouge/lexers/swift.rb +20 -5
  69. data/lib/rouge/lexers/tap.rb +91 -0
  70. data/lib/rouge/lexers/twig.rb +37 -0
  71. data/lib/rouge/lexers/typescript.rb +46 -0
  72. data/lib/rouge/lexers/verilog.rb +164 -0
  73. data/lib/rouge/regex_lexer.rb +1 -1
  74. data/lib/rouge/version.rb +1 -1
  75. data/rouge.gemspec +1 -1
  76. metadata +47 -6
  77. data/lib/rouge/formatters/html_inline.rb +0 -20
  78. data/lib/rouge/formatters/html_linewise.rb +0 -31
@@ -0,0 +1,51 @@
1
+ module Rouge
2
+ module Lexers
3
+ load_lexer 'markdown.rb'
4
+
5
+ class APIBlueprint < Markdown
6
+ title 'API Blueprint'
7
+ desc 'Markdown based API description language.'
8
+
9
+ tag 'apiblueprint'
10
+ aliases 'apiblueprint', 'apib'
11
+ filenames '*.apib'
12
+ mimetypes 'text/vnd.apiblueprint'
13
+
14
+ def self.analyze_text(text)
15
+ return 1 if text.start_with?('FORMAT: 1A\n')
16
+ end
17
+
18
+ prepend :root do
19
+ # Metadata
20
+ rule(/(\S+)(:\s*)(.*)$/) do
21
+ groups Name::Variable, Punctuation, Literal::String
22
+ end
23
+
24
+ # Resource Group
25
+ rule(/^(#+)(\s*Group\s+)(.*)$/) do
26
+ groups Punctuation, Keyword, Generic::Heading
27
+ end
28
+
29
+ # Resource \ Action
30
+ rule(/^(#+)(.*)(\[.*\])$/) do
31
+ groups Punctuation, Generic::Heading, Literal::String
32
+ end
33
+
34
+ # Relation
35
+ rule(/^([\+\-\*])(\s*Relation:)(\s*.*)$/) do
36
+ groups Punctuation, Keyword, Literal::String
37
+ end
38
+
39
+ # MSON
40
+ rule(/^(\s+[\+\-\*]\s*)(Attributes|Parameters)(.*)$/) do
41
+ groups Punctuation, Keyword, Literal::String
42
+ end
43
+
44
+ # Request/Response
45
+ rule(/^([\+\-\*]\s*)(Request|Response)(\s+\d\d\d)?(.*)$/) do
46
+ groups Punctuation, Keyword, Literal::Number, Literal::String
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ module Rouge
2
+ module Lexers
3
+ load_lexer 'xml.rb'
4
+
5
+ class BIML < XML
6
+ title "BIML"
7
+ desc "BIML, Business Intelligence Markup Language"
8
+ tag 'biml'
9
+ filenames '*.biml'
10
+
11
+ def self.analyze_text(text)
12
+ return 1 if text =~ /<\s*Biml\b/
13
+ end
14
+
15
+ prepend :root do
16
+ rule %r(<#@\s*)m, Name::Tag, :directive_tag
17
+
18
+ rule %r(<#[=]?\s*)m, Name::Tag, :directive_as_csharp
19
+ end
20
+
21
+ prepend :attr do
22
+ #TODO: how to deal with embedded <# tags inside a attribute string
23
+ #rule %r("<#[=]?\s*)m, Name::Tag, :directive_as_csharp
24
+ end
25
+
26
+ state :directive_as_csharp do
27
+ rule /\s*#>\s*/m, Name::Tag, :pop!
28
+ rule %r(.*?(?=\s*#>\s*))m do
29
+ delegate CSharp
30
+ end
31
+ end
32
+
33
+ state :directive_tag do
34
+ rule /\s+/m, Text
35
+ rule /[\w.:-]+\s*=/m, Name::Attribute, :attr
36
+ rule /[\w]+\s*/m, Name::Attribute
37
+ rule %r(/?\s*#>), Name::Tag, :pop!
38
+ end
39
+ end
40
+ end
41
+ end
@@ -19,6 +19,9 @@ module Rouge
19
19
  auto break case const continue default do else enum extern
20
20
  for goto if register restricted return sizeof static struct
21
21
  switch typedef union volatile virtual while
22
+
23
+ _Alignas _Alignof _Atomic _Generic _Imaginary
24
+ _Noreturn _Static_assert _Thread_local
22
25
  )
23
26
  end
24
27
 
@@ -38,6 +41,8 @@ module Rouge
38
41
  int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t
39
42
  uint_fast64_t intptr_t uintptr_t intmax_t
40
43
  uintmax_t
44
+
45
+ char16_t char32_t
41
46
  )
42
47
  end
43
48
 
@@ -96,8 +101,8 @@ module Rouge
96
101
 
97
102
  state :statements do
98
103
  mixin :whitespace
99
- rule /L?"/, Str, :string
100
- rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
104
+ rule /(u8|u|U|L)?"/, Str, :string
105
+ rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
101
106
  rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
102
107
  rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
103
108
  rule /0x[0-9a-f]+[lu]*/i, Num::Hex
@@ -0,0 +1,123 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Ceylon < RegexLexer
6
+ tag 'ceylon'
7
+ filenames '*.ceylon'
8
+ mimetypes 'text/x-ceylon'
9
+
10
+ title "Ceylon"
11
+ desc 'Say more, more clearly.'
12
+
13
+ keywords = %w(
14
+ break case catch continue else finally for in
15
+ if return switch this throw try while is exists dynamic
16
+ nonempty then outer assert let
17
+ )
18
+
19
+ keywords_declaration = %w(
20
+ abstracts extends satisfies super given of out assign
21
+ )
22
+
23
+ keywords_type = %w(
24
+ function value void new
25
+ )
26
+
27
+ keywords_namespace = %w(
28
+ assembly module package
29
+ )
30
+
31
+ keywords_constant = %w(
32
+ true false null
33
+ )
34
+
35
+ annotations = %w(
36
+ shared abstract formal default actual variable deprecated small
37
+ late literal doc by see throws optional license tagged final native
38
+ annotation sealed
39
+ )
40
+
41
+ state :whitespace do
42
+ rule %r([^\S\n]+), Text
43
+ rule %r(//.*?\n), Comment::Single
44
+ rule %r(/\*), Comment::Multiline
45
+ end
46
+
47
+ state :root do
48
+ mixin :whitespace
49
+
50
+ rule %r((shared|abstract|formal|default|actual|variable|deprecated|small|
51
+ late|literal|doc|by|see|throws|optional|license|tagged|final|native|
52
+ annotation|sealed)\b), Name::Decorator
53
+
54
+ rule %r((break|case|catch|continue|else|finally|for|in|
55
+ if|return|switch|this|throw|try|while|is|exists|dynamic|
56
+ nonempty|then|outer|assert|let)\b), Keyword
57
+
58
+ rule %r((abstracts|extends|satisfies|super|given|of|out|assign)\b), Keyword::Declaration
59
+
60
+ rule %r((function|value|void|new)\b), Keyword::Type
61
+
62
+ rule %r((assembly|module|package)(\s+)) do
63
+ groups Keyword::Namespace, Text
64
+ push :import
65
+ end
66
+
67
+ rule %r((true|false|null)\b), Keyword::Constant
68
+
69
+ rule %r((class|interface|object|alias)(\s+)) do
70
+ groups Keyword::Declaration, Text
71
+ push :class
72
+ end
73
+
74
+ rule %r((import)(\s+)) do
75
+ groups Keyword::Namespace, Text
76
+ push :import
77
+ end
78
+
79
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String
80
+ rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
81
+ rule %r(".*``.*``.*"', String::Interpol
82
+ rule %r(\.)([a-z_]\w*)) do
83
+ groups Operator, Name::Attribute
84
+ end
85
+ rule %r([a-zA-Z_]\w*:), Name::Label
86
+ rule %r((\\I[a-z]|[A-Z])\w*), Name::Decorator
87
+ rule %r([a-zA-Z_]\w*), Name
88
+ rule %r([~^*!%&\[\](){}<>|+=:;,./?-`]), Operator
89
+ rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
90
+ rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
91
+ Literal::Number::Float
92
+ rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
93
+ rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
94
+ Literal::Number::Float
95
+ rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex
96
+ rule %r(#[0-9a-fA-F]+), Literal::Number::Hex
97
+ rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin
98
+ rule %r(\$[01]+), Literal::Number::Bin
99
+ rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer
100
+ rule %r([0-9]+[kMGTP]?), Literal::Number::Integer
101
+ rule %r(\n), Text
102
+
103
+ end
104
+
105
+ state :class do
106
+ mixin :whitespace
107
+ rule %r([A-Za-z_]\w*), Name::Class, :pop!
108
+ end
109
+
110
+ state :import do
111
+ rule %r([a-z][\w.]*), Name::Namespace, :pop!
112
+ rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop!
113
+ end
114
+
115
+ state :comment do
116
+ rule %r([^*/]), Comment.Multiline
117
+ rule %r(/\*), Comment::Multiline, :push!
118
+ rule %r(\*/), Comment::Multiline, :pop!
119
+ rule %r([*/]), Comment::Multiline
120
+ end
121
+ end
122
+ end
123
+ end
@@ -9,7 +9,7 @@ module Rouge
9
9
  tag 'clojure'
10
10
  aliases 'clj', 'cljs'
11
11
 
12
- filenames '*.clj', '*.cljs'
12
+ filenames '*.clj', '*.cljs', '*.cljc'
13
13
 
14
14
  mimetypes 'text/x-clojure', 'application/x-clojure'
15
15
 
@@ -0,0 +1,206 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class CMake < RegexLexer
6
+ title 'CMake'
7
+ desc 'The cross-platform, open-source build system'
8
+ tag 'cmake'
9
+ filenames 'CMakeLists.txt', '*.cmake'
10
+ mimetypes 'text/x-cmake'
11
+
12
+ SPACE = '[ \t]'
13
+ BRACKET_OPEN = '\[=*\['
14
+
15
+ STATES_MAP = {
16
+ :root => Text,
17
+ :bracket_string => Str::Double,
18
+ :quoted_argument => Str::Double,
19
+ :bracket_comment => Comment::Multiline,
20
+ :variable_reference => Name::Variable,
21
+ }
22
+
23
+ BUILTIN_COMMANDS = Set.new %w[
24
+ add_compile_options
25
+ add_custom_command
26
+ add_custom_target
27
+ add_definitions
28
+ add_dependencies
29
+ add_executable
30
+ add_library
31
+ add_subdirectory
32
+ add_test
33
+ aux_source_directory
34
+ break
35
+ build_command
36
+ build_name
37
+ cmake_host_system_information
38
+ cmake_minimum_required
39
+ cmake_policy
40
+ configure_file
41
+ create_test_sourcelist
42
+ define_property
43
+ else
44
+ elseif
45
+ enable_language
46
+ enable_testing
47
+ endforeach
48
+ endfunction
49
+ endif
50
+ endmacro
51
+ endwhile
52
+ exec_program
53
+ execute_process
54
+ export
55
+ export_library_dependencies
56
+ file
57
+ find_file
58
+ find_library
59
+ find_package
60
+ find_path
61
+ find_program
62
+ fltk_wrap_ui
63
+ foreach
64
+ function
65
+ get_cmake_property
66
+ get_directory_property
67
+ get_filename_component
68
+ get_property
69
+ get_source_file_property
70
+ get_target_property
71
+ get_test_property
72
+ if
73
+ include
74
+ include_directories
75
+ include_external_msproject
76
+ include_regular_expression
77
+ install
78
+ install_files
79
+ install_programs
80
+ install_targets
81
+ link_directories
82
+ link_libraries
83
+ list
84
+ load_cache
85
+ load_command
86
+ macro
87
+ make_directory
88
+ mark_as_advanced
89
+ math
90
+ message
91
+ option
92
+ output_required_files
93
+ project
94
+ qt_wrap_cpp
95
+ qt_wrap_ui
96
+ remove
97
+ remove_definitions
98
+ return
99
+ separate_arguments
100
+ set
101
+ set_directory_properties
102
+ set_property
103
+ set_source_files_properties
104
+ set_target_properties
105
+ set_tests_properties
106
+ site_name
107
+ source_group
108
+ string
109
+ subdir_depends
110
+ subdirs
111
+ target_compile_definitions
112
+ target_compile_options
113
+ target_include_directories
114
+ target_link_libraries
115
+ try_compile
116
+ try_run
117
+ unset
118
+ use_mangled_mesa
119
+ utility_source
120
+ variable_requires
121
+ variable_watch
122
+ while
123
+ write_file
124
+ ]
125
+
126
+ state :default do
127
+ rule /\r\n?|\n/ do
128
+ token STATES_MAP[state.name.to_sym]
129
+ end
130
+ rule /./ do
131
+ token STATES_MAP[state.name.to_sym]
132
+ end
133
+ end
134
+
135
+ state :variable_interpolation do
136
+ rule /\$\{/ do
137
+ token Str::Interpol
138
+ push :variable_reference
139
+ end
140
+ end
141
+
142
+ state :bracket_close do
143
+ rule /\]=*\]/ do |m|
144
+ token STATES_MAP[state.name.to_sym]
145
+ goto :root if m[0].length == @bracket_len
146
+ end
147
+ end
148
+
149
+ state :root do
150
+ mixin :variable_interpolation
151
+
152
+ rule /#{SPACE}/, Text
153
+ rule /[()]/, Punctuation
154
+
155
+ rule /##{BRACKET_OPEN}/ do |m|
156
+ token Comment::Multiline
157
+ @bracket_len = m[0].length - 1 # decount '#'
158
+ goto :bracket_comment
159
+ end
160
+ rule /#{BRACKET_OPEN}/ do |m|
161
+ token Str::Double
162
+ @bracket_len = m[0].length
163
+ goto :bracket_string
164
+ end
165
+
166
+ rule /"/, Str::Double, :quoted_argument
167
+
168
+ rule /([A-Za-z_][A-Za-z0-9_]*)(#{SPACE}*)(\()/ do |m|
169
+ groups BUILTIN_COMMANDS.include?(m[1]) ? Name::Builtin : Name::Function, Text, Punctuation
170
+ end
171
+
172
+ rule /#.*/, Comment::Single
173
+
174
+ mixin :default
175
+ end
176
+
177
+ state :bracket_string do
178
+ mixin :bracket_close
179
+ mixin :variable_interpolation
180
+ mixin :default
181
+ end
182
+
183
+ state :bracket_comment do
184
+ mixin :bracket_close
185
+ mixin :default
186
+ end
187
+
188
+ state :variable_reference do
189
+ mixin :variable_interpolation
190
+
191
+ rule /}/, Str::Interpol, :pop!
192
+
193
+ mixin :default
194
+ end
195
+
196
+ state :quoted_argument do
197
+ mixin :variable_interpolation
198
+
199
+ rule /"/, Str::Double, :root
200
+ rule /\\[()#" \\$@^trn;]/, Str::Escape
201
+
202
+ mixin :default
203
+ end
204
+ end
205
+ end
206
+ end