rouge-alda 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.
- checksums.yaml +7 -0
- data/Gemfile +28 -0
- data/LICENSE +186 -0
- data/bin/rougify +18 -0
- data/lib/rouge/cli.rb +432 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/alda +10 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/bsl +7 -0
- data/lib/rouge/demos/c +8 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cfscript +18 -0
- data/lib/rouge/demos/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/coffeescript +5 -0
- data/lib/rouge/demos/common_lisp +1 -0
- data/lib/rouge/demos/conf +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/coq +13 -0
- data/lib/rouge/demos/cpp +8 -0
- data/lib/rouge/demos/crystal +45 -0
- data/lib/rouge/demos/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/elixir +1 -0
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/demos/gherkin +17 -0
- data/lib/rouge/demos/glsl +14 -0
- data/lib/rouge/demos/go +7 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/groovy +9 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/demos/haml +5 -0
- data/lib/rouge/demos/handlebars +7 -0
- data/lib/rouge/demos/haskell +6 -0
- data/lib/rouge/demos/hcl +7 -0
- data/lib/rouge/demos/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/jsx +17 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/kotlin +3 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/liquid +11 -0
- data/lib/rouge/demos/literate_coffeescript +3 -0
- data/lib/rouge/demos/literate_haskell +7 -0
- data/lib/rouge/demos/llvm +20 -0
- data/lib/rouge/demos/lua +12 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/nginx +5 -0
- data/lib/rouge/demos/nim +27 -0
- data/lib/rouge/demos/nix +19 -0
- data/lib/rouge/demos/objective_c +18 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/pascal +14 -0
- data/lib/rouge/demos/perl +5 -0
- data/lib/rouge/demos/php +3 -0
- data/lib/rouge/demos/plaintext +1 -0
- data/lib/rouge/demos/plist +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +49 -0
- data/lib/rouge/demos/praat +26 -0
- data/lib/rouge/demos/prolog +9 -0
- data/lib/rouge/demos/prometheus +9 -0
- data/lib/rouge/demos/properties +7 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/puppet +6 -0
- data/lib/rouge/demos/python +6 -0
- data/lib/rouge/demos/q +2 -0
- data/lib/rouge/demos/qml +9 -0
- data/lib/rouge/demos/r +8 -0
- data/lib/rouge/demos/racket +24 -0
- data/lib/rouge/demos/ruby +9 -0
- data/lib/rouge/demos/rust +12 -0
- data/lib/rouge/demos/sass +3 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/scheme +4 -0
- data/lib/rouge/demos/scss +5 -0
- data/lib/rouge/demos/sed +4 -0
- data/lib/rouge/demos/shell +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/slim +17 -0
- data/lib/rouge/demos/smalltalk +6 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/sql +1 -0
- data/lib/rouge/demos/swift +5 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/tcl +1 -0
- data/lib/rouge/demos/terraform +31 -0
- data/lib/rouge/demos/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/tulip +13 -0
- data/lib/rouge/demos/turtle +26 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/vala +8 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/vhdl +23 -0
- data/lib/rouge/demos/viml +14 -0
- data/lib/rouge/demos/vue +11 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/demos/xml +2 -0
- data/lib/rouge/demos/yaml +4 -0
- data/lib/rouge/formatter.rb +76 -0
- data/lib/rouge/formatters/html.rb +38 -0
- data/lib/rouge/formatters/html_inline.rb +31 -0
- data/lib/rouge/formatters/html_legacy.rb +45 -0
- data/lib/rouge/formatters/html_linewise.rb +28 -0
- data/lib/rouge/formatters/html_pygments.rb +18 -0
- data/lib/rouge/formatters/html_table.rb +62 -0
- data/lib/rouge/formatters/null.rb +20 -0
- data/lib/rouge/formatters/terminal256.rb +181 -0
- data/lib/rouge/guesser.rb +57 -0
- data/lib/rouge/guessers/disambiguation.rb +106 -0
- data/lib/rouge/guessers/filename.rb +27 -0
- data/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/lib/rouge/guessers/mimetype.rb +16 -0
- data/lib/rouge/guessers/modeline.rb +46 -0
- data/lib/rouge/guessers/source.rb +31 -0
- data/lib/rouge/guessers/util.rb +34 -0
- data/lib/rouge/lexer.rb +462 -0
- data/lib/rouge/lexers/abap.rb +240 -0
- data/lib/rouge/lexers/actionscript.rb +196 -0
- data/lib/rouge/lexers/alda.rb +43 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apache.rb +73 -0
- data/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/lib/rouge/lexers/apple_script.rb +369 -0
- data/lib/rouge/lexers/awk.rb +162 -0
- data/lib/rouge/lexers/biml.rb +43 -0
- data/lib/rouge/lexers/bsl.rb +82 -0
- data/lib/rouge/lexers/c.rb +213 -0
- data/lib/rouge/lexers/ceylon.rb +124 -0
- data/lib/rouge/lexers/cfscript.rb +154 -0
- data/lib/rouge/lexers/clojure.rb +113 -0
- data/lib/rouge/lexers/cmake.rb +207 -0
- data/lib/rouge/lexers/coffeescript.rb +175 -0
- data/lib/rouge/lexers/common_lisp.rb +346 -0
- data/lib/rouge/lexers/conf.rb +25 -0
- data/lib/rouge/lexers/console.rb +137 -0
- data/lib/rouge/lexers/coq.rb +188 -0
- data/lib/rouge/lexers/cpp.rb +79 -0
- data/lib/rouge/lexers/crystal.rb +430 -0
- data/lib/rouge/lexers/csharp.rb +115 -0
- data/lib/rouge/lexers/css.rb +274 -0
- data/lib/rouge/lexers/d.rb +177 -0
- data/lib/rouge/lexers/dart.rb +105 -0
- data/lib/rouge/lexers/diff.rb +33 -0
- data/lib/rouge/lexers/digdag.rb +70 -0
- data/lib/rouge/lexers/docker.rb +51 -0
- data/lib/rouge/lexers/dot.rb +69 -0
- data/lib/rouge/lexers/eiffel.rb +66 -0
- data/lib/rouge/lexers/elixir.rb +134 -0
- data/lib/rouge/lexers/elm.rb +90 -0
- data/lib/rouge/lexers/erb.rb +53 -0
- data/lib/rouge/lexers/erlang.rb +115 -0
- data/lib/rouge/lexers/factor.rb +303 -0
- data/lib/rouge/lexers/fortran.rb +178 -0
- data/lib/rouge/lexers/fsharp.rb +119 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
- data/lib/rouge/lexers/gherkin.rb +138 -0
- data/lib/rouge/lexers/glsl.rb +136 -0
- data/lib/rouge/lexers/go.rb +175 -0
- data/lib/rouge/lexers/gradle.rb +38 -0
- data/lib/rouge/lexers/graphql.rb +254 -0
- data/lib/rouge/lexers/groovy.rb +113 -0
- data/lib/rouge/lexers/hack.rb +49 -0
- data/lib/rouge/lexers/haml.rb +230 -0
- data/lib/rouge/lexers/handlebars.rb +80 -0
- data/lib/rouge/lexers/haskell.rb +198 -0
- data/lib/rouge/lexers/hcl.rb +163 -0
- data/lib/rouge/lexers/html.rb +140 -0
- data/lib/rouge/lexers/http.rb +81 -0
- data/lib/rouge/lexers/hylang.rb +94 -0
- data/lib/rouge/lexers/idlang.rb +312 -0
- data/lib/rouge/lexers/igorpro.rb +664 -0
- data/lib/rouge/lexers/ini.rb +54 -0
- data/lib/rouge/lexers/io.rb +69 -0
- data/lib/rouge/lexers/irb.rb +67 -0
- data/lib/rouge/lexers/java.rb +88 -0
- data/lib/rouge/lexers/javascript.rb +283 -0
- data/lib/rouge/lexers/jinja.rb +138 -0
- data/lib/rouge/lexers/json.rb +30 -0
- data/lib/rouge/lexers/json_doc.rb +24 -0
- data/lib/rouge/lexers/jsonnet.rb +152 -0
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +104 -0
- data/lib/rouge/lexers/julia.rb +167 -0
- data/lib/rouge/lexers/kotlin.rb +127 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/lasso.rb +215 -0
- data/lib/rouge/lexers/liquid.rb +288 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/lib/rouge/lexers/llvm.rb +81 -0
- data/lib/rouge/lexers/lua/builtins.rb +24 -0
- data/lib/rouge/lexers/lua.rb +126 -0
- data/lib/rouge/lexers/m68k.rb +144 -0
- data/lib/rouge/lexers/make.rb +113 -0
- data/lib/rouge/lexers/markdown.rb +155 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/matlab/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +72 -0
- data/lib/rouge/lexers/moonscript.rb +115 -0
- data/lib/rouge/lexers/mosel.rb +232 -0
- data/lib/rouge/lexers/mxml.rb +69 -0
- data/lib/rouge/lexers/nasm.rb +199 -0
- data/lib/rouge/lexers/nginx.rb +72 -0
- data/lib/rouge/lexers/nim.rb +153 -0
- data/lib/rouge/lexers/nix.rb +211 -0
- data/lib/rouge/lexers/objective_c.rb +195 -0
- data/lib/rouge/lexers/ocaml.rb +101 -0
- data/lib/rouge/lexers/pascal.rb +67 -0
- data/lib/rouge/lexers/perl.rb +201 -0
- data/lib/rouge/lexers/php/builtins.rb +196 -0
- data/lib/rouge/lexers/php.rb +194 -0
- data/lib/rouge/lexers/plain_text.rb +27 -0
- data/lib/rouge/lexers/plist.rb +47 -0
- data/lib/rouge/lexers/pony.rb +94 -0
- data/lib/rouge/lexers/powershell.rb +679 -0
- data/lib/rouge/lexers/praat.rb +351 -0
- data/lib/rouge/lexers/prolog.rb +61 -0
- data/lib/rouge/lexers/prometheus.rb +123 -0
- data/lib/rouge/lexers/properties.rb +52 -0
- data/lib/rouge/lexers/protobuf.rb +71 -0
- data/lib/rouge/lexers/puppet.rb +129 -0
- data/lib/rouge/lexers/python.rb +247 -0
- data/lib/rouge/lexers/q.rb +125 -0
- data/lib/rouge/lexers/qml.rb +74 -0
- data/lib/rouge/lexers/r.rb +90 -0
- data/lib/rouge/lexers/racket.rb +545 -0
- data/lib/rouge/lexers/ruby.rb +439 -0
- data/lib/rouge/lexers/rust.rb +198 -0
- data/lib/rouge/lexers/sass/common.rb +181 -0
- data/lib/rouge/lexers/sass.rb +75 -0
- data/lib/rouge/lexers/scala.rb +143 -0
- data/lib/rouge/lexers/scheme.rb +113 -0
- data/lib/rouge/lexers/scss.rb +35 -0
- data/lib/rouge/lexers/sed.rb +173 -0
- data/lib/rouge/lexers/shell.rb +190 -0
- data/lib/rouge/lexers/sieve.rb +97 -0
- data/lib/rouge/lexers/slim.rb +229 -0
- data/lib/rouge/lexers/smalltalk.rb +117 -0
- data/lib/rouge/lexers/smarty.rb +81 -0
- data/lib/rouge/lexers/sml.rb +345 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sql.rb +141 -0
- data/lib/rouge/lexers/swift.rb +182 -0
- data/lib/rouge/lexers/tap.rb +89 -0
- data/lib/rouge/lexers/tcl.rb +193 -0
- data/lib/rouge/lexers/terraform.rb +105 -0
- data/lib/rouge/lexers/tex.rb +70 -0
- data/lib/rouge/lexers/toml.rb +68 -0
- data/lib/rouge/lexers/tsx.rb +20 -0
- data/lib/rouge/lexers/tulip.rb +108 -0
- data/lib/rouge/lexers/turtle.rb +64 -0
- data/lib/rouge/lexers/twig.rb +40 -0
- data/lib/rouge/lexers/typescript/common.rb +34 -0
- data/lib/rouge/lexers/typescript.rb +23 -0
- data/lib/rouge/lexers/vala.rb +78 -0
- data/lib/rouge/lexers/vb.rb +165 -0
- data/lib/rouge/lexers/verilog.rb +165 -0
- data/lib/rouge/lexers/vhdl.rb +98 -0
- data/lib/rouge/lexers/viml/keywords.rb +14 -0
- data/lib/rouge/lexers/viml.rb +102 -0
- data/lib/rouge/lexers/vue.rb +124 -0
- data/lib/rouge/lexers/wollok.rb +104 -0
- data/lib/rouge/lexers/xml.rb +58 -0
- data/lib/rouge/lexers/yaml.rb +374 -0
- data/lib/rouge/plugins/redcarpet.rb +31 -0
- data/lib/rouge/regex_lexer.rb +442 -0
- data/lib/rouge/template_lexer.rb +21 -0
- data/lib/rouge/text_analyzer.rb +50 -0
- data/lib/rouge/theme.rb +214 -0
- data/lib/rouge/themes/base16.rb +131 -0
- data/lib/rouge/themes/colorful.rb +68 -0
- data/lib/rouge/themes/github.rb +72 -0
- data/lib/rouge/themes/gruvbox.rb +168 -0
- data/lib/rouge/themes/igor_pro.rb +21 -0
- data/lib/rouge/themes/molokai.rb +83 -0
- data/lib/rouge/themes/monokai.rb +93 -0
- data/lib/rouge/themes/monokai_sublime.rb +92 -0
- data/lib/rouge/themes/pastie.rb +70 -0
- data/lib/rouge/themes/thankful_eyes.rb +75 -0
- data/lib/rouge/themes/tulip.rb +70 -0
- data/lib/rouge/token.rb +183 -0
- data/lib/rouge/util.rb +102 -0
- data/lib/rouge/version.rb +8 -0
- data/lib/rouge.rb +84 -0
- data/rouge.gemspec +25 -0
- metadata +384 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class PHP < TemplateLexer
|
|
7
|
+
title "PHP"
|
|
8
|
+
desc "The PHP scripting language (php.net)"
|
|
9
|
+
tag 'php'
|
|
10
|
+
aliases 'php', 'php3', 'php4', 'php5'
|
|
11
|
+
filenames '*.php', '*.php[345t]','*.phtml',
|
|
12
|
+
# Support Drupal file extensions, see:
|
|
13
|
+
# https://github.com/gitlabhq/gitlabhq/issues/8900
|
|
14
|
+
'*.module', '*.inc', '*.profile', '*.install', '*.test'
|
|
15
|
+
mimetypes 'text/x-php'
|
|
16
|
+
|
|
17
|
+
option :start_inline, 'Whether to start with inline php or require <?php ... ?>. (default: best guess)'
|
|
18
|
+
option :funcnamehighlighting, 'Whether to highlight builtin functions (default: true)'
|
|
19
|
+
option :disabledmodules, 'Disable certain modules from being highlighted as builtins (default: empty)'
|
|
20
|
+
|
|
21
|
+
def initialize(*)
|
|
22
|
+
super
|
|
23
|
+
|
|
24
|
+
# if truthy, the lexer starts highlighting with php code
|
|
25
|
+
# (no <?php required)
|
|
26
|
+
@start_inline = bool_option(:start_inline) { :guess }
|
|
27
|
+
@funcnamehighlighting = bool_option(:funcnamehighlighting) { true }
|
|
28
|
+
@disabledmodules = list_option(:disabledmodules)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.builtins
|
|
32
|
+
load Pathname.new(__FILE__).dirname.join('php/builtins.rb')
|
|
33
|
+
self.builtins
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def builtins
|
|
37
|
+
return [] unless @funcnamehighlighting
|
|
38
|
+
|
|
39
|
+
@builtins ||= Set.new.tap do |builtins|
|
|
40
|
+
self.class.builtins.each do |mod, fns|
|
|
41
|
+
next if @disabledmodules.include? mod
|
|
42
|
+
builtins.merge(fns)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# source: http://php.net/manual/en/language.variables.basics.php
|
|
48
|
+
# the given regex is invalid utf8, so... we're using the unicode
|
|
49
|
+
# "Letter" property instead.
|
|
50
|
+
id = /[\p{L}_][\p{L}\p{N}_]*/
|
|
51
|
+
nsid = /#{id}(?:\\#{id})*/
|
|
52
|
+
|
|
53
|
+
start do
|
|
54
|
+
case @start_inline
|
|
55
|
+
when true
|
|
56
|
+
push :template
|
|
57
|
+
push :php
|
|
58
|
+
when false
|
|
59
|
+
push :template
|
|
60
|
+
when :guess
|
|
61
|
+
# pass
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def self.keywords
|
|
66
|
+
@keywords ||= Set.new %w(
|
|
67
|
+
and E_PARSE old_function E_ERROR or as E_WARNING parent eval
|
|
68
|
+
PHP_OS break exit case extends PHP_VERSION cfunction FALSE
|
|
69
|
+
print for require continue foreach require_once declare return
|
|
70
|
+
default static do switch die stdClass echo else TRUE elseif
|
|
71
|
+
var empty if xor enddeclare include virtual endfor include_once
|
|
72
|
+
while endforeach global __FILE__ endif list __LINE__ endswitch
|
|
73
|
+
new __sleep endwhile not array __wakeup E_ALL NULL final
|
|
74
|
+
php_user_filter interface implements public private protected
|
|
75
|
+
abstract clone try catch throw this use namespace yield
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def self.detect?(text)
|
|
80
|
+
return true if text.shebang?('php')
|
|
81
|
+
return false if /^<\?hh/ =~ text
|
|
82
|
+
return true if /^<\?php/ =~ text
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
state :root do
|
|
86
|
+
# some extremely rough heuristics to decide whether to start inline or not
|
|
87
|
+
rule(/\s*(?=<)/m) { delegate parent; push :template }
|
|
88
|
+
rule(/[^$]+(?=<\?(php|=))/) { delegate parent; push :template }
|
|
89
|
+
|
|
90
|
+
rule(//) { push :template; push :php }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
state :template do
|
|
94
|
+
rule /<\?(php|=)?/, Comment::Preproc, :php
|
|
95
|
+
rule(/.*?(?=<\?)|.*/m) { delegate parent }
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
state :php do
|
|
99
|
+
rule /\?>/, Comment::Preproc, :pop!
|
|
100
|
+
# heredocs
|
|
101
|
+
rule /<<<('?)(#{id})\1\n.*?\n\2;?\n/im, Str::Heredoc
|
|
102
|
+
rule /\s+/, Text
|
|
103
|
+
rule /#.*?$/, Comment::Single
|
|
104
|
+
rule %r(//.*?$), Comment::Single
|
|
105
|
+
# empty comment, otherwise seen as the start of a docstring
|
|
106
|
+
rule %r(/\*\*/), Comment::Multiline
|
|
107
|
+
rule %r(/\*\*.*?\*/)m, Str::Doc
|
|
108
|
+
rule %r(/\*.*?\*/)m, Comment::Multiline
|
|
109
|
+
rule /(->|::)(\s*)(#{id})/ do
|
|
110
|
+
groups Operator, Text, Name::Attribute
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
rule /[~!%^&*+=\|:.<>\/?@-]+/, Operator
|
|
114
|
+
rule /[\[\]{}();,]/, Punctuation
|
|
115
|
+
rule /class\b/, Keyword, :classname
|
|
116
|
+
# anonymous functions
|
|
117
|
+
rule /(function)(\s*)(?=\()/ do
|
|
118
|
+
groups Keyword, Text
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# named functions
|
|
122
|
+
rule /(function)(\s+)(&?)(\s*)/ do
|
|
123
|
+
groups Keyword, Text, Operator, Text
|
|
124
|
+
push :funcname
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
rule /(const)(\s+)(#{id})/i do
|
|
128
|
+
groups Keyword, Text, Name::Constant
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
rule /(true|false|null)\b/, Keyword::Constant
|
|
132
|
+
rule /\$\{\$+#{id}\}/i, Name::Variable
|
|
133
|
+
rule /\$+#{id}/i, Name::Variable
|
|
134
|
+
|
|
135
|
+
# may be intercepted for builtin highlighting
|
|
136
|
+
rule /\\?#{nsid}/i do |m|
|
|
137
|
+
name = m[0]
|
|
138
|
+
|
|
139
|
+
if self.class.keywords.include? name
|
|
140
|
+
token Keyword
|
|
141
|
+
elsif self.builtins.include? name
|
|
142
|
+
token Name::Builtin
|
|
143
|
+
else
|
|
144
|
+
token Name::Other
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
rule /(\d+\.\d*|\d*\.\d+)(e[+-]?\d+)?/i, Num::Float
|
|
149
|
+
rule /\d+e[+-]?\d+/i, Num::Float
|
|
150
|
+
rule /0[0-7]+/, Num::Oct
|
|
151
|
+
rule /0x[a-f0-9]+/i, Num::Hex
|
|
152
|
+
rule /\d+/, Num::Integer
|
|
153
|
+
rule /'([^'\\]*(?:\\.[^'\\]*)*)'/, Str::Single
|
|
154
|
+
rule /`([^`\\]*(?:\\.[^`\\]*)*)`/, Str::Backtick
|
|
155
|
+
rule /"/, Str::Double, :string
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
state :classname do
|
|
159
|
+
rule /\s+/, Text
|
|
160
|
+
rule /#{nsid}/, Name::Class, :pop!
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
state :funcname do
|
|
164
|
+
rule /#{id}/, Name::Function, :pop!
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
state :string do
|
|
168
|
+
rule /"/, Str::Double, :pop!
|
|
169
|
+
rule /[^\\{$"]+/, Str::Double
|
|
170
|
+
rule /\\([nrt\"$\\]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})/,
|
|
171
|
+
Str::Escape
|
|
172
|
+
rule /\$#{id}(\[\S+\]|->#{id})?/, Name::Variable
|
|
173
|
+
|
|
174
|
+
rule /\{\$\{/, Str::Interpol, :interp_double
|
|
175
|
+
rule /\{(?=\$)/, Str::Interpol, :interp_single
|
|
176
|
+
rule /(\{)(\S+)(\})/ do
|
|
177
|
+
groups Str::Interpol, Name::Variable, Str::Interpol
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
rule /[${\\]+/, Str::Double
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
state :interp_double do
|
|
184
|
+
rule /\}\}/, Str::Interpol, :pop!
|
|
185
|
+
mixin :php
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
state :interp_single do
|
|
189
|
+
rule /\}/, Str::Interpol, :pop!
|
|
190
|
+
mixin :php
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class PlainText < Lexer
|
|
7
|
+
title "Plain Text"
|
|
8
|
+
desc "A boring lexer that doesn't highlight anything"
|
|
9
|
+
|
|
10
|
+
tag 'plaintext'
|
|
11
|
+
aliases 'text'
|
|
12
|
+
filenames '*.txt'
|
|
13
|
+
mimetypes 'text/plain'
|
|
14
|
+
|
|
15
|
+
attr_reader :token
|
|
16
|
+
def initialize(*)
|
|
17
|
+
super
|
|
18
|
+
|
|
19
|
+
@token = token_option(:token) || Text
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def stream_tokens(string, &b)
|
|
23
|
+
yield self.token, string
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Plist < RegexLexer
|
|
6
|
+
desc 'plist'
|
|
7
|
+
tag 'plist'
|
|
8
|
+
aliases 'plist'
|
|
9
|
+
filenames *%w(*.plist *.pbxproj)
|
|
10
|
+
|
|
11
|
+
mimetypes 'text/x-plist', 'application/x-plist'
|
|
12
|
+
|
|
13
|
+
state :whitespace do
|
|
14
|
+
rule /\s+/, Text::Whitespace
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
state :root do
|
|
18
|
+
rule %r{//.*$}, Comment
|
|
19
|
+
rule %r{/\*.+?\*/}m, Comment
|
|
20
|
+
mixin :whitespace
|
|
21
|
+
rule /{/, Punctuation, :dictionary
|
|
22
|
+
rule /\(/, Punctuation, :array
|
|
23
|
+
rule /"([^"\\]|\\.)*"/, Literal::String::Double
|
|
24
|
+
rule /'([^'\\]|\\.)*'/, Literal::String::Single
|
|
25
|
+
rule /</, Punctuation, :data
|
|
26
|
+
rule %r{[\w_$/:.-]+}, Literal
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
state :dictionary do
|
|
30
|
+
mixin :root
|
|
31
|
+
rule /[=;]/, Punctuation
|
|
32
|
+
rule /}/, Punctuation, :pop!
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
state :array do
|
|
36
|
+
mixin :root
|
|
37
|
+
rule /[,]/, Punctuation
|
|
38
|
+
rule /\)/, Punctuation, :pop!
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
state :data do
|
|
42
|
+
rule /[\h\s]+/, Literal::Number::Hex
|
|
43
|
+
rule />/, Punctuation, :pop!
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Pony < RegexLexer
|
|
7
|
+
tag 'pony'
|
|
8
|
+
filenames '*.pony'
|
|
9
|
+
|
|
10
|
+
keywords = Set.new %w(
|
|
11
|
+
actor addressof and as
|
|
12
|
+
be break
|
|
13
|
+
class compiler_intrinsic consume continue
|
|
14
|
+
do
|
|
15
|
+
else elseif embed end error
|
|
16
|
+
for fun
|
|
17
|
+
if ifdef in interface is isnt
|
|
18
|
+
lambda let
|
|
19
|
+
match
|
|
20
|
+
new not
|
|
21
|
+
object
|
|
22
|
+
primitive
|
|
23
|
+
recover repeat return
|
|
24
|
+
struct
|
|
25
|
+
then this trait try type
|
|
26
|
+
until use
|
|
27
|
+
var
|
|
28
|
+
where while with
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
capabilities = Set.new %w(
|
|
32
|
+
box iso ref tag trn val
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
types = Set.new %w(
|
|
36
|
+
Number Signed Unsigned Float
|
|
37
|
+
I8 I16 I32 I64 I128 U8 U32 U64 U128 F32 F64
|
|
38
|
+
EventID Align IntFormat NumberPrefix FloatFormat
|
|
39
|
+
Type
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
state :whitespace do
|
|
43
|
+
rule /[\s\t\r\n]+/m, Text
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
state :root do
|
|
47
|
+
mixin :whitespace
|
|
48
|
+
rule /"""/, Str::Doc, :docstring
|
|
49
|
+
rule %r{//(.*?)\n}, Comment::Single
|
|
50
|
+
rule %r{/(\\\n)?[*](.|\n)*?[*](\\\n)?/}, Comment::Multiline
|
|
51
|
+
rule /"/, Str, :string
|
|
52
|
+
rule %r([~!%^&*+=\|?:<>/-]), Operator
|
|
53
|
+
rule /(true|false|NULL)\b/, Name::Constant
|
|
54
|
+
rule %r{(?:[A-Z_][a-zA-Z0-9_]*)}, Name::Class
|
|
55
|
+
rule /[()\[\],.';]/, Punctuation
|
|
56
|
+
|
|
57
|
+
# Numbers
|
|
58
|
+
rule /0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)[pP][+\-]?[0-9_]+[fFL]?[i]?/, Num::Float
|
|
59
|
+
rule /[0-9_]+(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)[fFL]?[i]?/, Num::Float
|
|
60
|
+
rule /\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[fFL]?[i]?/, Num::Float
|
|
61
|
+
rule /0[xX][0-9a-fA-F_]+/, Num::Hex
|
|
62
|
+
rule /(0|[1-9][0-9_]*)([LUu]|Lu|LU|uL|UL)?/, Num::Integer
|
|
63
|
+
|
|
64
|
+
rule /[a-z_][a-z0-9_]*/io do |m|
|
|
65
|
+
match = m[0]
|
|
66
|
+
|
|
67
|
+
if capabilities.include?(match)
|
|
68
|
+
token Keyword::Declaration
|
|
69
|
+
elsif keywords.include?(match)
|
|
70
|
+
token Keyword::Reserved
|
|
71
|
+
elsif types.include?(match)
|
|
72
|
+
token Keyword::Type
|
|
73
|
+
else
|
|
74
|
+
token Name
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
state :string do
|
|
80
|
+
rule /"/, Str, :pop!
|
|
81
|
+
rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
|
|
82
|
+
rule /[^\\"\n]+/, Str
|
|
83
|
+
rule /\\\n/, Str
|
|
84
|
+
rule /\\/, Str # stray backslash
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
state :docstring do
|
|
88
|
+
rule /"""/, Str::Doc, :pop!
|
|
89
|
+
rule /\n/, Str::Doc
|
|
90
|
+
rule /./, Str::Doc
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|