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,113 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Clojure < RegexLexer
|
|
7
|
+
title "Clojure"
|
|
8
|
+
desc "The Clojure programming language (clojure.org)"
|
|
9
|
+
|
|
10
|
+
tag 'clojure'
|
|
11
|
+
aliases 'clj', 'cljs'
|
|
12
|
+
|
|
13
|
+
filenames '*.clj', '*.cljs', '*.cljc', 'build.boot', '*.edn'
|
|
14
|
+
|
|
15
|
+
mimetypes 'text/x-clojure', 'application/x-clojure'
|
|
16
|
+
|
|
17
|
+
def self.keywords
|
|
18
|
+
@keywords ||= Set.new %w(
|
|
19
|
+
fn def defn defmacro defmethod defmulti defn- defstruct if
|
|
20
|
+
cond let for
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.builtins
|
|
25
|
+
@builtins ||= Set.new %w(
|
|
26
|
+
. .. * + - -> / < <= = == > >= accessor agent agent-errors
|
|
27
|
+
aget alength all-ns alter and append-child apply array-map
|
|
28
|
+
aset aset-boolean aset-byte aset-char aset-double aset-float
|
|
29
|
+
aset-int aset-long aset-short assert assoc await await-for bean
|
|
30
|
+
binding bit-and bit-not bit-or bit-shift-left bit-shift-right
|
|
31
|
+
bit-xor boolean branch? butlast byte cast char children
|
|
32
|
+
class clear-agent-errors comment commute comp comparator
|
|
33
|
+
complement concat conj cons constantly construct-proxy
|
|
34
|
+
contains? count create-ns create-struct cycle dec deref
|
|
35
|
+
difference disj dissoc distinct doall doc dorun doseq dosync
|
|
36
|
+
dotimes doto double down drop drop-while edit end? ensure eval
|
|
37
|
+
every? false? ffirst file-seq filter find find-doc find-ns
|
|
38
|
+
find-var first float flush fnseq frest gensym get-proxy-class
|
|
39
|
+
get hash-map hash-set identical? identity if-let import in-ns
|
|
40
|
+
inc index insert-child insert-left insert-right inspect-table
|
|
41
|
+
inspect-tree instance? int interleave intersection into
|
|
42
|
+
into-array iterate join key keys keyword keyword? last lazy-cat
|
|
43
|
+
lazy-cons left lefts line-seq list* list load load-file locking
|
|
44
|
+
long loop macroexpand macroexpand-1 make-array make-node map
|
|
45
|
+
map-invert map? mapcat max max-key memfn merge merge-with meta
|
|
46
|
+
min min-key name namespace neg? new newline next nil? node not
|
|
47
|
+
not-any? not-every? not= ns-imports ns-interns ns-map ns-name
|
|
48
|
+
ns-publics ns-refers ns-resolve ns-unmap nth nthrest or parse
|
|
49
|
+
partial path peek pop pos? pr pr-str print print-str println
|
|
50
|
+
println-str prn prn-str project proxy proxy-mappings quot
|
|
51
|
+
rand rand-int range re-find re-groups re-matcher re-matches
|
|
52
|
+
re-pattern re-seq read read-line reduce ref ref-set refer rem
|
|
53
|
+
remove remove-method remove-ns rename rename-keys repeat replace
|
|
54
|
+
replicate resolve rest resultset-seq reverse rfirst right
|
|
55
|
+
rights root rrest rseq second select select-keys send send-off
|
|
56
|
+
seq seq-zip seq? set short slurp some sort sort-by sorted-map
|
|
57
|
+
sorted-map-by sorted-set special-symbol? split-at split-with
|
|
58
|
+
str string? struct struct-map subs subvec symbol symbol?
|
|
59
|
+
sync take take-nth take-while test time to-array to-array-2d
|
|
60
|
+
tree-seq true? union up update-proxy val vals var-get var-set
|
|
61
|
+
var? vector vector-zip vector? when when-first when-let
|
|
62
|
+
when-not with-local-vars with-meta with-open with-out-str
|
|
63
|
+
xml-seq xml-zip zero? zipmap zipper'
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
identifier = %r([\w!$%*+,<=>?/.-]+)
|
|
68
|
+
keyword = %r([\w!\#$%*+,<=>?/.-]+)
|
|
69
|
+
|
|
70
|
+
def name_token(name)
|
|
71
|
+
return Keyword if self.class.keywords.include?(name)
|
|
72
|
+
return Name::Builtin if self.class.builtins.include?(name)
|
|
73
|
+
nil
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :root do
|
|
77
|
+
rule /;.*?$/, Comment::Single
|
|
78
|
+
rule /\s+/m, Text::Whitespace
|
|
79
|
+
|
|
80
|
+
rule /-?\d+\.\d+/, Num::Float
|
|
81
|
+
rule /-?\d+/, Num::Integer
|
|
82
|
+
rule /0x-?[0-9a-fA-F]+/, Num::Hex
|
|
83
|
+
|
|
84
|
+
rule /"(\\.|[^"])*"/, Str
|
|
85
|
+
rule /'#{keyword}/, Str::Symbol
|
|
86
|
+
rule /::?#{keyword}/, Name::Constant
|
|
87
|
+
rule /\\(.|[a-z]+)/i, Str::Char
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
rule /~@|[`\'#^~&@]/, Operator
|
|
91
|
+
|
|
92
|
+
rule /(\()(\s*)(#{identifier})/m do |m|
|
|
93
|
+
token Punctuation, m[1]
|
|
94
|
+
token Text::Whitespace, m[2]
|
|
95
|
+
token(name_token(m[3]) || Name::Function, m[3])
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
rule identifier do |m|
|
|
99
|
+
token name_token(m[0]) || Name
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# vectors
|
|
103
|
+
rule /[\[\]]/, Punctuation
|
|
104
|
+
|
|
105
|
+
# maps
|
|
106
|
+
rule /[{}]/, Punctuation
|
|
107
|
+
|
|
108
|
+
# parentheses
|
|
109
|
+
rule /[()]/, Punctuation
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class CMake < RegexLexer
|
|
7
|
+
title 'CMake'
|
|
8
|
+
desc 'The cross-platform, open-source build system'
|
|
9
|
+
tag 'cmake'
|
|
10
|
+
filenames 'CMakeLists.txt', '*.cmake'
|
|
11
|
+
mimetypes 'text/x-cmake'
|
|
12
|
+
|
|
13
|
+
SPACE = '[ \t]'
|
|
14
|
+
BRACKET_OPEN = '\[=*\['
|
|
15
|
+
|
|
16
|
+
STATES_MAP = {
|
|
17
|
+
:root => Text,
|
|
18
|
+
:bracket_string => Str::Double,
|
|
19
|
+
:quoted_argument => Str::Double,
|
|
20
|
+
:bracket_comment => Comment::Multiline,
|
|
21
|
+
:variable_reference => Name::Variable,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
BUILTIN_COMMANDS = Set.new %w[
|
|
25
|
+
add_compile_options
|
|
26
|
+
add_custom_command
|
|
27
|
+
add_custom_target
|
|
28
|
+
add_definitions
|
|
29
|
+
add_dependencies
|
|
30
|
+
add_executable
|
|
31
|
+
add_library
|
|
32
|
+
add_subdirectory
|
|
33
|
+
add_test
|
|
34
|
+
aux_source_directory
|
|
35
|
+
break
|
|
36
|
+
build_command
|
|
37
|
+
build_name
|
|
38
|
+
cmake_host_system_information
|
|
39
|
+
cmake_minimum_required
|
|
40
|
+
cmake_policy
|
|
41
|
+
configure_file
|
|
42
|
+
create_test_sourcelist
|
|
43
|
+
define_property
|
|
44
|
+
else
|
|
45
|
+
elseif
|
|
46
|
+
enable_language
|
|
47
|
+
enable_testing
|
|
48
|
+
endforeach
|
|
49
|
+
endfunction
|
|
50
|
+
endif
|
|
51
|
+
endmacro
|
|
52
|
+
endwhile
|
|
53
|
+
exec_program
|
|
54
|
+
execute_process
|
|
55
|
+
export
|
|
56
|
+
export_library_dependencies
|
|
57
|
+
file
|
|
58
|
+
find_file
|
|
59
|
+
find_library
|
|
60
|
+
find_package
|
|
61
|
+
find_path
|
|
62
|
+
find_program
|
|
63
|
+
fltk_wrap_ui
|
|
64
|
+
foreach
|
|
65
|
+
function
|
|
66
|
+
get_cmake_property
|
|
67
|
+
get_directory_property
|
|
68
|
+
get_filename_component
|
|
69
|
+
get_property
|
|
70
|
+
get_source_file_property
|
|
71
|
+
get_target_property
|
|
72
|
+
get_test_property
|
|
73
|
+
if
|
|
74
|
+
include
|
|
75
|
+
include_directories
|
|
76
|
+
include_external_msproject
|
|
77
|
+
include_regular_expression
|
|
78
|
+
install
|
|
79
|
+
install_files
|
|
80
|
+
install_programs
|
|
81
|
+
install_targets
|
|
82
|
+
link_directories
|
|
83
|
+
link_libraries
|
|
84
|
+
list
|
|
85
|
+
load_cache
|
|
86
|
+
load_command
|
|
87
|
+
macro
|
|
88
|
+
make_directory
|
|
89
|
+
mark_as_advanced
|
|
90
|
+
math
|
|
91
|
+
message
|
|
92
|
+
option
|
|
93
|
+
output_required_files
|
|
94
|
+
project
|
|
95
|
+
qt_wrap_cpp
|
|
96
|
+
qt_wrap_ui
|
|
97
|
+
remove
|
|
98
|
+
remove_definitions
|
|
99
|
+
return
|
|
100
|
+
separate_arguments
|
|
101
|
+
set
|
|
102
|
+
set_directory_properties
|
|
103
|
+
set_property
|
|
104
|
+
set_source_files_properties
|
|
105
|
+
set_target_properties
|
|
106
|
+
set_tests_properties
|
|
107
|
+
site_name
|
|
108
|
+
source_group
|
|
109
|
+
string
|
|
110
|
+
subdir_depends
|
|
111
|
+
subdirs
|
|
112
|
+
target_compile_definitions
|
|
113
|
+
target_compile_options
|
|
114
|
+
target_include_directories
|
|
115
|
+
target_link_libraries
|
|
116
|
+
try_compile
|
|
117
|
+
try_run
|
|
118
|
+
unset
|
|
119
|
+
use_mangled_mesa
|
|
120
|
+
utility_source
|
|
121
|
+
variable_requires
|
|
122
|
+
variable_watch
|
|
123
|
+
while
|
|
124
|
+
write_file
|
|
125
|
+
]
|
|
126
|
+
|
|
127
|
+
state :default do
|
|
128
|
+
rule /\r\n?|\n/ do
|
|
129
|
+
token STATES_MAP[state.name.to_sym]
|
|
130
|
+
end
|
|
131
|
+
rule /./ do
|
|
132
|
+
token STATES_MAP[state.name.to_sym]
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
state :variable_interpolation do
|
|
137
|
+
rule /\$\{/ do
|
|
138
|
+
token Str::Interpol
|
|
139
|
+
push :variable_reference
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
state :bracket_close do
|
|
144
|
+
rule /\]=*\]/ do |m|
|
|
145
|
+
token STATES_MAP[state.name.to_sym]
|
|
146
|
+
goto :root if m[0].length == @bracket_len
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
state :root do
|
|
151
|
+
mixin :variable_interpolation
|
|
152
|
+
|
|
153
|
+
rule /#{SPACE}/, Text
|
|
154
|
+
rule /[()]/, Punctuation
|
|
155
|
+
|
|
156
|
+
rule /##{BRACKET_OPEN}/ do |m|
|
|
157
|
+
token Comment::Multiline
|
|
158
|
+
@bracket_len = m[0].length - 1 # decount '#'
|
|
159
|
+
goto :bracket_comment
|
|
160
|
+
end
|
|
161
|
+
rule /#{BRACKET_OPEN}/ do |m|
|
|
162
|
+
token Str::Double
|
|
163
|
+
@bracket_len = m[0].length
|
|
164
|
+
goto :bracket_string
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
rule /"/, Str::Double, :quoted_argument
|
|
168
|
+
|
|
169
|
+
rule /([A-Za-z_][A-Za-z0-9_]*)(#{SPACE}*)(\()/ do |m|
|
|
170
|
+
groups BUILTIN_COMMANDS.include?(m[1]) ? Name::Builtin : Name::Function, Text, Punctuation
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
rule /#.*/, Comment::Single
|
|
174
|
+
|
|
175
|
+
mixin :default
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
state :bracket_string do
|
|
179
|
+
mixin :bracket_close
|
|
180
|
+
mixin :variable_interpolation
|
|
181
|
+
mixin :default
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
state :bracket_comment do
|
|
185
|
+
mixin :bracket_close
|
|
186
|
+
mixin :default
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
state :variable_reference do
|
|
190
|
+
mixin :variable_interpolation
|
|
191
|
+
|
|
192
|
+
rule /}/, Str::Interpol, :pop!
|
|
193
|
+
|
|
194
|
+
mixin :default
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
state :quoted_argument do
|
|
198
|
+
mixin :variable_interpolation
|
|
199
|
+
|
|
200
|
+
rule /"/, Str::Double, :root
|
|
201
|
+
rule /\\[()#" \\$@^trn;]/, Str::Escape
|
|
202
|
+
|
|
203
|
+
mixin :default
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Coffeescript < RegexLexer
|
|
7
|
+
tag 'coffeescript'
|
|
8
|
+
aliases 'coffee', 'coffee-script'
|
|
9
|
+
filenames '*.coffee', 'Cakefile'
|
|
10
|
+
mimetypes 'text/coffeescript'
|
|
11
|
+
|
|
12
|
+
title "CoffeeScript"
|
|
13
|
+
desc 'The Coffeescript programming language (coffeescript.org)'
|
|
14
|
+
|
|
15
|
+
def self.detect?(text)
|
|
16
|
+
return true if text.shebang? 'coffee'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.keywords
|
|
20
|
+
@keywords ||= Set.new %w(
|
|
21
|
+
for in of while break return continue switch when then if else
|
|
22
|
+
throw try catch finally new delete typeof instanceof super
|
|
23
|
+
extends this class by
|
|
24
|
+
)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.constants
|
|
28
|
+
@constants ||= Set.new %w(
|
|
29
|
+
true false yes no on off null NaN Infinity undefined
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.builtins
|
|
34
|
+
@builtins ||= Set.new %w(
|
|
35
|
+
Array Boolean Date Error Function Math netscape Number Object
|
|
36
|
+
Packages RegExp String sun decodeURI decodeURIComponent
|
|
37
|
+
encodeURI encodeURIComponent eval isFinite isNaN parseFloat
|
|
38
|
+
parseInt document window
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
id = /[$a-zA-Z_][a-zA-Z0-9_]*/
|
|
43
|
+
|
|
44
|
+
state :comments_and_whitespace do
|
|
45
|
+
rule /\s+/m, Text
|
|
46
|
+
rule /###\s*\n.*?###/m, Comment::Multiline
|
|
47
|
+
rule /#.*$/, Comment::Single
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
state :multiline_regex do
|
|
51
|
+
# this order is important, so that #{ isn't interpreted
|
|
52
|
+
# as a comment
|
|
53
|
+
mixin :has_interpolation
|
|
54
|
+
mixin :comments_and_whitespace
|
|
55
|
+
|
|
56
|
+
rule %r(///([gim]+\b|\B)), Str::Regex, :pop!
|
|
57
|
+
rule %r(/), Str::Regex
|
|
58
|
+
rule %r([^/#]+), Str::Regex
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
state :slash_starts_regex do
|
|
62
|
+
mixin :comments_and_whitespace
|
|
63
|
+
rule %r(///) do
|
|
64
|
+
token Str::Regex
|
|
65
|
+
goto :multiline_regex
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
rule %r(
|
|
69
|
+
/(\\.|[^\[/\\\n]|\[(\\.|[^\]\\\n])*\])+/ # a regex
|
|
70
|
+
([gim]+\b|\B)
|
|
71
|
+
)x, Str::Regex, :pop!
|
|
72
|
+
|
|
73
|
+
rule(//) { pop! }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
state :root do
|
|
77
|
+
rule(%r(^(?=\s|/|<!--))) { push :slash_starts_regex }
|
|
78
|
+
mixin :comments_and_whitespace
|
|
79
|
+
rule %r(
|
|
80
|
+
[+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|[?]|:|=|
|
|
81
|
+
[|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
|
|
82
|
+
)x, Operator, :slash_starts_regex
|
|
83
|
+
|
|
84
|
+
rule /[-=]>/, Name::Function
|
|
85
|
+
|
|
86
|
+
rule /(@)([ \t]*)(#{id})/ do
|
|
87
|
+
groups Name::Variable::Instance, Text, Name::Attribute
|
|
88
|
+
push :slash_starts_regex
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
rule /([.])([ \t]*)(#{id})/ do
|
|
92
|
+
groups Punctuation, Text, Name::Attribute
|
|
93
|
+
push :slash_starts_regex
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
rule /#{id}(?=\s*:)/, Name::Attribute, :slash_starts_regex
|
|
97
|
+
|
|
98
|
+
rule /#{id}/ do |m|
|
|
99
|
+
if self.class.keywords.include? m[0]
|
|
100
|
+
token Keyword
|
|
101
|
+
elsif self.class.constants.include? m[0]
|
|
102
|
+
token Name::Constant
|
|
103
|
+
elsif self.class.builtins.include? m[0]
|
|
104
|
+
token Name::Builtin
|
|
105
|
+
else
|
|
106
|
+
token Name::Other
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
push :slash_starts_regex
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
rule /[{(\[;,]/, Punctuation, :slash_starts_regex
|
|
113
|
+
rule /[})\].]/, Punctuation
|
|
114
|
+
|
|
115
|
+
rule /\d+[.]\d+([eE]\d+)?[fd]?/, Num::Float
|
|
116
|
+
rule /0x[0-9a-fA-F]+/, Num::Hex
|
|
117
|
+
rule /\d+/, Num::Integer
|
|
118
|
+
rule /"""/, Str, :tdqs
|
|
119
|
+
rule /'''/, Str, :tsqs
|
|
120
|
+
rule /"/, Str, :dqs
|
|
121
|
+
rule /'/, Str, :sqs
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
state :strings do
|
|
125
|
+
# all coffeescript strings are multi-line
|
|
126
|
+
rule /[^#\\'"]+/m, Str
|
|
127
|
+
|
|
128
|
+
rule /\\./, Str::Escape
|
|
129
|
+
rule /#/, Str
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
state :double_strings do
|
|
133
|
+
rule /'/, Str
|
|
134
|
+
mixin :has_interpolation
|
|
135
|
+
mixin :strings
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
state :single_strings do
|
|
139
|
+
rule /"/, Str
|
|
140
|
+
mixin :strings
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
state :interpolation do
|
|
144
|
+
rule /}/, Str::Interpol, :pop!
|
|
145
|
+
mixin :root
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
state :has_interpolation do
|
|
149
|
+
rule /[#][{]/, Str::Interpol, :interpolation
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
state :dqs do
|
|
153
|
+
rule /"/, Str, :pop!
|
|
154
|
+
mixin :double_strings
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
state :tdqs do
|
|
158
|
+
rule /"""/, Str, :pop!
|
|
159
|
+
rule /"/, Str
|
|
160
|
+
mixin :double_strings
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
state :sqs do
|
|
164
|
+
rule /'/, Str, :pop!
|
|
165
|
+
mixin :single_strings
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
state :tsqs do
|
|
169
|
+
rule /'''/, Str, :pop!
|
|
170
|
+
rule /'/, Str
|
|
171
|
+
mixin :single_strings
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|