rouge 2.0.7 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +7 -9
- data/lib/rouge.rb +1 -0
- data/lib/rouge/cli.rb +20 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/plist +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/q +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/turtle +0 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/formatters/html_inline.rb +9 -1
- data/lib/rouge/formatters/html_pygments.rb +2 -2
- data/lib/rouge/formatters/html_table.rb +1 -1
- data/lib/rouge/formatters/terminal256.rb +1 -1
- data/lib/rouge/lexer.rb +124 -37
- data/lib/rouge/lexers/abap.rb +2 -2
- data/lib/rouge/lexers/apache.rb +1 -1
- data/lib/rouge/lexers/awk.rb +161 -0
- data/lib/rouge/lexers/clojure.rb +2 -2
- data/lib/rouge/lexers/coffeescript.rb +1 -1
- data/lib/rouge/lexers/console.rb +136 -0
- data/lib/rouge/lexers/csharp.rb +26 -7
- data/lib/rouge/lexers/digdag.rb +72 -0
- data/lib/rouge/lexers/docker.rb +1 -1
- data/lib/rouge/lexers/dot.rb +68 -0
- data/lib/rouge/lexers/elixir.rb +52 -27
- data/lib/rouge/lexers/fortran.rb +56 -28
- data/lib/rouge/lexers/fsharp.rb +1 -1
- data/lib/rouge/lexers/gherkin/keywords.rb +4 -4
- data/lib/rouge/lexers/graphql.rb +243 -0
- data/lib/rouge/lexers/groovy.rb +5 -1
- data/lib/rouge/lexers/haml.rb +19 -24
- data/lib/rouge/lexers/html.rb +48 -4
- data/lib/rouge/lexers/hylang.rb +93 -0
- data/lib/rouge/lexers/igorpro.rb +407 -0
- data/lib/rouge/lexers/irb.rb +66 -0
- data/lib/rouge/lexers/javascript.rb +21 -10
- data/lib/rouge/lexers/json.rb +3 -2
- data/lib/rouge/lexers/json_doc.rb +6 -0
- data/lib/rouge/lexers/jsx.rb +2 -1
- data/lib/rouge/lexers/lasso.rb +217 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/lua.rb +3 -0
- data/lib/rouge/lexers/lua/builtins.rb +1 -1
- data/lib/rouge/lexers/markdown.rb +2 -3
- data/lib/rouge/lexers/matlab/builtins.rb +1 -1
- data/lib/rouge/lexers/moonscript.rb +8 -4
- data/lib/rouge/lexers/mosel.rb +231 -0
- data/lib/rouge/lexers/ocaml.rb +9 -20
- data/lib/rouge/lexers/php.rb +40 -20
- data/lib/rouge/lexers/php/builtins.rb +27 -37
- data/lib/rouge/lexers/plain_text.rb +4 -3
- data/lib/rouge/lexers/plist.rb +49 -0
- data/lib/rouge/lexers/pony.rb +93 -0
- data/lib/rouge/lexers/powershell.rb +36 -0
- data/lib/rouge/lexers/properties.rb +2 -2
- data/lib/rouge/lexers/q.rb +124 -0
- data/lib/rouge/lexers/r.rb +2 -2
- data/lib/rouge/lexers/ruby.rb +26 -13
- data/lib/rouge/lexers/rust.rb +7 -5
- data/lib/rouge/lexers/sed.rb +4 -2
- data/lib/rouge/lexers/shell.rb +38 -16
- data/lib/rouge/lexers/sieve.rb +96 -0
- data/lib/rouge/lexers/sml.rb +3 -2
- data/lib/rouge/lexers/tsx.rb +19 -0
- data/lib/rouge/lexers/turtle.rb +0 -0
- data/lib/rouge/lexers/typescript.rb +3 -27
- data/lib/rouge/lexers/typescript/common.rb +33 -0
- data/lib/rouge/lexers/viml/keywords.rb +2 -2
- data/lib/rouge/lexers/wollok.rb +107 -0
- data/lib/rouge/lexers/xml.rb +1 -1
- data/lib/rouge/lexers/yaml.rb +4 -1
- data/lib/rouge/regex_lexer.rb +1 -0
- data/lib/rouge/template_lexer.rb +3 -5
- data/lib/rouge/theme.rb +14 -4
- data/lib/rouge/themes/igor_pro.rb +20 -0
- data/lib/rouge/themes/pastie.rb +69 -0
- data/lib/rouge/themes/thankful_eyes.rb +8 -5
- data/lib/rouge/version.rb +1 -1
- metadata +40 -6
- data/lib/rouge/demos/shell_session +0 -10
- data/lib/rouge/lexers/shell_session.rb +0 -29
data/lib/rouge/lexers/html.rb
CHANGED
@@ -14,6 +14,11 @@ module Rouge
|
|
14
14
|
return 1 if text =~ /<\s*html\b/
|
15
15
|
end
|
16
16
|
|
17
|
+
start do
|
18
|
+
@javascript = Javascript.new(options)
|
19
|
+
@css = CSS.new(options)
|
20
|
+
end
|
21
|
+
|
17
22
|
state :root do
|
18
23
|
rule /[^<&]+/m, Text
|
19
24
|
rule /&\S*?;/, Name::Entity
|
@@ -24,20 +29,49 @@ module Rouge
|
|
24
29
|
|
25
30
|
rule /<\s*script\s*/m do
|
26
31
|
token Name::Tag
|
32
|
+
@javascript.reset!
|
27
33
|
push :script_content
|
28
34
|
push :tag
|
29
35
|
end
|
30
36
|
|
31
37
|
rule /<\s*style\s*/m do
|
32
38
|
token Name::Tag
|
39
|
+
@css.reset!
|
33
40
|
push :style_content
|
34
41
|
push :tag
|
35
42
|
end
|
36
43
|
|
44
|
+
rule /<\//, Name::Tag, :tag_end
|
45
|
+
rule /</, Name::Tag, :tag_start
|
46
|
+
|
37
47
|
rule %r(<\s*[a-zA-Z0-9:-]+), Name::Tag, :tag # opening tags
|
38
48
|
rule %r(<\s*/\s*[a-zA-Z0-9:-]+\s*>), Name::Tag # closing tags
|
39
49
|
end
|
40
50
|
|
51
|
+
state :tag_end do
|
52
|
+
mixin :tag_end_end
|
53
|
+
rule /[a-zA-Z0-9:-]+/ do
|
54
|
+
token Name::Tag
|
55
|
+
goto :tag_end_end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
state :tag_end_end do
|
60
|
+
rule /\s+/, Text
|
61
|
+
rule />/, Name::Tag, :pop!
|
62
|
+
end
|
63
|
+
|
64
|
+
state :tag_start do
|
65
|
+
rule /\s+/, Text
|
66
|
+
|
67
|
+
rule /[a-zA-Z0-9:-]+/ do
|
68
|
+
token Name::Tag
|
69
|
+
goto :tag
|
70
|
+
end
|
71
|
+
|
72
|
+
rule(//) { goto :tag }
|
73
|
+
end
|
74
|
+
|
41
75
|
state :comment do
|
42
76
|
rule /[^-]+/, Comment
|
43
77
|
rule /-->/, Comment, :pop!
|
@@ -77,16 +111,26 @@ module Rouge
|
|
77
111
|
end
|
78
112
|
|
79
113
|
state :script_content do
|
114
|
+
rule %r([^<]+) do
|
115
|
+
delegate @javascript
|
116
|
+
end
|
117
|
+
|
80
118
|
rule %r(<\s*/\s*script\s*>)m, Name::Tag, :pop!
|
81
|
-
|
82
|
-
|
119
|
+
|
120
|
+
rule %r(<) do
|
121
|
+
delegate @javascript
|
83
122
|
end
|
84
123
|
end
|
85
124
|
|
86
125
|
state :style_content do
|
126
|
+
rule /[^<]+/ do
|
127
|
+
delegate @css
|
128
|
+
end
|
129
|
+
|
87
130
|
rule %r(<\s*/\s*style\s*>)m, Name::Tag, :pop!
|
88
|
-
|
89
|
-
|
131
|
+
|
132
|
+
rule /</ do
|
133
|
+
delegate @css
|
90
134
|
end
|
91
135
|
end
|
92
136
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class HyLang < RegexLexer
|
6
|
+
title "HyLang"
|
7
|
+
desc "The HyLang programming language (hylang.org)"
|
8
|
+
|
9
|
+
tag 'hylang'
|
10
|
+
aliases 'hy'
|
11
|
+
|
12
|
+
filenames '*.hy'
|
13
|
+
|
14
|
+
mimetypes 'text/x-hy', 'application/x-hy'
|
15
|
+
|
16
|
+
def self.keywords
|
17
|
+
@keywords ||= Set.new %w(
|
18
|
+
False None True and as assert break class continue def
|
19
|
+
del elif else except finally for from global if import
|
20
|
+
in is lambda nonlocal not or pass raise return try
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.builtins
|
25
|
+
@builtins ||= Set.new %w(
|
26
|
+
!= % %= & &= * ** **= *= *map
|
27
|
+
+ += , - -= -> ->> . / //
|
28
|
+
//= /= < << <<= <= = > >= >>
|
29
|
+
>>= @ @= ^ ^= accumulate apply as-> assoc butlast
|
30
|
+
calling-module-name car cdr chain coll? combinations comp complement compress cond
|
31
|
+
cons cons? constantly count cut cycle dec defclass defmacro defmacro!
|
32
|
+
defmacro/g! defmain defn defreader dict-comp disassemble dispatch-reader-macro distinct do doto
|
33
|
+
drop drop-last drop-while empty? eval eval-and-compile eval-when-compile even? every? filter
|
34
|
+
first flatten float? fn for* fraction genexpr gensym get group-by
|
35
|
+
identity if* if-not if-python2 inc input instance? integer integer-char? integer?
|
36
|
+
interleave interpose islice iterable? iterate iterator? juxt keyword keyword? last
|
37
|
+
let lif lif-not list* list-comp macro-error macroexpand macroexpand-1 map merge-with
|
38
|
+
multicombinations name neg? none? not-in not? nth numeric? odd? partition
|
39
|
+
permutations pos? product quasiquote quote range read read-str reduce remove
|
40
|
+
repeat repeatedly require rest second set-comp setv some string string?
|
41
|
+
symbol? take take-nth take-while tee unless unquote unquote-splicing when with*
|
42
|
+
with-decorator with-gensyms xor yield-from zero? zip zip-longest | |= ~
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
identifier = %r([\w!$%*+,<=>?/.-]+)
|
47
|
+
keyword = %r([\w!\#$%*+,<=>?/.-]+)
|
48
|
+
|
49
|
+
def name_token(name)
|
50
|
+
return Keyword if self.class.keywords.include?(name)
|
51
|
+
return Name::Builtin if self.class.builtins.include?(name)
|
52
|
+
nil
|
53
|
+
end
|
54
|
+
|
55
|
+
state :root do
|
56
|
+
rule /;.*?$/, Comment::Single
|
57
|
+
rule /\s+/m, Text::Whitespace
|
58
|
+
|
59
|
+
rule /-?\d+\.\d+/, Num::Float
|
60
|
+
rule /-?\d+/, Num::Integer
|
61
|
+
rule /0x-?[0-9a-fA-F]+/, Num::Hex
|
62
|
+
|
63
|
+
rule /"(\\.|[^"])*"/, Str
|
64
|
+
rule /'#{keyword}/, Str::Symbol
|
65
|
+
rule /::?#{keyword}/, Name::Constant
|
66
|
+
rule /\\(.|[a-z]+)/i, Str::Char
|
67
|
+
|
68
|
+
|
69
|
+
rule /~@|[`\'#^~&@]/, Operator
|
70
|
+
|
71
|
+
rule /(\()(\s*)(#{identifier})/m do |m|
|
72
|
+
token Punctuation, m[1]
|
73
|
+
token Text::Whitespace, m[2]
|
74
|
+
token(name_token(m[3]) || Name::Function, m[3])
|
75
|
+
end
|
76
|
+
|
77
|
+
rule identifier do |m|
|
78
|
+
token name_token(m[0]) || Name
|
79
|
+
end
|
80
|
+
|
81
|
+
# vectors
|
82
|
+
rule /[\[\]]/, Punctuation
|
83
|
+
|
84
|
+
# maps
|
85
|
+
rule /[{}]/, Punctuation
|
86
|
+
|
87
|
+
# parentheses
|
88
|
+
rule /[()]/, Punctuation
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
@@ -0,0 +1,407 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class IgorPro < RegexLexer
|
6
|
+
tag 'igorpro'
|
7
|
+
filenames '*.ipf'
|
8
|
+
mimetypes 'text/x-igorpro'
|
9
|
+
|
10
|
+
title "IgorPro"
|
11
|
+
desc "WaveMetrics Igor Pro"
|
12
|
+
|
13
|
+
def self.keywords
|
14
|
+
@keywords ||= Set.new %w(
|
15
|
+
structure endstructure
|
16
|
+
threadsafe static
|
17
|
+
macro proc window menu function end
|
18
|
+
if else elseif endif switch strswitch endswitch
|
19
|
+
break return continue
|
20
|
+
for endfor do while
|
21
|
+
case default
|
22
|
+
abortonrte
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.preprocessor
|
27
|
+
@preprocessor ||= Set.new %w(
|
28
|
+
pragma include
|
29
|
+
define ifdef ifndef undef
|
30
|
+
if elif else endif
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.igorDeclarations
|
35
|
+
@igorDeclarations ||= Set.new %w(
|
36
|
+
variable string wave strconstant constant
|
37
|
+
nvar svar dfref funcref struct
|
38
|
+
char uchar int16 uint16 int32 uint32 int64 uint64 float double
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.igorConstants
|
43
|
+
@igorConstants ||= Set.new %w(
|
44
|
+
nan inf
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.igorFunction
|
49
|
+
@igorFunction ||= Set.new %w(
|
50
|
+
axontelegraphsettimeoutms axontelegraphgettimeoutms
|
51
|
+
axontelegraphgetdatanum axontelegraphagetdatanum
|
52
|
+
axontelegraphgetdatastring axontelegraphagetdatastring
|
53
|
+
axontelegraphgetdatastruct axontelegraphagetdatastruct hdf5datasetinfo
|
54
|
+
hdf5attributeinfo hdf5typeinfo hdf5libraryinfo
|
55
|
+
mpfxgausspeak mpfxlorenzianpeak mpfxvoigtpeak mpfxemgpeak mpfxexpconvexppeak
|
56
|
+
abs acos acosh airya airyad airyb airybd
|
57
|
+
alog area areaxy asin asinh atan atan2 atanh axisvalfrompixel besseli
|
58
|
+
besselj besselk bessely beta betai binarysearch binarysearchinterp
|
59
|
+
binomial binomialln binomialnoise cabs capturehistorystart ceil cequal
|
60
|
+
char2num chebyshev chebyshevu checkname cmplx cmpstr conj contourz cos
|
61
|
+
cosh cosintegral cot coth countobjects countobjectsdfr cpowi
|
62
|
+
creationdate csc csch datafolderexists datafolderrefsequal
|
63
|
+
datafolderrefstatus date2secs datetime datetojulian dawson defined
|
64
|
+
deltax digamma dilogarithm dimdelta dimoffset dimsize ei enoise
|
65
|
+
equalwaves erf erfc erfcw exists exp expint expintegrale1 expnoise
|
66
|
+
factorial fakedata faverage faveragexy finddimlabel findlistitem floor
|
67
|
+
fontsizeheight fontsizestringwidth fresnelcos fresnelsin gamma
|
68
|
+
gammaeuler gammainc gammanoise gammln gammp gammq gauss gauss1d gauss2d
|
69
|
+
gcd getbrowserline getdefaultfontsize getdefaultfontstyle getkeystate
|
70
|
+
getrterror getrtlocation gizmoinfo gizmoscale gnoise grepstring hcsr
|
71
|
+
hermite hermitegauss hyperg0f1 hyperg1f1 hyperg2f1 hypergnoise hypergpfq
|
72
|
+
igorversion imag indextoscale integrate1d interp interp2d interp3d
|
73
|
+
inverseerf inverseerfc itemsinlist jacobicn jacobisn laguerre laguerrea
|
74
|
+
laguerregauss lambertw leftx legendrea limit ln log lognormalnoise
|
75
|
+
lorentziannoise magsqr mandelbrotpoint marcumq matrixcondition matrixdet
|
76
|
+
matrixdot matrixrank matrixtrace max mean median min mod moddate
|
77
|
+
norm numberbykey numpnts numtype numvarordefault nvar_exists p2rect
|
78
|
+
panelresolution paramisdefault pcsr pi pixelfromaxisval pnt2x
|
79
|
+
poissonnoise poly poly2d polygonarea qcsr r2polar real rightx round
|
80
|
+
sawtooth scaletoindex screenresolution sec sech selectnumber
|
81
|
+
setenvironmentvariable sign sin sinc sinh sinintegral sphericalbessj
|
82
|
+
sphericalbessjd sphericalbessy sphericalbessyd sphericalharmonics sqrt
|
83
|
+
startmstimer statsbetacdf statsbetapdf statsbinomialcdf statsbinomialpdf
|
84
|
+
statscauchycdf statscauchypdf statschicdf statschipdf statscmssdcdf
|
85
|
+
statscorrelation statsdexpcdf statsdexppdf statserlangcdf statserlangpdf
|
86
|
+
statserrorpdf statsevaluecdf statsevaluepdf statsexpcdf statsexppdf
|
87
|
+
statsfcdf statsfpdf statsfriedmancdf statsgammacdf statsgammapdf
|
88
|
+
statsgeometriccdf statsgeometricpdf statsgevcdf statsgevpdf
|
89
|
+
statshypergcdf statshypergpdf statsinvbetacdf statsinvbinomialcdf
|
90
|
+
statsinvcauchycdf statsinvchicdf statsinvcmssdcdf statsinvdexpcdf
|
91
|
+
statsinvevaluecdf statsinvexpcdf statsinvfcdf statsinvfriedmancdf
|
92
|
+
statsinvgammacdf statsinvgeometriccdf statsinvkuipercdf
|
93
|
+
statsinvlogisticcdf statsinvlognormalcdf statsinvmaxwellcdf
|
94
|
+
statsinvmoorecdf statsinvnbinomialcdf statsinvncchicdf statsinvncfcdf
|
95
|
+
statsinvnormalcdf statsinvparetocdf statsinvpoissoncdf statsinvpowercdf
|
96
|
+
statsinvqcdf statsinvqpcdf statsinvrayleighcdf statsinvrectangularcdf
|
97
|
+
statsinvspearmancdf statsinvstudentcdf statsinvtopdowncdf
|
98
|
+
statsinvtriangularcdf statsinvusquaredcdf statsinvvonmisescdf
|
99
|
+
statsinvweibullcdf statskuipercdf statslogisticcdf statslogisticpdf
|
100
|
+
statslognormalcdf statslognormalpdf statsmaxwellcdf statsmaxwellpdf
|
101
|
+
statsmedian statsmoorecdf statsnbinomialcdf statsnbinomialpdf
|
102
|
+
statsncchicdf statsncchipdf statsncfcdf statsncfpdf statsnctcdf
|
103
|
+
statsnctpdf statsnormalcdf statsnormalpdf statsparetocdf statsparetopdf
|
104
|
+
statspermute statspoissoncdf statspoissonpdf statspowercdf
|
105
|
+
statspowernoise statspowerpdf statsqcdf statsqpcdf statsrayleighcdf
|
106
|
+
statsrayleighpdf statsrectangularcdf statsrectangularpdf statsrunscdf
|
107
|
+
statsspearmanrhocdf statsstudentcdf statsstudentpdf statstopdowncdf
|
108
|
+
statstriangularcdf statstriangularpdf statstrimmedmean statsusquaredcdf
|
109
|
+
statsvonmisescdf statsvonmisesnoise statsvonmisespdf statswaldcdf
|
110
|
+
statswaldpdf statsweibullcdf statsweibullpdf stopmstimer str2num
|
111
|
+
stringcrc stringmatch strlen strsearch studenta studentt sum svar_exists
|
112
|
+
tagval tan tanh textencodingcode threadgroupcreate threadgrouprelease
|
113
|
+
threadgroupwait threadprocessorcount threadreturnvalue ticks trunc
|
114
|
+
unsetenvironmentvariable variance vcsr voigtfunc wavecrc wavedims
|
115
|
+
waveexists wavemax wavemin waverefsequal wavetextencoding wavetype
|
116
|
+
whichlistitem wintype wnoise x2pnt xcsr zcsr zerniker zeta addlistitem
|
117
|
+
annotationinfo annotationlist axisinfo axislist base64_decode
|
118
|
+
base64_encode capturehistory childwindowlist cleanupname contourinfo
|
119
|
+
contournamelist controlnamelist converttextencoding csrinfo csrwave
|
120
|
+
csrxwave ctablist datafolderdir date fetchurl fontlist funcrefinfo
|
121
|
+
functioninfo functionlist functionpath getbrowserselection getdatafolder
|
122
|
+
getdefaultfont getdimlabel getenvironmentvariable geterrmessage
|
123
|
+
getformula getindependentmodulename getindexedobjname
|
124
|
+
getindexedobjnamedfr getrterrmessage getrtlocinfo getrtstackinfo
|
125
|
+
getscraptext getuserdata getwavesdatafolder greplist guideinfo
|
126
|
+
guidenamelist hash igorinfo imageinfo imagenamelist
|
127
|
+
independentmodulelist indexeddir indexedfile juliantodate layoutinfo
|
128
|
+
listmatch lowerstr macrolist nameofwave normalizeunicode note num2char
|
129
|
+
num2istr num2str operationlist padstring parsefilepath pathlist pictinfo
|
130
|
+
pictlist possiblyquotename proceduretext removebykey removeending
|
131
|
+
removefromlist removelistitem replacenumberbykey replacestring
|
132
|
+
replacestringbykey secs2date secs2time selectstring sortlist
|
133
|
+
specialcharacterinfo specialcharacterlist specialdirpath stringbykey
|
134
|
+
stringfromlist stringlist strvarordefault tableinfo textencodingname
|
135
|
+
textfile threadgroupgetdf time tracefrompixel traceinfo tracenamelist
|
136
|
+
trimstring uniquename unpadstring upperstr urldecode urlencode
|
137
|
+
variablelist waveinfo wavelist wavename waverefwavetolist waveunits
|
138
|
+
winlist winname winrecreation wmfindwholeword xwavename
|
139
|
+
contournametowaveref csrwaveref csrxwaveref imagenametowaveref
|
140
|
+
listtotextwave listtowaverefwave newfreewave tagwaveref
|
141
|
+
tracenametowaveref waverefindexed waverefindexeddfr xwavereffromtrace
|
142
|
+
getdatafolderdfr getwavesdatafolderdfr newfreedatafolder
|
143
|
+
)
|
144
|
+
end
|
145
|
+
|
146
|
+
def self.igorOperation
|
147
|
+
@igorOperation ||= Set.new %w(
|
148
|
+
abort addfifodata addfifovectdata addmovieaudio addmovieframe adoptfiles
|
149
|
+
apmath append appendimage appendlayoutobject appendmatrixcontour
|
150
|
+
appendtext appendtogizmo appendtograph appendtolayout appendtotable
|
151
|
+
appendxyzcontour autopositionwindow backgroundinfo beep boundingball
|
152
|
+
browseurl buildmenu button cd chart checkbox checkdisplayed choosecolor
|
153
|
+
close closehelp closemovie closeproc colorscale colortab2wave
|
154
|
+
concatenate controlbar controlinfo controlupdate
|
155
|
+
convertglobalstringtextencoding convexhull convolve copyfile copyfolder
|
156
|
+
copyscales correlate createaliasshortcut createbrowser cross
|
157
|
+
ctrlbackground ctrlfifo ctrlnamedbackground cursor curvefit
|
158
|
+
customcontrol cwt debugger debuggeroptions defaultfont
|
159
|
+
defaultguicontrols defaultguifont defaulttextencoding defineguide
|
160
|
+
delayupdate deleteannotations deletefile deletefolder deletepoints
|
161
|
+
differentiate dir display displayhelptopic displayprocedure doalert
|
162
|
+
doigormenu doupdate dowindow doxopidle dpss drawaction drawarc
|
163
|
+
drawbezier drawline drawoval drawpict drawpoly drawrect drawrrect
|
164
|
+
drawtext drawusershape dspdetrend dspperiodogram duplicate
|
165
|
+
duplicatedatafolder dwt edgestats edit errorbars execute
|
166
|
+
executescripttext experimentmodified exportgizmo extract
|
167
|
+
fastgausstransform fastop fbinread fbinwrite fft fgetpos fifo2wave
|
168
|
+
fifostatus filterfir filteriir findcontour findduplicates findlevel
|
169
|
+
findlevels findpeak findpointsinpoly findroots findsequence findvalue
|
170
|
+
fpclustering fprintf freadline fsetpos fstatus ftpcreatedirectory
|
171
|
+
ftpdelete ftpdownload ftpupload funcfit funcfitmd gbloadwave getaxis
|
172
|
+
getcamera getfilefolderinfo getgizmo getlastusermenuinfo getmarquee
|
173
|
+
getmouse getselection getwindow graphnormal graphwavedraw graphwaveedit
|
174
|
+
grep groupbox hanning hideigormenus hideinfo hideprocedures hidetools
|
175
|
+
hilberttransform histogram ica ifft imageanalyzeparticles imageblend
|
176
|
+
imageboundarytomask imageedgedetection imagefileinfo imagefilter
|
177
|
+
imagefocus imagefromxyz imagegenerateroimask imageglcm
|
178
|
+
imagehistmodification imagehistogram imageinterpolate imagelineprofile
|
179
|
+
imageload imagemorphology imageregistration imageremovebackground
|
180
|
+
imagerestore imagerotate imagesave imageseedfill imageskeleton3d
|
181
|
+
imagesnake imagestats imagethreshold imagetransform imageunwrapphase
|
182
|
+
imagewindow indexsort insertpoints integrate integrate2d integrateode
|
183
|
+
interp3dpath interpolate2 interpolate3d jcamploadwave jointhistogram
|
184
|
+
killbackground killcontrol killdatafolder killfifo killfreeaxis killpath
|
185
|
+
killpicts killstrings killvariables killwaves killwindow kmeans label
|
186
|
+
layout layoutpageaction layoutslideshow legend
|
187
|
+
linearfeedbackshiftregister listbox loaddata loadpackagepreferences
|
188
|
+
loadpict loadwave loess lombperiodogram make makeindex markperftesttime
|
189
|
+
matrixconvolve matrixcorr matrixeigenv matrixfilter matrixgaussj
|
190
|
+
matrixglm matrixinverse matrixlinearsolve matrixlinearsolvetd matrixlls
|
191
|
+
matrixlubksub matrixlud matrixludtd matrixmultiply matrixop matrixschur
|
192
|
+
matrixsolve matrixsvbksub matrixsvd matrixtranspose measurestyledtext
|
193
|
+
mlloadwave modify modifybrowser modifycamera modifycontour modifycontrol
|
194
|
+
modifycontrollist modifyfreeaxis modifygizmo modifygraph modifyimage
|
195
|
+
modifylayout modifypanel modifytable modifywaterfall movedatafolder
|
196
|
+
movefile movefolder movestring movesubwindow movevariable movewave
|
197
|
+
movewindow multitaperpsd multithreadingcontrol neuralnetworkrun
|
198
|
+
neuralnetworktrain newcamera newdatafolder newfifo newfifochan
|
199
|
+
newfreeaxis newgizmo newimage newlayout newmovie newnotebook newpanel
|
200
|
+
newpath newwaterfall note notebook notebookaction open openhelp
|
201
|
+
opennotebook optimize parseoperationtemplate pathinfo pauseforuser
|
202
|
+
pauseupdate pca playmovie playmovieaction playsound popupcontextualmenu
|
203
|
+
popupmenu preferences primefactors print printf printgraphs printlayout
|
204
|
+
printnotebook printsettings printtable project pulsestats putscraptext
|
205
|
+
pwd quit ratiofromnumber redimension remove removecontour
|
206
|
+
removefromgizmo removefromgraph removefromlayout removefromtable
|
207
|
+
removeimage removelayoutobjects removepath rename renamedatafolder
|
208
|
+
renamepath renamepict renamewindow reorderimages reordertraces
|
209
|
+
replacetext replacewave resample resumeupdate reverse rotate save
|
210
|
+
savedata saveexperiment savegraphcopy savenotebook
|
211
|
+
savepackagepreferences savepict savetablecopy setactivesubwindow setaxis
|
212
|
+
setbackground setdashpattern setdatafolder setdimlabel setdrawenv
|
213
|
+
setdrawlayer setfilefolderinfo setformula setigorhook setigormenumode
|
214
|
+
setigoroption setmarquee setprocesssleep setrandomseed setscale
|
215
|
+
setvariable setwavelock setwavetextencoding setwindow showigormenus
|
216
|
+
showinfo showtools silent sleep slider smooth smoothcustom sort
|
217
|
+
sortcolumns soundinrecord soundinset soundinstartchart soundinstatus
|
218
|
+
soundinstopchart soundloadwave soundsavewave sphericalinterpolate
|
219
|
+
sphericaltriangulate splitstring splitwave sprintf sscanf stack
|
220
|
+
stackwindows statsangulardistancetest statsanova1test statsanova2nrtest
|
221
|
+
statsanova2rmtest statsanova2test statschitest
|
222
|
+
statscircularcorrelationtest statscircularmeans statscircularmoments
|
223
|
+
statscirculartwosampletest statscochrantest statscontingencytable
|
224
|
+
statsdiptest statsdunnetttest statsfriedmantest statsftest
|
225
|
+
statshodgesajnetest statsjbtest statskde statskendalltautest statskstest
|
226
|
+
statskwtest statslinearcorrelationtest statslinearregression
|
227
|
+
statsmulticorrelationtest statsnpmctest statsnpnominalsrtest
|
228
|
+
statsquantiles statsrankcorrelationtest statsresample statssample
|
229
|
+
statsscheffetest statsshapirowilktest statssigntest statssrtest
|
230
|
+
statsttest statstukeytest statsvariancestest statswatsonusquaredtest
|
231
|
+
statswatsonwilliamstest statswheelerwatsontest statswilcoxonranktest
|
232
|
+
statswrcorrelationtest structget structput sumdimension sumseries
|
233
|
+
tabcontrol tag textbox threadgroupputdf threadstart tile tilewindows
|
234
|
+
titlebox tocommandline toolsgrid triangulate3d unwrap urlrequest
|
235
|
+
valdisplay waveclear wavemeanstdv wavestats wavetransform wfprintf
|
236
|
+
)
|
237
|
+
end
|
238
|
+
|
239
|
+
def self.hdf5Operation
|
240
|
+
@hdf5Operation ||= Set.new %w(
|
241
|
+
hdf5createfile hdf5openfile hdf5closefile hdf5creategroup hdf5opengroup
|
242
|
+
hdf5listgroup hdf5closegroup hdf5listattributes hdf5attributeinfo hdf5datasetinfo
|
243
|
+
hdf5loaddata hdf5loadimage hdf5loadgroup hdf5savedata hdf5saveimage hdf5savegroup
|
244
|
+
hdf5typeinfo hdf5createlink hdf5unlinkobject hdf5libraryinfo
|
245
|
+
hdf5dumpstate hdf5dump hdf5dumperrors
|
246
|
+
)
|
247
|
+
end
|
248
|
+
|
249
|
+
def self.object_name
|
250
|
+
/[a-z][a-z0-9_]*\b/i
|
251
|
+
end
|
252
|
+
|
253
|
+
object = self.object_name
|
254
|
+
whitespace = /[\s\r]+/
|
255
|
+
noLineBreak = /[ \t]+/
|
256
|
+
operator = %r([\#$~!%^&*+=\|?:<>/-])
|
257
|
+
punctuation = /[{}()\[\],.;]/
|
258
|
+
number_float= /0x[a-f0-9]+/i
|
259
|
+
number_hex = /\d+\.\d+(e[\+\-]?\d+)?/
|
260
|
+
number_int = /[\d]+(?:_\d+)*/
|
261
|
+
|
262
|
+
state :root do
|
263
|
+
rule %r(//), Comment, :comments
|
264
|
+
|
265
|
+
rule /\b#{object}/ do |m|
|
266
|
+
if m[0].downcase.match /function/
|
267
|
+
token Keyword::Declaration
|
268
|
+
push :parse_function
|
269
|
+
elsif self.class.igorDeclarations.include? m[0].downcase
|
270
|
+
token Keyword::Declaration
|
271
|
+
push :parse_variables
|
272
|
+
elsif self.class.keywords.include? m[0].downcase
|
273
|
+
token Keyword
|
274
|
+
elsif self.class.igorConstants.include? m[0].downcase
|
275
|
+
token Keyword::Constant
|
276
|
+
elsif self.class.igorFunction.include? m[0].downcase
|
277
|
+
token Name::Builtin
|
278
|
+
elsif self.class.igorOperation.include? m[0].downcase
|
279
|
+
token Keyword::Reserved
|
280
|
+
push :operationFlags
|
281
|
+
elsif self.class.hdf5Operation.include? m[0].downcase
|
282
|
+
token Keyword::Reserved
|
283
|
+
push :operationFlags
|
284
|
+
elsif m[0].downcase.match /(v|s|w)_[a-z]+[a-z0-9]*/
|
285
|
+
token Name::Builtin
|
286
|
+
else
|
287
|
+
token Name
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
mixin :preprocessor
|
292
|
+
mixin :waveFlag
|
293
|
+
|
294
|
+
mixin :characters
|
295
|
+
mixin :numbers
|
296
|
+
end
|
297
|
+
|
298
|
+
state :preprocessor do
|
299
|
+
rule %r((\#)(#{object})) do |m|
|
300
|
+
if self.class.preprocessor.include? m[2].downcase
|
301
|
+
token Comment::Preproc
|
302
|
+
else
|
303
|
+
token Punctuation, m[1] #i.e. ModuleFunctions
|
304
|
+
token Name, m[2]
|
305
|
+
end
|
306
|
+
|
307
|
+
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
state :assignment do
|
312
|
+
mixin :whitespace
|
313
|
+
rule /\"/, Punctuation, :string1
|
314
|
+
mixin :string2
|
315
|
+
rule /#{number_float}/, Literal::Number::Float, :pop!
|
316
|
+
rule /#{number_int}/, Literal::Number::Integer, :pop!
|
317
|
+
rule /[\(\[\{][^\)\]\}]+[\)\]\}]/, Generic, :pop!
|
318
|
+
rule /[^\s\/\(]+/, Generic, :pop!
|
319
|
+
rule(//) { pop! }
|
320
|
+
end
|
321
|
+
|
322
|
+
state :parse_variables do
|
323
|
+
mixin :whitespace
|
324
|
+
rule /[=]/, Punctuation, :assignment
|
325
|
+
rule %r([/][a-z]+)i, Keyword::Pseudo, :parse_variables
|
326
|
+
rule object, Name::Variable
|
327
|
+
rule /[\[\]]/, Punctuation # optional variables in functions
|
328
|
+
rule /[,]/, Punctuation, :parse_variables
|
329
|
+
rule /\)/, Punctuation, :pop! # end of function
|
330
|
+
rule(//) { pop! }
|
331
|
+
end
|
332
|
+
|
333
|
+
state :parse_function do
|
334
|
+
rule %r([/][a-z]+)i, Keyword::Pseudo # only one flag
|
335
|
+
mixin :whitespace
|
336
|
+
rule object, Name::Function
|
337
|
+
rule /[\(]/, Punctuation, :parse_variables
|
338
|
+
rule(//) { pop! }
|
339
|
+
end
|
340
|
+
|
341
|
+
state :operationFlags do
|
342
|
+
rule /#{noLineBreak}/, Text
|
343
|
+
rule /[=]/, Punctuation, :assignment
|
344
|
+
rule %r([/][a-z]+)i, Keyword::Pseudo, :operationFlags
|
345
|
+
rule /(as)(\s*)(#{object})/i do
|
346
|
+
groups Keyword::Type, Text, Name::Label
|
347
|
+
end
|
348
|
+
rule(//) { pop! }
|
349
|
+
end
|
350
|
+
|
351
|
+
# inline variable assignments (i.e. for Make) with strict syntax
|
352
|
+
state :waveFlag do
|
353
|
+
rule %r(
|
354
|
+
(/(?:wave|X|Y))
|
355
|
+
(\s*)(=)(\s*)
|
356
|
+
(#{object})
|
357
|
+
)ix do |m|
|
358
|
+
token Keyword::Pseudo, m[1]
|
359
|
+
token Text, m[2]
|
360
|
+
token Punctuation, m[3]
|
361
|
+
token Text, m[4]
|
362
|
+
token Name::Variable, m[5]
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
366
|
+
state :characters do
|
367
|
+
rule /\s/, Text
|
368
|
+
rule /#{operator}/, Operator
|
369
|
+
rule /#{punctuation}/, Punctuation
|
370
|
+
rule /\"/, Punctuation, :string1
|
371
|
+
mixin :string2
|
372
|
+
end
|
373
|
+
|
374
|
+
state :numbers do
|
375
|
+
rule /#{number_float}/, Literal::Number::Float
|
376
|
+
rule /#{number_hex}/, Literal::Number::Hex
|
377
|
+
rule /#{number_int}/, Literal::Number::Integer
|
378
|
+
end
|
379
|
+
|
380
|
+
state :whitespace do
|
381
|
+
rule /#{noLineBreak}/, Text
|
382
|
+
end
|
383
|
+
|
384
|
+
state :string1 do
|
385
|
+
rule /%\w\b/, Literal::String::Other
|
386
|
+
rule /\\\\/, Literal::String::Escape
|
387
|
+
rule /\\\"/, Literal::String::Escape
|
388
|
+
rule /\\/, Literal::String::Escape
|
389
|
+
rule /[^"]/, Literal::String
|
390
|
+
rule /\"/, Punctuation, :pop!
|
391
|
+
end
|
392
|
+
|
393
|
+
state :string2 do
|
394
|
+
rule /\'[^']*\'/, Literal::String::Single
|
395
|
+
end
|
396
|
+
|
397
|
+
state :comments do
|
398
|
+
rule %r{([/]\s*)([@]\w+\b)}i do
|
399
|
+
# doxygen comments
|
400
|
+
groups Comment, Comment::Special
|
401
|
+
end
|
402
|
+
rule /[^\r\n]/, Comment
|
403
|
+
rule(//) { pop! }
|
404
|
+
end
|
405
|
+
end
|
406
|
+
end
|
407
|
+
end
|