rouge 3.3.0 → 3.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +15 -3
- data/lib/rouge.rb +49 -41
- data/lib/rouge/cli.rb +64 -15
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/armasm +12 -0
- data/lib/rouge/demos/batchfile +3 -0
- data/lib/rouge/demos/bbcbasic +6 -0
- data/lib/rouge/demos/bpf +7 -0
- data/lib/rouge/demos/brainfuck +5 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/openedge +4 -0
- data/lib/rouge/demos/opentype_feature_file +6 -0
- data/lib/rouge/demos/plist +1 -132
- data/lib/rouge/demos/powershell +12 -48
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/xojo +14 -0
- data/lib/rouge/demos/xpath +2 -0
- data/lib/rouge/demos/xquery +22 -0
- data/lib/rouge/formatter.rb +37 -1
- data/lib/rouge/formatters/html.rb +20 -2
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +6 -11
- data/lib/rouge/formatters/html_table.rb +20 -31
- data/lib/rouge/formatters/terminal256.rb +1 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guessers/disambiguation.rb +25 -0
- data/lib/rouge/guessers/glob_mapping.rb +1 -1
- data/lib/rouge/guessers/modeline.rb +1 -1
- data/lib/rouge/guessers/source.rb +1 -1
- data/lib/rouge/lexer.rb +64 -14
- data/lib/rouge/lexers/abap.rb +11 -11
- data/lib/rouge/lexers/actionscript.rb +34 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +8 -8
- data/lib/rouge/lexers/apple_script.rb +15 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +25 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +4 -4
- data/lib/rouge/lexers/bpf.rb +104 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +12 -12
- data/lib/rouge/lexers/c.rb +34 -57
- data/lib/rouge/lexers/ceylon.rb +6 -34
- data/lib/rouge/lexers/cfscript.rb +26 -26
- data/lib/rouge/lexers/clojure.rb +14 -14
- data/lib/rouge/lexers/cmake.rb +14 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +43 -35
- data/lib/rouge/lexers/common_lisp.rb +37 -37
- data/lib/rouge/lexers/conf.rb +6 -6
- data/lib/rouge/lexers/console.rb +3 -3
- data/lib/rouge/lexers/coq.rb +18 -18
- data/lib/rouge/lexers/cpp.rb +12 -9
- data/lib/rouge/lexers/crystal.rb +70 -70
- data/lib/rouge/lexers/csharp.rb +28 -29
- data/lib/rouge/lexers/css.rb +23 -23
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +59 -59
- data/lib/rouge/lexers/dart.rb +33 -33
- data/lib/rouge/lexers/diff.rb +8 -4
- data/lib/rouge/lexers/digdag.rb +1 -1
- data/lib/rouge/lexers/docker.rb +11 -11
- data/lib/rouge/lexers/dot.rb +16 -16
- data/lib/rouge/lexers/eiffel.rb +20 -20
- data/lib/rouge/lexers/elixir.rb +34 -30
- data/lib/rouge/lexers/elm.rb +29 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +4 -4
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +40 -40
- data/lib/rouge/lexers/fortran.rb +32 -32
- data/lib/rouge/lexers/fsharp.rb +30 -30
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/gherkin.rb +16 -14
- data/lib/rouge/lexers/glsl.rb +1 -5
- data/lib/rouge/lexers/go.rb +2 -2
- data/lib/rouge/lexers/graphql.rb +77 -60
- data/lib/rouge/lexers/groovy.rb +23 -25
- data/lib/rouge/lexers/hack.rb +1 -1
- data/lib/rouge/lexers/haml.rb +25 -29
- data/lib/rouge/lexers/handlebars.rb +31 -20
- data/lib/rouge/lexers/haskell.rb +66 -65
- data/lib/rouge/lexers/hcl.rb +25 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/html.rb +32 -31
- data/lib/rouge/lexers/http.rb +4 -4
- data/lib/rouge/lexers/hylang.rb +14 -14
- data/lib/rouge/lexers/idlang.rb +32 -32
- data/lib/rouge/lexers/igorpro.rb +31 -31
- data/lib/rouge/lexers/ini.rb +12 -12
- data/lib/rouge/lexers/io.rb +7 -7
- data/lib/rouge/lexers/irb.rb +5 -5
- data/lib/rouge/lexers/java.rb +28 -24
- data/lib/rouge/lexers/javascript.rb +57 -61
- data/lib/rouge/lexers/jinja.rb +34 -20
- data/lib/rouge/lexers/json.rb +50 -11
- data/lib/rouge/lexers/json_doc.rb +2 -2
- data/lib/rouge/lexers/jsonnet.rb +18 -18
- data/lib/rouge/lexers/jsp.rb +30 -30
- data/lib/rouge/lexers/jsx.rb +16 -16
- data/lib/rouge/lexers/julia.rb +181 -58
- data/lib/rouge/lexers/kotlin.rb +14 -7
- data/lib/rouge/lexers/lasso.rb +50 -50
- data/lib/rouge/lexers/liquid.rb +76 -53
- data/lib/rouge/lexers/literate_coffeescript.rb +2 -2
- data/lib/rouge/lexers/literate_haskell.rb +5 -5
- data/lib/rouge/lexers/llvm.rb +23 -16
- data/lib/rouge/lexers/lua.rb +3 -3
- data/lib/rouge/lexers/m68k.rb +18 -19
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +56 -34
- data/lib/rouge/lexers/markdown.rb +55 -38
- data/lib/rouge/lexers/mason.rb +115 -0
- data/lib/rouge/lexers/mathematica.rb +11 -11
- data/lib/rouge/lexers/matlab.rb +23 -16
- data/lib/rouge/lexers/moonscript.rb +3 -3
- data/lib/rouge/lexers/mosel.rb +63 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +18 -18
- data/lib/rouge/lexers/nasm.rb +24 -25
- data/lib/rouge/lexers/nginx.rb +14 -14
- data/lib/rouge/lexers/nim.rb +3 -2
- data/lib/rouge/lexers/nix.rb +43 -43
- data/lib/rouge/lexers/objective_c.rb +43 -48
- data/lib/rouge/lexers/ocaml.rb +28 -64
- data/lib/rouge/lexers/ocaml/common.rb +53 -0
- data/lib/rouge/lexers/openedge.rb +429 -0
- data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
- data/lib/rouge/lexers/pascal.rb +4 -4
- data/lib/rouge/lexers/perl.rb +98 -68
- data/lib/rouge/lexers/php.rb +66 -44
- data/lib/rouge/lexers/php/builtins.rb +181 -174
- data/lib/rouge/lexers/plain_text.rb +1 -1
- data/lib/rouge/lexers/plist.rb +14 -14
- data/lib/rouge/lexers/pony.rb +19 -19
- data/lib/rouge/lexers/powershell.rb +184 -638
- data/lib/rouge/lexers/praat.rb +75 -75
- data/lib/rouge/lexers/prolog.rb +26 -20
- data/lib/rouge/lexers/prometheus.rb +30 -30
- data/lib/rouge/lexers/properties.rb +12 -12
- data/lib/rouge/lexers/protobuf.rb +22 -22
- data/lib/rouge/lexers/puppet.rb +32 -32
- data/lib/rouge/lexers/python.rb +52 -52
- data/lib/rouge/lexers/q.rb +12 -12
- data/lib/rouge/lexers/qml.rb +12 -12
- data/lib/rouge/lexers/r.rb +12 -13
- data/lib/rouge/lexers/racket.rb +22 -22
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/ruby.rb +72 -70
- data/lib/rouge/lexers/rust.rb +38 -35
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +8 -8
- data/lib/rouge/lexers/sass/common.rb +40 -40
- data/lib/rouge/lexers/scala.rb +63 -37
- data/lib/rouge/lexers/scheme.rb +18 -18
- data/lib/rouge/lexers/scss.rb +3 -3
- data/lib/rouge/lexers/sed.rb +30 -30
- data/lib/rouge/lexers/shell.rb +62 -53
- data/lib/rouge/lexers/sieve.rb +8 -8
- data/lib/rouge/lexers/slim.rb +26 -26
- data/lib/rouge/lexers/smalltalk.rb +33 -33
- data/lib/rouge/lexers/smarty.rb +19 -19
- data/lib/rouge/lexers/sml.rb +67 -67
- data/lib/rouge/lexers/sqf.rb +1 -1
- data/lib/rouge/lexers/sql.rb +21 -21
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +46 -43
- data/lib/rouge/lexers/tap.rb +20 -20
- data/lib/rouge/lexers/tcl.rb +27 -27
- data/lib/rouge/lexers/terraform.rb +13 -13
- data/lib/rouge/lexers/tex.rb +19 -19
- data/lib/rouge/lexers/toml.rb +19 -19
- data/lib/rouge/lexers/tulip.rb +36 -36
- data/lib/rouge/lexers/turtle.rb +35 -38
- data/lib/rouge/lexers/vala.rb +18 -18
- data/lib/rouge/lexers/vb.rb +27 -27
- data/lib/rouge/lexers/verilog.rb +25 -27
- data/lib/rouge/lexers/vhdl.rb +11 -11
- data/lib/rouge/lexers/viml.rb +14 -14
- data/lib/rouge/lexers/vue.rb +9 -9
- data/lib/rouge/lexers/wollok.rb +26 -26
- data/lib/rouge/lexers/xml.rb +17 -21
- data/lib/rouge/lexers/xojo.rb +61 -0
- data/lib/rouge/lexers/xpath.rb +332 -0
- data/lib/rouge/lexers/xquery.rb +145 -0
- data/lib/rouge/lexers/yaml.rb +63 -61
- data/lib/rouge/plugins/redcarpet.rb +1 -1
- data/lib/rouge/regex_lexer.rb +26 -25
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/theme.rb +4 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/monokai_sublime.rb +2 -1
- data/lib/rouge/themes/pastie.rb +1 -1
- data/lib/rouge/themes/thankful_eyes.rb +1 -1
- data/lib/rouge/themes/tulip.rb +1 -1
- data/lib/rouge/token.rb +30 -22
- data/lib/rouge/util.rb +2 -2
- data/lib/rouge/version.rb +1 -1
- data/rouge.gemspec +4 -3
- metadata +61 -6
@@ -0,0 +1,115 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Rouge
|
5
|
+
module Lexers
|
6
|
+
class Mason < TemplateLexer
|
7
|
+
title 'Mason'
|
8
|
+
desc 'The HTML::Mason framework (https://metacpan.org/pod/HTML::Mason)'
|
9
|
+
tag 'mason'
|
10
|
+
filenames '*.mi', '*.mc', '*.mas', '*.m', '*.mhtml', '*.mcomp', 'autohandler', 'dhandler'
|
11
|
+
mimetypes 'text/x-mason', 'application/x-mason'
|
12
|
+
|
13
|
+
def initialize(*)
|
14
|
+
super
|
15
|
+
@perl = Perl.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.detect?(text)
|
19
|
+
return false if text.doctype?(/((?:ht|x)ml)/)
|
20
|
+
return true if text.doctype?
|
21
|
+
end
|
22
|
+
|
23
|
+
# Note: If you add a tag in the lines below, you also need to modify "disambiguate '*.m'" in file disambiguation.rb
|
24
|
+
TEXT_BLOCKS = %w(text doc)
|
25
|
+
PERL_BLOCKS = %w(args flags attr init once shared perl cleanup filter)
|
26
|
+
COMPONENTS = %w(def method)
|
27
|
+
|
28
|
+
state :root do
|
29
|
+
mixin :mason_tags
|
30
|
+
end
|
31
|
+
|
32
|
+
state :mason_tags do
|
33
|
+
rule %r/\s+/, Text::Whitespace
|
34
|
+
|
35
|
+
rule %r/<%(#{TEXT_BLOCKS.join('|')})>/oi, Comment::Preproc, :text_block
|
36
|
+
|
37
|
+
rule %r/<%(#{PERL_BLOCKS.join('|')})>/oi, Comment::Preproc, :perl_block
|
38
|
+
|
39
|
+
rule %r/(<%(#{COMPONENTS.join('|')}))([^>]*)(>)/oi do |m|
|
40
|
+
token Comment::Preproc, m[1]
|
41
|
+
token Name, m[3]
|
42
|
+
token Comment::Preproc, m[4]
|
43
|
+
push :component_block
|
44
|
+
end
|
45
|
+
|
46
|
+
# perl line
|
47
|
+
rule %r/^(%)(.*)$/ do |m|
|
48
|
+
token Comment::Preproc, m[1]
|
49
|
+
delegate @perl, m[2]
|
50
|
+
end
|
51
|
+
|
52
|
+
# start of component call
|
53
|
+
rule %r/<%/, Comment::Preproc, :component_call
|
54
|
+
|
55
|
+
# start of component with content
|
56
|
+
rule %r/<&\|/ do
|
57
|
+
token Comment::Preproc
|
58
|
+
push :component_with_content
|
59
|
+
push :component_sub
|
60
|
+
end
|
61
|
+
|
62
|
+
# start of component substitution
|
63
|
+
rule %r/<&/, Comment::Preproc, :component_sub
|
64
|
+
|
65
|
+
# fallback to HTML until a mason tag is encountered
|
66
|
+
rule(/(.+?)(?=(<\/?&|<\/?%|^%|^#))/m) { delegate parent }
|
67
|
+
|
68
|
+
# if we get here, there's no more mason tags, so we parse the rest of the doc as HTML
|
69
|
+
rule(/.+/m) { delegate parent }
|
70
|
+
end
|
71
|
+
|
72
|
+
state :perl_block do
|
73
|
+
rule %r/<\/%(#{PERL_BLOCKS.join('|')})>/oi, Comment::Preproc, :pop!
|
74
|
+
rule %r/\s+/, Text::Whitespace
|
75
|
+
rule %r/^(#.*)$/, Comment
|
76
|
+
rule(/(.*?[^"])(?=<\/%)/m) { delegate @perl }
|
77
|
+
end
|
78
|
+
|
79
|
+
state :text_block do
|
80
|
+
rule %r/<\/%(#{TEXT_BLOCKS.join('|')})>/oi, Comment::Preproc, :pop!
|
81
|
+
rule %r/\s+/, Text::Whitespace
|
82
|
+
rule %r/^(#.*)$/, Comment
|
83
|
+
rule %r/(.*?[^"])(?=<\/%)/m, Comment
|
84
|
+
end
|
85
|
+
|
86
|
+
state :component_block do
|
87
|
+
rule %r/<\/%(#{COMPONENTS.join('|')})>/oi, Comment::Preproc, :pop!
|
88
|
+
rule %r/\s+/, Text::Whitespace
|
89
|
+
rule %r/^(#.*)$/, Comment
|
90
|
+
mixin :mason_tags
|
91
|
+
end
|
92
|
+
|
93
|
+
state :component_with_content do
|
94
|
+
rule %r/<\/&>/ do
|
95
|
+
token Comment::Preproc
|
96
|
+
pop!
|
97
|
+
end
|
98
|
+
|
99
|
+
mixin :mason_tags
|
100
|
+
end
|
101
|
+
|
102
|
+
state :component_sub do
|
103
|
+
rule %r/&>/, Comment::Preproc, :pop!
|
104
|
+
|
105
|
+
rule(/(.*?)(?=&>)/m) { delegate @perl }
|
106
|
+
end
|
107
|
+
|
108
|
+
state :component_call do
|
109
|
+
rule %r/%>/, Comment::Preproc, :pop!
|
110
|
+
|
111
|
+
rule(/(.*?)(?=%>)/m) { delegate @perl }
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -56,18 +56,18 @@ module Rouge
|
|
56
56
|
|
57
57
|
# The list of built-in symbols comes from a wolfram server and is created automatically by rake
|
58
58
|
def self.builtins
|
59
|
-
load
|
59
|
+
load File.join(__dir__, 'mathematica/builtins.rb')
|
60
60
|
self.builtins
|
61
61
|
end
|
62
62
|
|
63
63
|
state :root do
|
64
|
-
rule /\s+/, Text::Whitespace
|
65
|
-
rule /\(\*/, Comment, :comment
|
66
|
-
rule /#{base}\^\^#{number_base}#{precision}?(\*\^[+-]?\d+)?/, Num # a number with a base
|
67
|
-
rule /(?:#{number}#{precision}?(?:\*\^[+-]?\d+)?)/, Num # all other numbers
|
64
|
+
rule %r/\s+/, Text::Whitespace
|
65
|
+
rule %r/\(\*/, Comment, :comment
|
66
|
+
rule %r/#{base}\^\^#{number_base}#{precision}?(\*\^[+-]?\d+)?/, Num # a number with a base
|
67
|
+
rule %r/(?:#{number}#{precision}?(?:\*\^[+-]?\d+)?)/, Num # all other numbers
|
68
68
|
rule message, Name::Tag
|
69
69
|
rule in_out, Generic::Prompt
|
70
|
-
rule /#{context_symbol}/m do |m|
|
70
|
+
rule %r/#{context_symbol}/m do |m|
|
71
71
|
match = m[0]
|
72
72
|
if self.class.keywords.include? match
|
73
73
|
token Name::Builtin::Pseudo
|
@@ -85,11 +85,11 @@ module Rouge
|
|
85
85
|
|
86
86
|
# Allow for nested comments and special treatment of ::Section:: or :Author: markup
|
87
87
|
state :comment do
|
88
|
-
rule /\(\*/, Comment, :comment
|
89
|
-
rule /\*\)/, Comment, :pop!
|
90
|
-
rule /::#{identifier}::/, Comment::Preproc
|
91
|
-
rule /[ ]:(#{identifier}|[^\S])+:[ ]/, Comment::Preproc
|
92
|
-
rule /./, Comment
|
88
|
+
rule %r/\(\*/, Comment, :comment
|
89
|
+
rule %r/\*\)/, Comment, :pop!
|
90
|
+
rule %r/::#{identifier}::/, Comment::Preproc
|
91
|
+
rule %r/[ ]:(#{identifier}|[^\S])+:[ ]/, Comment::Preproc
|
92
|
+
rule %r/./, Comment
|
93
93
|
end
|
94
94
|
end
|
95
95
|
end
|
data/lib/rouge/lexers/matlab.rb
CHANGED
@@ -19,25 +19,25 @@ module Rouge
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.builtins
|
22
|
-
load
|
22
|
+
load File.join(__dir__, 'matlab/builtins.rb')
|
23
23
|
self.builtins
|
24
24
|
end
|
25
25
|
|
26
26
|
state :root do
|
27
|
-
rule /\s+/m, Text # Whitespace
|
27
|
+
rule %r/\s+/m, Text # Whitespace
|
28
28
|
rule %r([{]%.*?%[}])m, Comment::Multiline
|
29
|
-
rule /%.*$/, Comment::Single
|
30
|
-
rule /([.][.][.])(.*?)$/ do
|
29
|
+
rule %r/%.*$/, Comment::Single
|
30
|
+
rule %r/([.][.][.])(.*?)$/ do
|
31
31
|
groups(Keyword, Comment)
|
32
32
|
end
|
33
33
|
|
34
|
-
rule /^(!)(.*?)(?=%|$)/ do |m|
|
34
|
+
rule %r/^(!)(.*?)(?=%|$)/ do |m|
|
35
35
|
token Keyword, m[1]
|
36
36
|
delegate Shell, m[2]
|
37
37
|
end
|
38
38
|
|
39
39
|
|
40
|
-
rule /[a-zA-Z][_a-zA-Z0-9]*/m do |m|
|
40
|
+
rule %r/[a-zA-Z][_a-zA-Z0-9]*/m do |m|
|
41
41
|
match = m[0]
|
42
42
|
if self.class.keywords.include? match
|
43
43
|
token Keyword
|
@@ -50,22 +50,29 @@ module Rouge
|
|
50
50
|
|
51
51
|
rule %r{[(){};:,\/\\\]\[]}, Punctuation
|
52
52
|
|
53
|
-
rule /~=|==|<<|>>|[-~+\/*%=<>&^|.@]/, Operator
|
53
|
+
rule %r/~=|==|<<|>>|[-~+\/*%=<>&^|.@]/, Operator
|
54
54
|
|
55
55
|
|
56
|
-
rule /(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
|
57
|
-
rule /\d+e[+-]?[0-9]+/i, Num::Float
|
58
|
-
rule /\d+L/, Num::Integer::Long
|
59
|
-
rule /\d+/, Num::Integer
|
56
|
+
rule %r/(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
|
57
|
+
rule %r/\d+e[+-]?[0-9]+/i, Num::Float
|
58
|
+
rule %r/\d+L/, Num::Integer::Long
|
59
|
+
rule %r/\d+/, Num::Integer
|
60
60
|
|
61
|
-
rule /'(?=(.*'))/, Str::Single, :
|
62
|
-
rule /
|
61
|
+
rule %r/'(?=(.*'))/, Str::Single, :chararray
|
62
|
+
rule %r/"(?=(.*"))/, Str::Double, :string
|
63
|
+
rule %r/'/, Operator
|
64
|
+
end
|
65
|
+
|
66
|
+
state :chararray do
|
67
|
+
rule %r/[^']+/, Str::Single
|
68
|
+
rule %r/''/, Str::Escape
|
69
|
+
rule %r/'/, Str::Single, :pop!
|
63
70
|
end
|
64
71
|
|
65
72
|
state :string do
|
66
|
-
rule /[^
|
67
|
-
rule /
|
68
|
-
rule /
|
73
|
+
rule %r/[^"]+/, Str::Double
|
74
|
+
rule %r/""/, Str::Escape
|
75
|
+
rule %r/"/, Str::Double, :pop!
|
69
76
|
end
|
70
77
|
end
|
71
78
|
end
|
@@ -40,18 +40,18 @@ module Rouge
|
|
40
40
|
|
41
41
|
state :root do
|
42
42
|
rule %r(#!(.*?)$), Comment::Preproc # shebang
|
43
|
-
rule //, Text, :main
|
43
|
+
rule %r//, Text, :main
|
44
44
|
end
|
45
45
|
|
46
46
|
state :base do
|
47
|
-
ident = '(
|
47
|
+
ident = '(?:\w\w*)'
|
48
48
|
|
49
49
|
rule %r((?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?'), Num::Float
|
50
50
|
rule %r((?i)\d+e[+-]?\d+), Num::Float
|
51
51
|
rule %r((?i)0x[0-9a-f]*), Num::Hex
|
52
52
|
rule %r(\d+), Num::Integer
|
53
53
|
rule %r(@#{ident}*), Name::Variable::Instance
|
54
|
-
rule %r([A-Z]
|
54
|
+
rule %r([A-Z]\w*), Name::Class
|
55
55
|
rule %r("?[^"]+":), Literal::String::Symbol
|
56
56
|
rule %r(#{ident}:), Literal::String::Symbol
|
57
57
|
rule %r(:#{ident}), Literal::String::Symbol
|
data/lib/rouge/lexers/mosel.rb
CHANGED
@@ -7,7 +7,7 @@ module Rouge
|
|
7
7
|
tag 'mosel'
|
8
8
|
filenames '*.mos'
|
9
9
|
title "Mosel"
|
10
|
-
desc "An optimization language used by Fico's Xpress."
|
10
|
+
desc "An optimization language used by Fico's Xpress."
|
11
11
|
# http://www.fico.com/en/products/fico-xpress-optimization-suite
|
12
12
|
filenames '*.mos'
|
13
13
|
|
@@ -24,46 +24,46 @@ module Rouge
|
|
24
24
|
############################################################################################################################
|
25
25
|
|
26
26
|
core_keywords = %w(
|
27
|
-
and array as
|
28
|
-
boolean break
|
29
|
-
case count counter
|
30
|
-
declarations div do dynamic
|
31
|
-
elif else end evaluation exit
|
32
|
-
false forall forward from function
|
33
|
-
if imports in include initialisations initializations integer inter is_binary is_continuous is_free is_integer is_partint is_semcont is_semint is_sos1 is_sos2
|
34
|
-
linctr list
|
27
|
+
and array as
|
28
|
+
boolean break
|
29
|
+
case count counter
|
30
|
+
declarations div do dynamic
|
31
|
+
elif else end evaluation exit
|
32
|
+
false forall forward from function
|
33
|
+
if imports in include initialisations initializations integer inter is_binary is_continuous is_free is_integer is_partint is_semcont is_semint is_sos1 is_sos2
|
34
|
+
linctr list
|
35
35
|
max min mod model mpvar
|
36
36
|
next not of options or
|
37
|
-
package parameters procedure
|
38
|
-
public prod range real record repeat requirements
|
37
|
+
package parameters procedure
|
38
|
+
public prod range real record repeat requirements
|
39
39
|
set string sum
|
40
40
|
then to true
|
41
41
|
union until uses
|
42
42
|
version
|
43
43
|
while with
|
44
44
|
)
|
45
|
-
|
45
|
+
|
46
46
|
core_functions = %w(
|
47
47
|
abs arctan assert
|
48
48
|
bitflip bitneg bitset bitshift bittest bitval
|
49
49
|
ceil cos create currentdate currenttime cuthead cuttail
|
50
50
|
delcell exists exit exp exportprob
|
51
|
-
fclose fflush finalize findfirst findlast floor fopen fselect fskipline
|
51
|
+
fclose fflush finalize findfirst findlast floor fopen fselect fskipline
|
52
52
|
getact getcoeff getcoeffs getdual getfid getfirst gethead getfname getlast getobjval getparam getrcost getreadcnt getreverse getsize getslack getsol gettail gettype getvars
|
53
|
-
iseof ishidden isodd ln log
|
54
|
-
makesos1 makesos2 maxlist minlist
|
55
|
-
publish
|
53
|
+
iseof ishidden isodd ln log
|
54
|
+
makesos1 makesos2 maxlist minlist
|
55
|
+
publish
|
56
56
|
random read readln reset reverse round
|
57
|
-
setcoeff sethidden setioerr setname setparam setrandseed settype sin splithead splittail sqrt strfmt substr
|
58
|
-
timestamp
|
59
|
-
unpublish
|
57
|
+
setcoeff sethidden setioerr setname setparam setrandseed settype sin splithead splittail sqrt strfmt substr
|
58
|
+
timestamp
|
59
|
+
unpublish
|
60
60
|
write writeln
|
61
61
|
)
|
62
|
-
|
62
|
+
|
63
63
|
############################################################################################################################
|
64
64
|
# mmxprs module elements
|
65
65
|
############################################################################################################################
|
66
|
-
|
66
|
+
|
67
67
|
mmxprs_functions = %w(
|
68
68
|
addmipsol
|
69
69
|
basisstability
|
@@ -79,26 +79,26 @@ module Rouge
|
|
79
79
|
readbasis readdirs readsol refinemipsol rejectintsol repairinfeas resetbasis resetiis resetsol
|
80
80
|
savebasis savemipsol savesol savestate selectsol setbstat setcallback setcbcutoff setgndata setlb setmipdir setmodcut setsol setub setucbdata stopoptimize
|
81
81
|
unloadprob
|
82
|
-
writebasis writedirs writeprob writesol
|
82
|
+
writebasis writedirs writeprob writesol
|
83
83
|
xor
|
84
84
|
)
|
85
|
-
|
85
|
+
|
86
86
|
mmxpres_constants = %w(XPRS_OPT XPRS_UNF XPRS_INF XPRS_UNB XPRS_OTH)
|
87
|
-
|
87
|
+
|
88
88
|
mmxprs_parameters = %w(XPRS_colorder XPRS_enumduplpol XPRS_enummaxsol XPRS_enumsols XPRS_fullversion XPRS_loadnames XPRS_problem XPRS_probname XPRS_verbose)
|
89
|
-
|
90
|
-
|
89
|
+
|
90
|
+
|
91
91
|
############################################################################################################################
|
92
92
|
# mmsystem module elements
|
93
93
|
############################################################################################################################
|
94
|
-
|
94
|
+
|
95
95
|
mmsystem_functions = %w(
|
96
96
|
addmonths
|
97
97
|
copytext cuttext
|
98
|
-
deltext
|
98
|
+
deltext
|
99
99
|
endswith expandpath
|
100
100
|
fcopy fdelete findfiles findtext fmove
|
101
|
-
getasnumber getchar getcwd getdate getday getdaynum getdays getdirsep
|
101
|
+
getasnumber getchar getcwd getdate getday getdaynum getdays getdirsep
|
102
102
|
getendparse setendparse
|
103
103
|
getenv getfsize getfstat getftime gethour getminute getmonth getmsec getpathsep
|
104
104
|
getqtype setqtype
|
@@ -108,29 +108,29 @@ module Rouge
|
|
108
108
|
getstart setstart
|
109
109
|
getsucc setsucc
|
110
110
|
getsysinfo getsysstat gettime
|
111
|
-
gettmpdir
|
111
|
+
gettmpdir
|
112
112
|
gettrim settrim
|
113
113
|
getweekday getyear
|
114
114
|
inserttext isvalid
|
115
115
|
makedir makepath newtar
|
116
116
|
newzip nextfield
|
117
|
-
openpipe
|
117
|
+
openpipe
|
118
118
|
parseextn parseint parsereal parsetext pastetext pathmatch pathsplit
|
119
119
|
qsort quote
|
120
|
-
readtextline regmatch regreplace removedir removefiles
|
120
|
+
readtextline regmatch regreplace removedir removefiles
|
121
121
|
setchar setdate setday setenv sethour
|
122
122
|
setminute setmonth setmsec setsecond settime setyear sleep startswith system
|
123
123
|
tarlist textfmt tolower toupper trim
|
124
124
|
untar unzip
|
125
125
|
ziplist
|
126
126
|
)
|
127
|
-
|
127
|
+
|
128
128
|
mmsystem_parameters = %w(datefmt datetimefmt monthnames sys_endparse sys_fillchar sys_pid sys_qtype sys_regcache sys_sepchar)
|
129
129
|
|
130
130
|
############################################################################################################################
|
131
131
|
# mmjobs module elements
|
132
132
|
############################################################################################################################
|
133
|
-
|
133
|
+
|
134
134
|
mmjobs_instance_mgmt_functions = %w(
|
135
135
|
clearaliases connect
|
136
136
|
disconnect
|
@@ -138,7 +138,7 @@ module Rouge
|
|
138
138
|
getaliases getbanner gethostalias
|
139
139
|
sethostalias
|
140
140
|
)
|
141
|
-
|
141
|
+
|
142
142
|
mmjobs_model_mgmt_functions = %w(
|
143
143
|
compile
|
144
144
|
detach
|
@@ -148,7 +148,7 @@ module Rouge
|
|
148
148
|
setcontrol setdefstream setmodpar setworkdir stop
|
149
149
|
unload
|
150
150
|
)
|
151
|
-
|
151
|
+
|
152
152
|
mmjobs_synchornization_functions = %w(
|
153
153
|
dropnextevent
|
154
154
|
getclass getfromgid getfromid getfromuid getnextevent getvalue
|
@@ -158,15 +158,15 @@ module Rouge
|
|
158
158
|
send setgid setuid
|
159
159
|
wait waitfor
|
160
160
|
)
|
161
|
-
|
161
|
+
|
162
162
|
mmjobs_functions = mmjobs_instance_mgmt_functions + mmjobs_model_mgmt_functions + mmjobs_synchornization_functions
|
163
|
-
|
163
|
+
|
164
164
|
mmjobs_parameters = %w(conntmpl defaultnode fsrvdelay fsrvnbiter fsrvport jobid keepalive nodenumber parentnumber)
|
165
165
|
|
166
166
|
|
167
167
|
state :whitespace do
|
168
168
|
# Spaces
|
169
|
-
rule /\s+/m, Text
|
169
|
+
rule %r/\s+/m, Text
|
170
170
|
# ! Comments
|
171
171
|
rule %r((!).*$\n?), Comment::Single
|
172
172
|
# (! Comments !)
|
@@ -182,14 +182,14 @@ module Rouge
|
|
182
182
|
# The escape sequences are not interpreted if they are contained in strings that are enclosed in single quotes.
|
183
183
|
|
184
184
|
state :single_quotes do
|
185
|
-
rule /'/, Str::Single, :pop!
|
186
|
-
rule /[^']+/, Str::Single
|
185
|
+
rule %r/'/, Str::Single, :pop!
|
186
|
+
rule %r/[^']+/, Str::Single
|
187
187
|
end
|
188
188
|
|
189
189
|
state :double_quotes do
|
190
|
-
rule /"/, Str::Double, :pop!
|
191
|
-
rule /(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)/, Str::Escape
|
192
|
-
rule /[^"]/, Str::Double
|
190
|
+
rule %r/"/, Str::Double, :pop!
|
191
|
+
rule %r/(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)/, Str::Escape
|
192
|
+
rule %r/[^"]/, Str::Double
|
193
193
|
end
|
194
194
|
|
195
195
|
state :base do
|
@@ -200,25 +200,25 @@ module Rouge
|
|
200
200
|
rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num
|
201
201
|
rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
|
202
202
|
# rule %r{'([^']|'')*'}, Str
|
203
|
-
# rule /"(\\\\|\\"|[^"])*"/, Str
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
rule /(true|false)\b/i, Name::Builtin
|
208
|
-
rule /\b(#{core_keywords.join('|')})\b/i, Keyword
|
209
|
-
rule /\b(#{core_functions.join('|')})\b/, Name::Builtin
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
rule /\b(#{mmxprs_functions.join('|')})\b/, Name::Function
|
214
|
-
rule /\b(#{mmxpres_constants.join('|')})\b/, Name::Constant
|
215
|
-
rule /\b(#{mmxprs_parameters.join('|')})\b/i, Name::Property
|
216
|
-
|
217
|
-
rule /\b(#{mmsystem_functions.join('|')})\b/i, Name::Function
|
218
|
-
rule /\b(#{mmsystem_parameters.join('|')})\b/, Name::Property
|
219
|
-
|
220
|
-
rule /\b(#{mmjobs_functions.join('|')})\b/i, Name::Function
|
221
|
-
rule /\b(#{mmjobs_parameters.join('|')})\b/, Name::Property
|
203
|
+
# rule %r/"(\\\\|\\"|[^"])*"/, Str
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
rule %r/(true|false)\b/i, Name::Builtin
|
208
|
+
rule %r/\b(#{core_keywords.join('|')})\b/i, Keyword
|
209
|
+
rule %r/\b(#{core_functions.join('|')})\b/, Name::Builtin
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
rule %r/\b(#{mmxprs_functions.join('|')})\b/, Name::Function
|
214
|
+
rule %r/\b(#{mmxpres_constants.join('|')})\b/, Name::Constant
|
215
|
+
rule %r/\b(#{mmxprs_parameters.join('|')})\b/i, Name::Property
|
216
|
+
|
217
|
+
rule %r/\b(#{mmsystem_functions.join('|')})\b/i, Name::Function
|
218
|
+
rule %r/\b(#{mmsystem_parameters.join('|')})\b/, Name::Property
|
219
|
+
|
220
|
+
rule %r/\b(#{mmjobs_functions.join('|')})\b/i, Name::Function
|
221
|
+
rule %r/\b(#{mmjobs_parameters.join('|')})\b/, Name::Property
|
222
222
|
|
223
223
|
rule id, Name
|
224
224
|
end
|