rouge 3.2.0 → 3.18.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.
- checksums.yaml +5 -5
- data/Gemfile +17 -3
- data/bin/rougify +1 -0
- data/lib/rouge.rb +67 -43
- data/lib/rouge/cli.rb +84 -17
- data/lib/rouge/demos/ada +26 -0
- data/lib/rouge/demos/apex +9 -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/clean +6 -0
- data/lib/rouge/demos/cmhg +8 -0
- data/lib/rouge/demos/csvs +8 -0
- data/lib/rouge/demos/cuda +11 -0
- data/lib/rouge/demos/cypher +5 -0
- data/lib/rouge/demos/cython +6 -0
- data/lib/rouge/demos/datastudio +21 -0
- data/lib/rouge/demos/ecl +18 -0
- data/lib/rouge/demos/eex +1 -0
- data/lib/rouge/demos/epp +4 -0
- data/lib/rouge/demos/escape +3 -0
- data/lib/rouge/demos/freefem +16 -0
- data/lib/rouge/demos/gdscript +18 -0
- data/lib/rouge/demos/ghc-cmm +23 -0
- data/lib/rouge/demos/ghc-core +26 -0
- data/lib/rouge/demos/haxe +5 -0
- data/lib/rouge/demos/hocon +8 -0
- data/lib/rouge/demos/hql +5 -0
- data/lib/rouge/demos/isbl +4 -0
- data/lib/rouge/demos/jsl +3 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/liquid +0 -1
- data/lib/rouge/demos/lustre +6 -0
- data/lib/rouge/demos/lutin +18 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/magik +6 -0
- data/lib/rouge/demos/mason +22 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/minizinc +23 -0
- data/lib/rouge/demos/msgtrans +4 -0
- data/lib/rouge/demos/nasm +6 -6
- data/lib/rouge/demos/nesasm +11 -0
- data/lib/rouge/demos/objective_cpp +17 -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/q +6 -0
- data/lib/rouge/demos/reasonml +12 -0
- data/lib/rouge/demos/rego +8 -0
- data/lib/rouge/demos/robot_framework +27 -0
- data/lib/rouge/demos/sas +13 -0
- data/lib/rouge/demos/slice +10 -0
- data/lib/rouge/demos/solidity +13 -0
- data/lib/rouge/demos/sparql +6 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/supercollider +11 -0
- data/lib/rouge/demos/terraform +0 -15
- data/lib/rouge/demos/ttcn3 +6 -0
- data/lib/rouge/demos/vcl +12 -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/demos/yang +17 -0
- data/lib/rouge/formatter.rb +39 -2
- data/lib/rouge/formatters/html.rb +21 -2
- data/lib/rouge/formatters/html_inline.rb +1 -0
- data/lib/rouge/formatters/html_legacy.rb +1 -0
- data/lib/rouge/formatters/html_line_table.rb +53 -0
- data/lib/rouge/formatters/html_linewise.rb +7 -11
- data/lib/rouge/formatters/html_pygments.rb +2 -0
- data/lib/rouge/formatters/html_table.rb +21 -31
- data/lib/rouge/formatters/null.rb +1 -0
- data/lib/rouge/formatters/terminal256.rb +23 -5
- data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
- data/lib/rouge/formatters/tex.rb +92 -0
- data/lib/rouge/guesser.rb +2 -0
- data/lib/rouge/guessers/disambiguation.rb +35 -0
- data/lib/rouge/guessers/filename.rb +2 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -1
- data/lib/rouge/guessers/mimetype.rb +2 -0
- data/lib/rouge/guessers/modeline.rb +3 -1
- data/lib/rouge/guessers/source.rb +3 -1
- data/lib/rouge/guessers/util.rb +2 -0
- data/lib/rouge/lexer.rb +71 -15
- data/lib/rouge/lexers/abap.rb +13 -11
- data/lib/rouge/lexers/actionscript.rb +35 -34
- data/lib/rouge/lexers/ada.rb +162 -0
- data/lib/rouge/lexers/apache.rb +13 -15
- data/lib/rouge/lexers/apache/keywords.rb +15 -0
- data/lib/rouge/lexers/apex.rb +126 -0
- data/lib/rouge/lexers/apiblueprint.rb +2 -0
- data/lib/rouge/lexers/apple_script.rb +17 -14
- data/lib/rouge/lexers/armasm.rb +145 -0
- data/lib/rouge/lexers/awk.rb +26 -25
- data/lib/rouge/lexers/batchfile.rb +164 -0
- data/lib/rouge/lexers/bbcbasic.rb +112 -0
- data/lib/rouge/lexers/biml.rb +6 -4
- data/lib/rouge/lexers/bpf.rb +118 -0
- data/lib/rouge/lexers/brainfuck.rb +53 -0
- data/lib/rouge/lexers/bsl.rb +13 -12
- data/lib/rouge/lexers/c.rb +35 -57
- data/lib/rouge/lexers/ceylon.rb +7 -34
- data/lib/rouge/lexers/cfscript.rb +27 -26
- data/lib/rouge/lexers/clean.rb +156 -0
- data/lib/rouge/lexers/clojure.rb +15 -14
- data/lib/rouge/lexers/cmake.rb +16 -14
- data/lib/rouge/lexers/cmhg.rb +34 -0
- data/lib/rouge/lexers/coffeescript.rb +90 -49
- data/lib/rouge/lexers/common_lisp.rb +39 -38
- data/lib/rouge/lexers/conf.rb +7 -6
- data/lib/rouge/lexers/console.rb +92 -38
- data/lib/rouge/lexers/coq.rb +27 -23
- data/lib/rouge/lexers/cpp.rb +24 -13
- data/lib/rouge/lexers/crystal.rb +71 -70
- data/lib/rouge/lexers/csharp.rb +29 -29
- data/lib/rouge/lexers/css.rb +24 -23
- data/lib/rouge/lexers/csvs.rb +44 -0
- data/lib/rouge/lexers/cuda.rb +35 -0
- data/lib/rouge/lexers/cypher.rb +108 -0
- data/lib/rouge/lexers/cython.rb +151 -0
- data/lib/rouge/lexers/d.rb +64 -63
- data/lib/rouge/lexers/dart.rb +34 -33
- data/lib/rouge/lexers/datastudio.rb +138 -0
- data/lib/rouge/lexers/diff.rb +10 -4
- data/lib/rouge/lexers/digdag.rb +3 -1
- data/lib/rouge/lexers/docker.rb +12 -11
- data/lib/rouge/lexers/dot.rb +19 -18
- data/lib/rouge/lexers/ecl.rb +175 -0
- data/lib/rouge/lexers/eex.rb +52 -0
- data/lib/rouge/lexers/eiffel.rb +21 -20
- data/lib/rouge/lexers/elixir.rb +52 -36
- data/lib/rouge/lexers/elm.rb +30 -29
- data/lib/rouge/lexers/epp.rb +51 -0
- data/lib/rouge/lexers/erb.rb +5 -4
- data/lib/rouge/lexers/erlang.rb +1 -0
- data/lib/rouge/lexers/escape.rb +58 -0
- data/lib/rouge/lexers/factor.rb +41 -40
- data/lib/rouge/lexers/fortran.rb +34 -32
- data/lib/rouge/lexers/freefem.rb +240 -0
- data/lib/rouge/lexers/fsharp.rb +33 -31
- data/lib/rouge/lexers/gdscript.rb +171 -0
- data/lib/rouge/lexers/ghc_cmm.rb +340 -0
- data/lib/rouge/lexers/ghc_core.rb +151 -0
- data/lib/rouge/lexers/gherkin.rb +17 -14
- data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
- data/lib/rouge/lexers/glsl.rb +2 -5
- data/lib/rouge/lexers/go.rb +3 -2
- data/lib/rouge/lexers/gradle.rb +1 -0
- data/lib/rouge/lexers/graphql.rb +78 -60
- data/lib/rouge/lexers/groovy.rb +24 -25
- data/lib/rouge/lexers/hack.rb +2 -1
- data/lib/rouge/lexers/haml.rb +26 -29
- data/lib/rouge/lexers/handlebars.rb +32 -20
- data/lib/rouge/lexers/haskell.rb +67 -65
- data/lib/rouge/lexers/haxe.rb +246 -0
- data/lib/rouge/lexers/hcl.rb +26 -25
- data/lib/rouge/lexers/hocon.rb +86 -0
- data/lib/rouge/lexers/hql.rb +139 -0
- data/lib/rouge/lexers/html.rb +33 -31
- data/lib/rouge/lexers/http.rb +10 -9
- data/lib/rouge/lexers/hylang.rb +15 -14
- data/lib/rouge/lexers/idlang.rb +34 -32
- data/lib/rouge/lexers/igorpro.rb +32 -31
- data/lib/rouge/lexers/ini.rb +13 -12
- data/lib/rouge/lexers/io.rb +10 -9
- data/lib/rouge/lexers/irb.rb +6 -5
- data/lib/rouge/lexers/isbl.rb +97 -0
- data/lib/rouge/lexers/isbl/builtins.rb +17 -0
- data/lib/rouge/lexers/java.rb +29 -25
- data/lib/rouge/lexers/javascript.rb +58 -61
- data/lib/rouge/lexers/jinja.rb +39 -22
- data/lib/rouge/lexers/jsl.rb +55 -0
- data/lib/rouge/lexers/json.rb +54 -11
- data/lib/rouge/lexers/json_doc.rb +8 -5
- data/lib/rouge/lexers/jsonnet.rb +19 -18
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +18 -16
- data/lib/rouge/lexers/julia.rb +182 -58
- data/lib/rouge/lexers/kotlin.rb +78 -26
- data/lib/rouge/lexers/lasso.rb +54 -58
- data/lib/rouge/lexers/lasso/keywords.rb +14 -0
- data/lib/rouge/lexers/liquid.rb +116 -118
- data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
- data/lib/rouge/lexers/literate_haskell.rb +6 -5
- data/lib/rouge/lexers/llvm.rb +66 -49
- data/lib/rouge/lexers/lua.rb +43 -4
- data/lib/rouge/lexers/lua/builtins.rb +2 -0
- data/lib/rouge/lexers/lustre.rb +79 -0
- data/lib/rouge/lexers/lutin.rb +33 -0
- data/lib/rouge/lexers/m68k.rb +143 -0
- data/lib/rouge/lexers/magik.rb +127 -0
- data/lib/rouge/lexers/make.rb +57 -34
- data/lib/rouge/lexers/markdown.rb +67 -39
- data/lib/rouge/lexers/mason.rb +110 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +26 -17
- data/lib/rouge/lexers/matlab/builtins.rb +4 -4
- data/lib/rouge/lexers/minizinc.rb +87 -0
- data/lib/rouge/lexers/moonscript.rb +4 -3
- data/lib/rouge/lexers/mosel.rb +64 -63
- data/lib/rouge/lexers/msgtrans.rb +26 -0
- data/lib/rouge/lexers/mxml.rb +19 -18
- data/lib/rouge/lexers/nasm.rb +43 -169
- data/lib/rouge/lexers/nesasm.rb +78 -0
- data/lib/rouge/lexers/nginx.rb +15 -14
- data/lib/rouge/lexers/nim.rb +4 -2
- data/lib/rouge/lexers/nix.rb +44 -43
- data/lib/rouge/lexers/objective_c.rb +5 -178
- data/lib/rouge/lexers/objective_c/common.rb +184 -0
- data/lib/rouge/lexers/objective_cpp.rb +31 -0
- data/lib/rouge/lexers/ocaml.rb +29 -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 +6 -5
- data/lib/rouge/lexers/perl.rb +102 -67
- data/lib/rouge/lexers/php.rb +91 -53
- data/lib/rouge/lexers/php/builtins.rb +183 -174
- data/lib/rouge/lexers/plain_text.rb +2 -1
- data/lib/rouge/lexers/plist.rb +16 -14
- data/lib/rouge/lexers/pony.rb +21 -20
- data/lib/rouge/lexers/powershell.rb +190 -638
- data/lib/rouge/lexers/praat.rb +76 -75
- data/lib/rouge/lexers/prolog.rb +27 -19
- data/lib/rouge/lexers/prometheus.rb +32 -30
- data/lib/rouge/lexers/properties.rb +13 -12
- data/lib/rouge/lexers/protobuf.rb +23 -22
- data/lib/rouge/lexers/puppet.rb +33 -32
- data/lib/rouge/lexers/python.rb +124 -99
- data/lib/rouge/lexers/q.rb +17 -14
- data/lib/rouge/lexers/qml.rb +13 -12
- data/lib/rouge/lexers/r.rb +13 -13
- data/lib/rouge/lexers/racket.rb +47 -22
- data/lib/rouge/lexers/reasonml.rb +65 -0
- data/lib/rouge/lexers/rego.rb +45 -0
- data/lib/rouge/lexers/robot_framework.rb +249 -0
- data/lib/rouge/lexers/ruby.rb +88 -71
- data/lib/rouge/lexers/rust.rb +45 -44
- data/lib/rouge/lexers/sas.rb +563 -0
- data/lib/rouge/lexers/sass.rb +9 -8
- data/lib/rouge/lexers/sass/common.rb +41 -40
- data/lib/rouge/lexers/scala.rb +67 -40
- data/lib/rouge/lexers/scheme.rb +19 -18
- data/lib/rouge/lexers/scss.rb +4 -3
- data/lib/rouge/lexers/sed.rb +31 -30
- data/lib/rouge/lexers/shell.rb +67 -55
- data/lib/rouge/lexers/sieve.rb +10 -9
- data/lib/rouge/lexers/slice.rb +32 -0
- data/lib/rouge/lexers/slim.rb +27 -26
- data/lib/rouge/lexers/smalltalk.rb +34 -33
- data/lib/rouge/lexers/smarty.rb +20 -19
- data/lib/rouge/lexers/sml.rb +68 -67
- data/lib/rouge/lexers/solidity.rb +185 -0
- data/lib/rouge/lexers/sparql.rb +129 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sql.rb +47 -26
- data/lib/rouge/lexers/supercollider.rb +116 -0
- data/lib/rouge/lexers/swift.rb +49 -44
- data/lib/rouge/lexers/tap.rb +22 -20
- data/lib/rouge/lexers/tcl.rb +28 -27
- data/lib/rouge/lexers/terraform.rb +37 -13
- data/lib/rouge/lexers/tex.rb +20 -19
- data/lib/rouge/lexers/toml.rb +59 -20
- data/lib/rouge/lexers/tsx.rb +1 -0
- data/lib/rouge/lexers/ttcn3.rb +119 -0
- data/lib/rouge/lexers/tulip.rb +38 -36
- data/lib/rouge/lexers/turtle.rb +36 -38
- data/lib/rouge/lexers/twig.rb +1 -0
- data/lib/rouge/lexers/typescript.rb +12 -0
- data/lib/rouge/lexers/typescript/common.rb +1 -0
- data/lib/rouge/lexers/vala.rb +19 -18
- data/lib/rouge/lexers/varnish.rb +168 -0
- data/lib/rouge/lexers/vb.rb +28 -27
- data/lib/rouge/lexers/verilog.rb +27 -28
- data/lib/rouge/lexers/vhdl.rb +12 -11
- data/lib/rouge/lexers/viml.rb +15 -14
- data/lib/rouge/lexers/viml/keywords.rb +2 -0
- data/lib/rouge/lexers/vue.rb +15 -10
- data/lib/rouge/lexers/wollok.rb +27 -26
- data/lib/rouge/lexers/xml.rb +18 -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 +64 -61
- data/lib/rouge/lexers/yang.rb +147 -0
- data/lib/rouge/plugins/redcarpet.rb +9 -2
- data/lib/rouge/regex_lexer.rb +27 -25
- data/lib/rouge/template_lexer.rb +1 -0
- data/lib/rouge/tex_theme_renderer.rb +132 -0
- data/lib/rouge/text_analyzer.rb +1 -0
- data/lib/rouge/theme.rb +5 -0
- data/lib/rouge/themes/base16.rb +1 -0
- data/lib/rouge/themes/bw.rb +41 -0
- data/lib/rouge/themes/colorful.rb +1 -0
- data/lib/rouge/themes/github.rb +1 -0
- data/lib/rouge/themes/gruvbox.rb +1 -0
- data/lib/rouge/themes/igor_pro.rb +1 -0
- data/lib/rouge/themes/magritte.rb +78 -0
- data/lib/rouge/themes/molokai.rb +1 -0
- data/lib/rouge/themes/monokai.rb +1 -0
- data/lib/rouge/themes/monokai_sublime.rb +4 -1
- data/lib/rouge/themes/pastie.rb +2 -1
- data/lib/rouge/themes/thankful_eyes.rb +2 -1
- data/lib/rouge/themes/tulip.rb +2 -1
- data/lib/rouge/token.rb +31 -22
- data/lib/rouge/util.rb +3 -2
- data/lib/rouge/version.rb +2 -1
- data/rouge.gemspec +6 -3
- metadata +130 -8
- data/lib/rouge/lexers/apache/keywords.yml +0 -764
- data/lib/rouge/lexers/lasso/keywords.yml +0 -446
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class OpenTypeFeatureFile < RegexLexer
|
|
7
|
+
title "OpenType Feature File"
|
|
8
|
+
desc "Feature specifications for an OpenType font (adobe-type-tools.github.io/afdko)"
|
|
9
|
+
tag 'opentype_feature_file'
|
|
10
|
+
aliases 'fea', 'opentype', 'opentypefeature'
|
|
11
|
+
filenames '*.fea'
|
|
12
|
+
|
|
13
|
+
def self.keywords
|
|
14
|
+
@keywords ||= %w(
|
|
15
|
+
Ascender Attach CapHeight CaretOffset CodePageRange Descender FontRevision FSType
|
|
16
|
+
GlyphClassDef HorizAxis.BaseScriptList HorizAxis.BaseTagList HorizAxis.MinMax
|
|
17
|
+
IgnoreBaseGlyphs IgnoreLigatures IgnoreMarks LigatureCaretByDev LigatureCaretByIndex
|
|
18
|
+
LigatureCaretByPos LineGap MarkAttachClass MarkAttachmentType NULL Panose RightToLeft
|
|
19
|
+
TypoAscender TypoDescender TypoLineGap UnicodeRange UseMarkFilteringSet Vendor
|
|
20
|
+
VertAdvanceY VertAxis.BaseScriptList VertAxis.BaseTagList VertAxis.MinMax VertOriginY
|
|
21
|
+
VertTypoAscender VertTypoDescender VertTypoLineGap WeightClass WidthClass XHeight
|
|
22
|
+
|
|
23
|
+
anchorDef anchor anonymous anon by contour cursive device enumerate enum
|
|
24
|
+
exclude_dflt featureNames feature from ignore include_dflt include languagesystem
|
|
25
|
+
language lookupflag lookup markClass mark nameid name parameters position pos required
|
|
26
|
+
reversesub rsub script sizemenuname substitute subtable sub table useExtension
|
|
27
|
+
valueRecordDef winAscent winDescent
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
identifier = %r/[a-z_][a-z0-9\/_]*/i
|
|
33
|
+
|
|
34
|
+
state :root do
|
|
35
|
+
rule %r/\s+/m, Text::Whitespace
|
|
36
|
+
rule %r/#.*$/, Comment
|
|
37
|
+
|
|
38
|
+
# feature <tag>
|
|
39
|
+
rule %r/(anonymous|anon|feature|lookup|table)((?:\s)+)/ do
|
|
40
|
+
groups Keyword, Text
|
|
41
|
+
push :featurename
|
|
42
|
+
end
|
|
43
|
+
# } <tag> ;
|
|
44
|
+
rule %r/(\})((?:\s)*)/ do
|
|
45
|
+
groups Punctuation, Text
|
|
46
|
+
push :featurename
|
|
47
|
+
end
|
|
48
|
+
# solve include( ../path)
|
|
49
|
+
rule %r/(include)/i, Keyword, :includepath
|
|
50
|
+
|
|
51
|
+
rule %r/[\-\[\]\/(){},.:;=%*<>']/, Punctuation
|
|
52
|
+
|
|
53
|
+
rule %r/`.*?/, Str::Backtick
|
|
54
|
+
rule %r/\"/, Str, :dqs
|
|
55
|
+
|
|
56
|
+
# classes, start with @<nameOfClass>
|
|
57
|
+
rule %r/@#{identifier}/, Name::Class
|
|
58
|
+
|
|
59
|
+
# using negative lookbehind so we don't match property names
|
|
60
|
+
rule %r/(?<!\.)#{identifier}/ do |m|
|
|
61
|
+
if self.class.keywords.include? m[0]
|
|
62
|
+
token Keyword
|
|
63
|
+
else
|
|
64
|
+
token Name
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
rule identifier, Name
|
|
69
|
+
rule %r/-?\d+/, Num::Integer
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
state :featurename do
|
|
73
|
+
rule identifier, Name::Function, :pop!
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :includepath do
|
|
77
|
+
rule %r/\s+/, Text::Whitespace
|
|
78
|
+
rule %r/\)/, Punctuation, :pop!
|
|
79
|
+
rule %r/\(/, Punctuation
|
|
80
|
+
rule %r/[a-z0-9\/_.]*/i, Str
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
state :strings do
|
|
84
|
+
rule %r/(\([a-z0-9_]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/i, Str
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
state :strings_double do
|
|
88
|
+
rule %r/[^\\"%\n]+/, Str
|
|
89
|
+
mixin :strings
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
state :escape do
|
|
93
|
+
rule %r(\\
|
|
94
|
+
( [\\abfnrtv"']
|
|
95
|
+
| \n
|
|
96
|
+
| N{[a-zA-z][a-zA-Z ]+[a-zA-Z]}
|
|
97
|
+
| u[a-fA-F0-9]{4}
|
|
98
|
+
| U[a-fA-F0-9]{8}
|
|
99
|
+
| x[a-fA-F0-9]{2}
|
|
100
|
+
| [0-7]{1,3}
|
|
101
|
+
)
|
|
102
|
+
)x, Str::Escape
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
state :dqs do
|
|
106
|
+
rule %r/"/, Str, :pop!
|
|
107
|
+
mixin :escape
|
|
108
|
+
mixin :strings_double
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
data/lib/rouge/lexers/pascal.rb
CHANGED
|
@@ -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
|
tag 'pascal'
|
|
7
8
|
title "Pascal"
|
|
8
9
|
desc 'a procedural programming language commonly used as a teaching language.'
|
|
9
|
-
filenames '*.pas'
|
|
10
|
+
filenames '*.pas', '*.lpr'
|
|
10
11
|
|
|
11
12
|
mimetypes 'text/x-pascal'
|
|
12
13
|
|
|
@@ -39,7 +40,7 @@ module Rouge
|
|
|
39
40
|
|
|
40
41
|
state :whitespace do
|
|
41
42
|
# Spaces
|
|
42
|
-
rule /\s+/m, Text
|
|
43
|
+
rule %r/\s+/m, Text
|
|
43
44
|
# // Comments
|
|
44
45
|
rule %r((//).*$\n?), Comment::Single
|
|
45
46
|
# -- Comments
|
|
@@ -56,9 +57,9 @@ module Rouge
|
|
|
56
57
|
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
|
|
57
58
|
rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
|
|
58
59
|
rule %r{'([^']|'')*'}, Str
|
|
59
|
-
rule /(true|false|nil)\b/i, Name::Builtin
|
|
60
|
-
rule /\b(#{keywords.join('|')})\b/i, Keyword
|
|
61
|
-
rule /\b(#{keywords_type.join('|')})\b/i, Keyword::Type
|
|
60
|
+
rule %r/(true|false|nil)\b/i, Name::Builtin
|
|
61
|
+
rule %r/\b(#{keywords.join('|')})\b/i, Keyword
|
|
62
|
+
rule %r/\b(#{keywords_type.join('|')})\b/i, Keyword::Type
|
|
62
63
|
rule id, Name
|
|
63
64
|
end
|
|
64
65
|
end
|
data/lib/rouge/lexers/perl.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -64,113 +65,136 @@ module Rouge
|
|
|
64
65
|
end
|
|
65
66
|
|
|
66
67
|
state :root do
|
|
67
|
-
rule /#.*?$/, Comment::Single
|
|
68
|
-
rule /^=[a-zA-Z0-9]+\s+.*?\n=cut/m, Comment::Multiline
|
|
69
|
-
rule /(?:#{keywords.join('|')})\b/, Keyword
|
|
68
|
+
rule %r/#.*?$/, Comment::Single
|
|
69
|
+
rule %r/^=[a-zA-Z0-9]+\s+.*?\n=cut/m, Comment::Multiline
|
|
70
|
+
rule %r/(?:#{keywords.join('|')})\b/, Keyword
|
|
70
71
|
|
|
71
|
-
rule /(format)(\s+)([a-zA-Z0-9_]+)(\s*)(=)(\s*\n)/ do
|
|
72
|
+
rule %r/(format)(\s+)([a-zA-Z0-9_]+)(\s*)(=)(\s*\n)/ do
|
|
72
73
|
groups Keyword, Text, Name, Text, Punctuation, Text
|
|
73
74
|
|
|
74
75
|
push :format
|
|
75
76
|
end
|
|
76
77
|
|
|
77
|
-
rule /(?:eq|lt|gt|le|ge|ne|not|and|or|cmp)\b/, Operator::Word
|
|
78
|
+
rule %r/(?:eq|lt|gt|le|ge|ne|not|and|or|cmp)\b/, Operator::Word
|
|
78
79
|
|
|
79
|
-
#
|
|
80
|
-
rule %r(s
|
|
81
|
-
rule %r(s
|
|
82
|
-
rule %r(s
|
|
83
|
-
rule %r(s
|
|
84
|
-
rule %r(s%(\\\\|\\%|[^%])*%(\\\\|\\%|[^%])*%[egimosx]*), re_tok
|
|
80
|
+
# substitution/transliteration: balanced delimiters
|
|
81
|
+
rule %r((?:s|tr|y){(\\\\|\\}|[^}])*}\s*), re_tok, :balanced_regex
|
|
82
|
+
rule %r((?:s|tr|y)<(\\\\|\\>|[^>])*>\s*), re_tok, :balanced_regex
|
|
83
|
+
rule %r((?:s|tr|y)\[(\\\\|\\\]|[^\]])*\]\s*), re_tok, :balanced_regex
|
|
84
|
+
rule %r[(?:s|tr|y)\((\\\\|\\\)|[^\)])*\)\s*], re_tok, :balanced_regex
|
|
85
85
|
|
|
86
|
-
#
|
|
87
|
-
rule %r(s
|
|
88
|
-
rule %r(s
|
|
89
|
-
rule %r(s\[(\\\\|\\\]|[^\]])*\]\s*), re_tok, :balanced_regex
|
|
90
|
-
rule %r[s\((\\\\|\\\)|[^\)])*\)\s*], re_tok, :balanced_regex
|
|
86
|
+
# substitution/transliteration: arbitrary non-whitespace delimiters
|
|
87
|
+
rule %r((?:s|tr|y)\s*([^\w\s])((\\\\|\\\1)|[^\1])*?\1((\\\\|\\\1)|[^\1])*?\1[msixpodualngcr]*)m, re_tok
|
|
88
|
+
rule %r((?:s|tr|y)\s+(\w)((\\\\|\\\1)|[^\1])*?\1((\\\\|\\\1)|[^\1])*?\1[msixpodualngcr]*)m, re_tok
|
|
91
89
|
|
|
92
|
-
|
|
90
|
+
# matches: common case, m-optional
|
|
91
|
+
rule %r(m?/(\\\\|\\/|[^/\n])*/[msixpodualngc]*), re_tok
|
|
93
92
|
rule %r(m(?=[/!\\{<\[\(@%\$])), re_tok, :balanced_regex
|
|
94
|
-
|
|
93
|
+
|
|
94
|
+
# arbitrary non-whitespace delimiters
|
|
95
|
+
rule %r(m\s*([^\w\s])((\\\\|\\\1)|[^\1])*?\1[msixpodualngc]*)m, re_tok
|
|
96
|
+
rule %r(m\s+(\w)((\\\\|\\\1)|[^\1])*?\1[msixpodualngc]*)m, re_tok
|
|
97
|
+
|
|
98
|
+
rule %r(((?<==~)|(?<=\())\s*/(\\\\|\\/|[^/])*/[msixpodualngc]*),
|
|
95
99
|
re_tok, :balanced_regex
|
|
96
100
|
|
|
97
|
-
rule /\s+/, Text
|
|
98
|
-
rule /(?:#{builtins.join('|')})\b/, Name::Builtin
|
|
99
|
-
rule /((__(
|
|
101
|
+
rule %r/\s+/, Text
|
|
102
|
+
rule %r/(?:#{builtins.join('|')})\b/, Name::Builtin
|
|
103
|
+
rule %r/((__(DIE|WARN)__)|(DATA|STD(IN|OUT|ERR)))\b/,
|
|
100
104
|
Name::Builtin::Pseudo
|
|
101
105
|
|
|
102
|
-
rule /<<([\'"]?)([a-zA-Z_][a-zA-Z0-9_]*)\1;?\n.*?\n\2\n/m, Str
|
|
106
|
+
rule %r/<<([\'"]?)([a-zA-Z_][a-zA-Z0-9_]*)\1;?\n.*?\n\2\n/m, Str
|
|
103
107
|
|
|
104
|
-
rule /
|
|
105
|
-
rule /\$\^[ADEFHILMOPSTWX]/, Name::Variable::Global
|
|
106
|
-
rule /\$[\\"'\[\]&`+*.,;=%~?@$!<>(^\|\/-](?!\w)/, Name::Variable::Global
|
|
107
|
-
rule /[-+\/*%=<>&^\|!\\~]=?/, Operator
|
|
108
|
-
rule /[$@%#]+/, Name::Variable, :varname
|
|
108
|
+
rule %r/(__(END|DATA)__)\b/, Comment::Preproc, :end_part
|
|
109
|
+
rule %r/\$\^[ADEFHILMOPSTWX]/, Name::Variable::Global
|
|
110
|
+
rule %r/\$[\\"'\[\]&`+*.,;=%~?@$!<>(^\|\/-](?!\w)/, Name::Variable::Global
|
|
111
|
+
rule %r/[-+\/*%=<>&^\|!\\~]=?/, Operator
|
|
112
|
+
rule %r/[$@%#]+/, Name::Variable, :varname
|
|
109
113
|
|
|
110
|
-
rule /0_?[0-7]+(_[0-7]+)*/, Num::Oct
|
|
111
|
-
rule /0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*/, Num::Hex
|
|
112
|
-
rule /0b[01]+(_[01]+)*/, Num::Bin
|
|
113
|
-
rule /(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?/i,
|
|
114
|
+
rule %r/0_?[0-7]+(_[0-7]+)*/, Num::Oct
|
|
115
|
+
rule %r/0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*/, Num::Hex
|
|
116
|
+
rule %r/0b[01]+(_[01]+)*/, Num::Bin
|
|
117
|
+
rule %r/(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?/i,
|
|
114
118
|
Num::Float
|
|
115
|
-
rule /\d+(_\d*)*e[+-]?\d+(_\d*)*/i, Num::Float
|
|
116
|
-
rule /\d+(_\d+)*/, Num::Integer
|
|
117
|
-
|
|
118
|
-
rule /'
|
|
119
|
-
rule /"
|
|
120
|
-
rule
|
|
121
|
-
rule /<([^\s>]+)>/, re_tok
|
|
122
|
-
rule /(q|qq|qw|qr|qx)\{/, Str::Other, :cb_string
|
|
123
|
-
rule /(q|qq|qw|qr|qx)\(/, Str::Other, :rb_string
|
|
124
|
-
rule /(q|qq|qw|qr|qx)\[/, Str::Other, :sb_string
|
|
125
|
-
rule /(q|qq|qw|qr|qx)</, Str::Other, :lt_string
|
|
126
|
-
rule /(q|qq|qw|qr|qx)(
|
|
127
|
-
|
|
128
|
-
rule /package\s+/, Keyword, :modulename
|
|
129
|
-
rule /sub\s+/, Keyword, :funcname
|
|
130
|
-
rule /\[\]|\*\*|::|<<|>>|>=|<=|<=>|={3}|!=|=~|!~|&&?|\|\||\.{1,3}/,
|
|
119
|
+
rule %r/\d+(_\d*)*e[+-]?\d+(_\d*)*/i, Num::Float
|
|
120
|
+
rule %r/\d+(_\d+)*/, Num::Integer
|
|
121
|
+
|
|
122
|
+
rule %r/'/, Punctuation, :sq
|
|
123
|
+
rule %r/"/, Punctuation, :dq
|
|
124
|
+
rule %r/`/, Punctuation, :bq
|
|
125
|
+
rule %r/<([^\s>]+)>/, re_tok
|
|
126
|
+
rule %r/(q|qq|qw|qr|qx)\{/, Str::Other, :cb_string
|
|
127
|
+
rule %r/(q|qq|qw|qr|qx)\(/, Str::Other, :rb_string
|
|
128
|
+
rule %r/(q|qq|qw|qr|qx)\[/, Str::Other, :sb_string
|
|
129
|
+
rule %r/(q|qq|qw|qr|qx)</, Str::Other, :lt_string
|
|
130
|
+
rule %r/(q|qq|qw|qr|qx)(\W)(.|\n)*?\2/, Str::Other
|
|
131
|
+
|
|
132
|
+
rule %r/package\s+/, Keyword, :modulename
|
|
133
|
+
rule %r/sub\s+/, Keyword, :funcname
|
|
134
|
+
rule %r/\[\]|\*\*|::|<<|>>|>=|<=|<=>|={3}|!=|=~|!~|&&?|\|\||\.{1,3}/,
|
|
131
135
|
Operator
|
|
132
|
-
rule /[()\[\]:;,<>\/?{}]/, Punctuation
|
|
136
|
+
rule %r/[()\[\]:;,<>\/?{}]/, Punctuation
|
|
133
137
|
rule(/(?=\w)/) { push :name }
|
|
134
138
|
end
|
|
135
139
|
|
|
136
140
|
state :format do
|
|
137
|
-
rule /\.\n/, Str::Interpol, :pop!
|
|
138
|
-
rule /.*?\n/, Str::Interpol
|
|
141
|
+
rule %r/\.\n/, Str::Interpol, :pop!
|
|
142
|
+
rule %r/.*?\n/, Str::Interpol
|
|
139
143
|
end
|
|
140
144
|
|
|
141
145
|
state :name_common do
|
|
142
|
-
rule /\w+::/, Name::Namespace
|
|
143
|
-
rule /[\w:]+/, Name::Variable, :pop!
|
|
146
|
+
rule %r/\w+::/, Name::Namespace
|
|
147
|
+
rule %r/[\w:]+/, Name::Variable, :pop!
|
|
144
148
|
end
|
|
145
149
|
|
|
146
150
|
state :varname do
|
|
147
|
-
rule /\s+/, Text
|
|
148
|
-
rule /\{/, Punctuation, :pop! # hash syntax
|
|
149
|
-
rule /\)|,/, Punctuation, :pop! # arg specifier
|
|
151
|
+
rule %r/\s+/, Text
|
|
152
|
+
rule %r/\{/, Punctuation, :pop! # hash syntax
|
|
153
|
+
rule %r/\)|,/, Punctuation, :pop! # arg specifier
|
|
150
154
|
mixin :name_common
|
|
151
155
|
end
|
|
152
156
|
|
|
153
157
|
state :name do
|
|
154
158
|
mixin :name_common
|
|
155
|
-
rule /[A-Z_]+(?=[^a-zA-Z0-9_])/, Name::Constant, :pop!
|
|
159
|
+
rule %r/[A-Z_]+(?=[^a-zA-Z0-9_])/, Name::Constant, :pop!
|
|
156
160
|
rule(/(?=\W)/) { pop! }
|
|
157
161
|
end
|
|
158
162
|
|
|
159
163
|
state :modulename do
|
|
160
|
-
rule /[a-z_]\w*/i, Name::Namespace, :pop!
|
|
164
|
+
rule %r/[a-z_]\w*/i, Name::Namespace, :pop!
|
|
161
165
|
end
|
|
162
166
|
|
|
163
167
|
state :funcname do
|
|
164
|
-
rule /[a-zA-Z_]\w*[!?]?/, Name::Function
|
|
165
|
-
rule /\s+/, Text
|
|
168
|
+
rule %r/[a-zA-Z_]\w*[!?]?/, Name::Function
|
|
169
|
+
rule %r/\s+/, Text
|
|
166
170
|
|
|
167
171
|
# argument declaration
|
|
168
|
-
rule /(\([$@%]*\))(\s*)/ do
|
|
172
|
+
rule %r/(\([$@%]*\))(\s*)/ do
|
|
169
173
|
groups Punctuation, Text
|
|
170
174
|
end
|
|
171
175
|
|
|
172
|
-
rule /.*?{/, Punctuation, :pop!
|
|
173
|
-
rule /;/, Punctuation, :pop!
|
|
176
|
+
rule %r/.*?{/, Punctuation, :pop!
|
|
177
|
+
rule %r/;/, Punctuation, :pop!
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
state :sq do
|
|
181
|
+
rule %r/\\[']/, Str::Escape
|
|
182
|
+
rule %r/[^\\']+/, Str::Single
|
|
183
|
+
rule %r/'/, Punctuation, :pop!
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
state :dq do
|
|
187
|
+
mixin :string_intp
|
|
188
|
+
rule %r/\\[\\tnr"]/, Str::Escape
|
|
189
|
+
rule %r/[^\\"]+?/, Str::Double
|
|
190
|
+
rule %r/"/, Punctuation, :pop!
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
state :bq do
|
|
194
|
+
mixin :string_intp
|
|
195
|
+
rule %r/\\[\\tnr`]/, Str::Escape
|
|
196
|
+
rule %r/[^\\`]+?/, Str::Backtick
|
|
197
|
+
rule %r/`/, Punctuation, :pop!
|
|
174
198
|
end
|
|
175
199
|
|
|
176
200
|
[[:cb, '\{', '\}'],
|
|
@@ -179,17 +203,28 @@ module Rouge
|
|
|
179
203
|
[:lt, '<', '>']].each do |name, open, close|
|
|
180
204
|
tok = Str::Other
|
|
181
205
|
state :"#{name}_string" do
|
|
182
|
-
rule /\\[#{open}#{close}\\]/, tok
|
|
183
|
-
rule /\\/, tok
|
|
206
|
+
rule %r/\\[#{open}#{close}\\]/, tok
|
|
207
|
+
rule %r/\\/, tok
|
|
184
208
|
rule(/#{open}/) { token tok; push }
|
|
185
|
-
rule /#{close}/, tok, :pop!
|
|
186
|
-
rule /[^#{open}#{close}\\]+/, tok
|
|
209
|
+
rule %r/#{close}/, tok, :pop!
|
|
210
|
+
rule %r/[^#{open}#{close}\\]+/, tok
|
|
187
211
|
end
|
|
188
212
|
end
|
|
189
213
|
|
|
214
|
+
state :in_interp do
|
|
215
|
+
rule %r/}/, Str::Interpol, :pop!
|
|
216
|
+
rule %r/\s+/, Text
|
|
217
|
+
rule %r/[a-z_]\w*/i, Str::Interpol
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
state :string_intp do
|
|
221
|
+
rule %r/[$@][{]/, Str::Interpol, :in_interp
|
|
222
|
+
rule %r/[$@][a-z_]\w*/i, Str::Interpol
|
|
223
|
+
end
|
|
224
|
+
|
|
190
225
|
state :end_part do
|
|
191
226
|
# eat the rest of the stream
|
|
192
|
-
rule /.+/m, Comment::Preproc, :pop!
|
|
227
|
+
rule %r/.+/m, Comment::Preproc, :pop!
|
|
193
228
|
end
|
|
194
229
|
end
|
|
195
230
|
end
|
data/lib/rouge/lexers/php.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Rouge
|
|
4
5
|
module Lexers
|
|
@@ -28,7 +29,7 @@ module Rouge
|
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
def self.builtins
|
|
31
|
-
load
|
|
32
|
+
load File.join(Lexers::BASE_DIR, 'php/builtins.rb')
|
|
32
33
|
self.builtins
|
|
33
34
|
end
|
|
34
35
|
|
|
@@ -62,16 +63,23 @@ module Rouge
|
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
def self.keywords
|
|
66
|
+
# (echo parent ; echo self ; sed -nE 's/<ST_IN_SCRIPTING>"((__)?[[:alpha:]_]+(__)?)".*/\1/p' zend_language_scanner.l | tr '[A-Z]' '[a-z]') | sort -u | grep -Fwv -e isset -e unset -e empty -e const -e use -e function -e namespace
|
|
67
|
+
# - isset, unset and empty are actually keywords (directly handled by PHP's lexer but let's pretend these are functions, you use them like so)
|
|
68
|
+
# - self and parent are kind of keywords, they are not handled by PHP's lexer
|
|
69
|
+
# - use, const, namespace and function are handled by specific rules to highlight what's next to the keyword
|
|
70
|
+
# - class is also listed here, in addition to the rule below, to handle anonymous classes
|
|
65
71
|
@keywords ||= Set.new %w(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
old_function cfunction
|
|
73
|
+
__class__ __dir__ __file__ __function__ __halt_compiler
|
|
74
|
+
__line__ __method__ __namespace__ __trait__ abstract and
|
|
75
|
+
array as break callable case catch class clone continue
|
|
76
|
+
declare default die do echo else elseif enddeclare
|
|
77
|
+
endfor endforeach endif endswitch endwhile eval exit
|
|
78
|
+
extends final finally fn for foreach global goto if
|
|
79
|
+
implements include include_once instanceof insteadof
|
|
80
|
+
interface list new or parent print private protected
|
|
81
|
+
public require require_once return self static switch
|
|
82
|
+
throw trait try var while xor yield
|
|
75
83
|
)
|
|
76
84
|
end
|
|
77
85
|
|
|
@@ -84,56 +92,71 @@ module Rouge
|
|
|
84
92
|
state :root do
|
|
85
93
|
# some extremely rough heuristics to decide whether to start inline or not
|
|
86
94
|
rule(/\s*(?=<)/m) { delegate parent; push :template }
|
|
87
|
-
rule(/[^$]+(?=<\?(php|=))/) { delegate parent; push :template }
|
|
95
|
+
rule(/[^$]+(?=<\?(php|=))/i) { delegate parent; push :template }
|
|
88
96
|
|
|
89
97
|
rule(//) { push :template; push :php }
|
|
90
98
|
end
|
|
91
99
|
|
|
92
100
|
state :template do
|
|
93
|
-
rule /<\?(php|=)
|
|
101
|
+
rule %r/<\?(php|=)?/i, Comment::Preproc, :php
|
|
94
102
|
rule(/.*?(?=<\?)|.*/m) { delegate parent }
|
|
95
103
|
end
|
|
96
104
|
|
|
97
105
|
state :php do
|
|
98
|
-
rule /\?>/, Comment::Preproc, :pop!
|
|
106
|
+
rule %r/\?>/, Comment::Preproc, :pop!
|
|
99
107
|
# heredocs
|
|
100
|
-
rule /<<<('?)(#{id})\1\n.*?\n\2
|
|
101
|
-
rule /\s+/, Text
|
|
102
|
-
rule /#.*?$/, Comment::Single
|
|
108
|
+
rule %r/<<<(["']?)(#{id})\1\n.*?\n\s*\2;?/im, Str::Heredoc
|
|
109
|
+
rule %r/\s+/, Text
|
|
110
|
+
rule %r/#.*?$/, Comment::Single
|
|
103
111
|
rule %r(//.*?$), Comment::Single
|
|
104
|
-
|
|
105
|
-
rule %r(/\*\*/), Comment::Multiline
|
|
106
|
-
rule %r(/\*\*.*?\*/)m, Str::Doc
|
|
112
|
+
rule %r(/\*\*(?!/).*?\*/)m, Comment::Doc
|
|
107
113
|
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
108
|
-
|
|
114
|
+
|
|
115
|
+
rule %r/(->|::)(\s*)(#{id})/ do
|
|
109
116
|
groups Operator, Text, Name::Attribute
|
|
110
117
|
end
|
|
111
118
|
|
|
112
|
-
rule /
|
|
113
|
-
rule /[
|
|
114
|
-
rule
|
|
119
|
+
rule %r/(void|\??(int|float|bool|string|iterable|self|callable))\b/i, Keyword::Type
|
|
120
|
+
rule %r/[~!%^&*+=\|:.<>\/@-]+/, Operator
|
|
121
|
+
rule %r/\?/, Operator
|
|
122
|
+
rule %r/[\[\]{}();,]/, Punctuation
|
|
123
|
+
rule %r/(class|interface|trait)(\s+)(#{nsid})/i do
|
|
124
|
+
groups Keyword::Declaration, Text, Name::Class
|
|
125
|
+
end
|
|
126
|
+
rule %r/(use)(\s+)(function|const|)(\s*)(#{nsid})/i do
|
|
127
|
+
groups Keyword::Namespace, Text, Keyword::Namespace, Text, Name::Namespace
|
|
128
|
+
push :use
|
|
129
|
+
end
|
|
130
|
+
rule %r/(namespace)(\s+)(#{nsid})/i do
|
|
131
|
+
groups Keyword::Namespace, Text, Name::Namespace
|
|
132
|
+
end
|
|
115
133
|
# anonymous functions
|
|
116
|
-
rule /(function)(\s*)(?=\()/ do
|
|
134
|
+
rule %r/(function)(\s*)(?=\()/i do
|
|
117
135
|
groups Keyword, Text
|
|
118
136
|
end
|
|
119
137
|
|
|
120
138
|
# named functions
|
|
121
|
-
rule /(function)(\s+)(&?)(\s*)/ do
|
|
139
|
+
rule %r/(function)(\s+)(&?)(\s*)/i do
|
|
122
140
|
groups Keyword, Text, Operator, Text
|
|
123
141
|
push :funcname
|
|
124
142
|
end
|
|
125
143
|
|
|
126
|
-
rule /(const)(\s+)(#{id})/i do
|
|
144
|
+
rule %r/(const)(\s+)(#{id})/i do
|
|
127
145
|
groups Keyword, Text, Name::Constant
|
|
128
146
|
end
|
|
129
147
|
|
|
130
|
-
rule /
|
|
131
|
-
rule
|
|
132
|
-
rule
|
|
148
|
+
rule %r/stdClass\b/i, Name::Class
|
|
149
|
+
rule %r/(true|false|null)\b/i, Keyword::Constant
|
|
150
|
+
rule %r/(E|PHP)(_[[:upper:]]+)+\b/, Keyword::Constant
|
|
151
|
+
rule %r/\$\{\$+#{id}\}/i, Name::Variable
|
|
152
|
+
rule %r/\$+#{id}/i, Name::Variable
|
|
153
|
+
rule %r/(yield)([ \n\r\t]+)(from)/i do
|
|
154
|
+
groups Keyword, Text, Keyword
|
|
155
|
+
end
|
|
133
156
|
|
|
134
157
|
# may be intercepted for builtin highlighting
|
|
135
|
-
rule /\\?#{nsid}/i do |m|
|
|
136
|
-
name = m[0]
|
|
158
|
+
rule %r/\\?#{nsid}/i do |m|
|
|
159
|
+
name = m[0].downcase
|
|
137
160
|
|
|
138
161
|
if self.class.keywords.include? name
|
|
139
162
|
token Keyword
|
|
@@ -144,48 +167,63 @@ module Rouge
|
|
|
144
167
|
end
|
|
145
168
|
end
|
|
146
169
|
|
|
147
|
-
rule /(\d
|
|
148
|
-
rule
|
|
149
|
-
rule /
|
|
150
|
-
rule /0x[a-f0-9]
|
|
151
|
-
rule /\d
|
|
152
|
-
rule /'([^'\\]*(?:\\.[^'\\]*)*)'/, Str::Single
|
|
153
|
-
rule /`([^`\\]*(?:\\.[^`\\]*)*)`/, Str::Backtick
|
|
154
|
-
rule /"/, Str::Double, :string
|
|
170
|
+
rule %r/(\d[_\d]*)?\.(\d[_\d]*)?(e[+-]?\d[_\d]*)?/i, Num::Float
|
|
171
|
+
rule %r/0[0-7][0-7_]*/, Num::Oct
|
|
172
|
+
rule %r/0b[01][01_]*/i, Num::Bin
|
|
173
|
+
rule %r/0x[a-f0-9][a-f0-9_]*/i, Num::Hex
|
|
174
|
+
rule %r/\d[_\d]*/, Num::Integer
|
|
175
|
+
rule %r/'([^'\\]*(?:\\.[^'\\]*)*)'/, Str::Single
|
|
176
|
+
rule %r/`([^`\\]*(?:\\.[^`\\]*)*)`/, Str::Backtick
|
|
177
|
+
rule %r/"/, Str::Double, :string
|
|
155
178
|
end
|
|
156
179
|
|
|
157
|
-
state :
|
|
158
|
-
rule
|
|
159
|
-
|
|
180
|
+
state :use do
|
|
181
|
+
rule %r/(\s+)(as)(\s+)(#{id})/i do
|
|
182
|
+
groups Text, Keyword, Text, Name
|
|
183
|
+
:pop!
|
|
184
|
+
end
|
|
185
|
+
rule %r/\\\{/, Operator, :uselist
|
|
186
|
+
rule %r/;/, Punctuation, :pop!
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
state :uselist do
|
|
190
|
+
rule %r/\s+/, Text
|
|
191
|
+
rule %r/,/, Operator
|
|
192
|
+
rule %r/\}/, Operator, :pop!
|
|
193
|
+
rule %r/(as)(\s+)(#{id})/i do
|
|
194
|
+
groups Keyword, Text, Name
|
|
195
|
+
end
|
|
196
|
+
rule %r/#{id}/, Name::Namespace
|
|
160
197
|
end
|
|
161
198
|
|
|
162
199
|
state :funcname do
|
|
163
|
-
rule /#{id}/, Name::Function, :pop!
|
|
200
|
+
rule %r/#{id}/, Name::Function, :pop!
|
|
164
201
|
end
|
|
165
202
|
|
|
166
203
|
state :string do
|
|
167
|
-
rule /"/, Str::Double, :pop!
|
|
168
|
-
rule /[^\\{$"]+/, Str::Double
|
|
169
|
-
rule /\\
|
|
204
|
+
rule %r/"/, Str::Double, :pop!
|
|
205
|
+
rule %r/[^\\{$"]+/, Str::Double
|
|
206
|
+
rule %r/\\u\{[0-9a-fA-F]+\}/, Str::Escape
|
|
207
|
+
rule %r/\\([efrntv\"$\\]|[0-7]{1,3}|[xX][0-9a-fA-F]{1,2})/,
|
|
170
208
|
Str::Escape
|
|
171
|
-
rule /\$#{id}(\[\S+\]|->#{id})?/, Name::Variable
|
|
209
|
+
rule %r/\$#{id}(\[\S+\]|->#{id})?/, Name::Variable
|
|
172
210
|
|
|
173
|
-
rule /\{\$\{/, Str::Interpol, :interp_double
|
|
174
|
-
rule /\{(?=\$)/, Str::Interpol, :interp_single
|
|
175
|
-
rule /(\{)(\S+)(\})/ do
|
|
211
|
+
rule %r/\{\$\{/, Str::Interpol, :interp_double
|
|
212
|
+
rule %r/\{(?=\$)/, Str::Interpol, :interp_single
|
|
213
|
+
rule %r/(\{)(\S+)(\})/ do
|
|
176
214
|
groups Str::Interpol, Name::Variable, Str::Interpol
|
|
177
215
|
end
|
|
178
216
|
|
|
179
|
-
rule /[${\\]+/, Str::Double
|
|
217
|
+
rule %r/[${\\]+/, Str::Double
|
|
180
218
|
end
|
|
181
219
|
|
|
182
220
|
state :interp_double do
|
|
183
|
-
rule /\}\}/, Str::Interpol, :pop!
|
|
221
|
+
rule %r/\}\}/, Str::Interpol, :pop!
|
|
184
222
|
mixin :php
|
|
185
223
|
end
|
|
186
224
|
|
|
187
225
|
state :interp_single do
|
|
188
|
-
rule /\}/, Str::Interpol, :pop!
|
|
226
|
+
rule %r/\}/, Str::Interpol, :pop!
|
|
189
227
|
mixin :php
|
|
190
228
|
end
|
|
191
229
|
end
|