rouge_ecl 0.0.1

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.
Files changed (319) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge.rb +82 -0
  6. data/lib/rouge/cli.rb +429 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -0
  9. data/lib/rouge/demos/apache +21 -0
  10. data/lib/rouge/demos/apiblueprint +33 -0
  11. data/lib/rouge/demos/applescript +2 -0
  12. data/lib/rouge/demos/awk +4 -0
  13. data/lib/rouge/demos/biml +38 -0
  14. data/lib/rouge/demos/bsl +7 -0
  15. data/lib/rouge/demos/c +8 -0
  16. data/lib/rouge/demos/ceylon +7 -0
  17. data/lib/rouge/demos/cfscript +18 -0
  18. data/lib/rouge/demos/clojure +5 -0
  19. data/lib/rouge/demos/cmake +7 -0
  20. data/lib/rouge/demos/coffeescript +5 -0
  21. data/lib/rouge/demos/common_lisp +1 -0
  22. data/lib/rouge/demos/conf +4 -0
  23. data/lib/rouge/demos/console +6 -0
  24. data/lib/rouge/demos/coq +13 -0
  25. data/lib/rouge/demos/cpp +8 -0
  26. data/lib/rouge/demos/csharp +5 -0
  27. data/lib/rouge/demos/css +4 -0
  28. data/lib/rouge/demos/d +16 -0
  29. data/lib/rouge/demos/dart +6 -0
  30. data/lib/rouge/demos/diff +7 -0
  31. data/lib/rouge/demos/digdag +19 -0
  32. data/lib/rouge/demos/docker +9 -0
  33. data/lib/rouge/demos/dot +5 -0
  34. data/lib/rouge/demos/ecl +1 -0
  35. data/lib/rouge/demos/eiffel +30 -0
  36. data/lib/rouge/demos/elixir +1 -0
  37. data/lib/rouge/demos/elm +4 -0
  38. data/lib/rouge/demos/erb +1 -0
  39. data/lib/rouge/demos/erlang +7 -0
  40. data/lib/rouge/demos/factor +5 -0
  41. data/lib/rouge/demos/fortran +22 -0
  42. data/lib/rouge/demos/fsharp +12 -0
  43. data/lib/rouge/demos/gherkin +17 -0
  44. data/lib/rouge/demos/glsl +14 -0
  45. data/lib/rouge/demos/go +7 -0
  46. data/lib/rouge/demos/gradle +10 -0
  47. data/lib/rouge/demos/graphql +17 -0
  48. data/lib/rouge/demos/groovy +9 -0
  49. data/lib/rouge/demos/hack +5 -0
  50. data/lib/rouge/demos/haml +5 -0
  51. data/lib/rouge/demos/handlebars +7 -0
  52. data/lib/rouge/demos/haskell +6 -0
  53. data/lib/rouge/demos/html +8 -0
  54. data/lib/rouge/demos/http +14 -0
  55. data/lib/rouge/demos/hylang +10 -0
  56. data/lib/rouge/demos/idlang +8 -0
  57. data/lib/rouge/demos/igorpro +9 -0
  58. data/lib/rouge/demos/ini +4 -0
  59. data/lib/rouge/demos/io +11 -0
  60. data/lib/rouge/demos/irb +4 -0
  61. data/lib/rouge/demos/irb_output +2 -0
  62. data/lib/rouge/demos/java +5 -0
  63. data/lib/rouge/demos/javascript +1 -0
  64. data/lib/rouge/demos/jinja +9 -0
  65. data/lib/rouge/demos/json +1 -0
  66. data/lib/rouge/demos/json-doc +1 -0
  67. data/lib/rouge/demos/jsonnet +28 -0
  68. data/lib/rouge/demos/jsx +17 -0
  69. data/lib/rouge/demos/julia +11 -0
  70. data/lib/rouge/demos/kotlin +3 -0
  71. data/lib/rouge/demos/lasso +12 -0
  72. data/lib/rouge/demos/liquid +11 -0
  73. data/lib/rouge/demos/literate_coffeescript +3 -0
  74. data/lib/rouge/demos/literate_haskell +7 -0
  75. data/lib/rouge/demos/llvm +20 -0
  76. data/lib/rouge/demos/lua +12 -0
  77. data/lib/rouge/demos/make +6 -0
  78. data/lib/rouge/demos/markdown +4 -0
  79. data/lib/rouge/demos/matlab +6 -0
  80. data/lib/rouge/demos/moonscript +16 -0
  81. data/lib/rouge/demos/mosel +10 -0
  82. data/lib/rouge/demos/mxml +22 -0
  83. data/lib/rouge/demos/nasm +26 -0
  84. data/lib/rouge/demos/nginx +5 -0
  85. data/lib/rouge/demos/nim +27 -0
  86. data/lib/rouge/demos/nix +19 -0
  87. data/lib/rouge/demos/objective_c +18 -0
  88. data/lib/rouge/demos/ocaml +12 -0
  89. data/lib/rouge/demos/pascal +14 -0
  90. data/lib/rouge/demos/perl +5 -0
  91. data/lib/rouge/demos/php +3 -0
  92. data/lib/rouge/demos/plaintext +1 -0
  93. data/lib/rouge/demos/plist +142 -0
  94. data/lib/rouge/demos/pony +17 -0
  95. data/lib/rouge/demos/powershell +49 -0
  96. data/lib/rouge/demos/praat +26 -0
  97. data/lib/rouge/demos/prolog +9 -0
  98. data/lib/rouge/demos/prometheus +9 -0
  99. data/lib/rouge/demos/properties +7 -0
  100. data/lib/rouge/demos/protobuf +5 -0
  101. data/lib/rouge/demos/puppet +6 -0
  102. data/lib/rouge/demos/python +6 -0
  103. data/lib/rouge/demos/q +2 -0
  104. data/lib/rouge/demos/qml +9 -0
  105. data/lib/rouge/demos/r +8 -0
  106. data/lib/rouge/demos/racket +24 -0
  107. data/lib/rouge/demos/ruby +9 -0
  108. data/lib/rouge/demos/rust +12 -0
  109. data/lib/rouge/demos/sass +3 -0
  110. data/lib/rouge/demos/scala +3 -0
  111. data/lib/rouge/demos/scheme +4 -0
  112. data/lib/rouge/demos/scss +5 -0
  113. data/lib/rouge/demos/sed +4 -0
  114. data/lib/rouge/demos/shell +2 -0
  115. data/lib/rouge/demos/sieve +10 -0
  116. data/lib/rouge/demos/slim +17 -0
  117. data/lib/rouge/demos/smalltalk +6 -0
  118. data/lib/rouge/demos/smarty +12 -0
  119. data/lib/rouge/demos/sml +4 -0
  120. data/lib/rouge/demos/sql +1 -0
  121. data/lib/rouge/demos/swift +5 -0
  122. data/lib/rouge/demos/tap +5 -0
  123. data/lib/rouge/demos/tcl +1 -0
  124. data/lib/rouge/demos/tex +1 -0
  125. data/lib/rouge/demos/toml +9 -0
  126. data/lib/rouge/demos/tsx +17 -0
  127. data/lib/rouge/demos/tulip +13 -0
  128. data/lib/rouge/demos/turtle +26 -0
  129. data/lib/rouge/demos/twig +9 -0
  130. data/lib/rouge/demos/typescript +1 -0
  131. data/lib/rouge/demos/vala +8 -0
  132. data/lib/rouge/demos/vb +4 -0
  133. data/lib/rouge/demos/verilog +27 -0
  134. data/lib/rouge/demos/vhdl +23 -0
  135. data/lib/rouge/demos/viml +14 -0
  136. data/lib/rouge/demos/vue +11 -0
  137. data/lib/rouge/demos/wollok +11 -0
  138. data/lib/rouge/demos/xml +2 -0
  139. data/lib/rouge/demos/yaml +4 -0
  140. data/lib/rouge/formatter.rb +75 -0
  141. data/lib/rouge/formatters/html.rb +37 -0
  142. data/lib/rouge/formatters/html_inline.rb +30 -0
  143. data/lib/rouge/formatters/html_legacy.rb +44 -0
  144. data/lib/rouge/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge/formatters/html_table.rb +61 -0
  147. data/lib/rouge/formatters/null.rb +19 -0
  148. data/lib/rouge/formatters/terminal256.rb +180 -0
  149. data/lib/rouge/guesser.rb +55 -0
  150. data/lib/rouge/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge/guessers/filename.rb +25 -0
  152. data/lib/rouge/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge/guessers/mimetype.rb +14 -0
  154. data/lib/rouge/guessers/modeline.rb +44 -0
  155. data/lib/rouge/guessers/source.rb +29 -0
  156. data/lib/rouge/guessers/util.rb +32 -0
  157. data/lib/rouge/lexer.rb +461 -0
  158. data/lib/rouge/lexers/abap.rb +238 -0
  159. data/lib/rouge/lexers/actionscript.rb +195 -0
  160. data/lib/rouge/lexers/apache.rb +71 -0
  161. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge/lexers/apple_script.rb +367 -0
  164. data/lib/rouge/lexers/awk.rb +161 -0
  165. data/lib/rouge/lexers/biml.rb +41 -0
  166. data/lib/rouge/lexers/bsl.rb +81 -0
  167. data/lib/rouge/lexers/c.rb +212 -0
  168. data/lib/rouge/lexers/ceylon.rb +123 -0
  169. data/lib/rouge/lexers/cfscript.rb +153 -0
  170. data/lib/rouge/lexers/clojure.rb +112 -0
  171. data/lib/rouge/lexers/cmake.rb +206 -0
  172. data/lib/rouge/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge/lexers/conf.rb +24 -0
  175. data/lib/rouge/lexers/console.rb +136 -0
  176. data/lib/rouge/lexers/coq.rb +187 -0
  177. data/lib/rouge/lexers/cpp.rb +78 -0
  178. data/lib/rouge/lexers/csharp.rb +114 -0
  179. data/lib/rouge/lexers/css.rb +273 -0
  180. data/lib/rouge/lexers/d.rb +176 -0
  181. data/lib/rouge/lexers/dart.rb +104 -0
  182. data/lib/rouge/lexers/diff.rb +31 -0
  183. data/lib/rouge/lexers/digdag.rb +68 -0
  184. data/lib/rouge/lexers/docker.rb +50 -0
  185. data/lib/rouge/lexers/dot.rb +68 -0
  186. data/lib/rouge/lexers/ecl.rb +138 -0
  187. data/lib/rouge/lexers/eiffel.rb +65 -0
  188. data/lib/rouge/lexers/elixir.rb +133 -0
  189. data/lib/rouge/lexers/elm.rb +89 -0
  190. data/lib/rouge/lexers/erb.rb +52 -0
  191. data/lib/rouge/lexers/erlang.rb +114 -0
  192. data/lib/rouge/lexers/factor.rb +302 -0
  193. data/lib/rouge/lexers/fortran.rb +176 -0
  194. data/lib/rouge/lexers/fsharp.rb +118 -0
  195. data/lib/rouge/lexers/gherkin.rb +137 -0
  196. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  197. data/lib/rouge/lexers/glsl.rb +135 -0
  198. data/lib/rouge/lexers/go.rb +174 -0
  199. data/lib/rouge/lexers/gradle.rb +37 -0
  200. data/lib/rouge/lexers/graphql.rb +243 -0
  201. data/lib/rouge/lexers/groovy.rb +112 -0
  202. data/lib/rouge/lexers/hack.rb +48 -0
  203. data/lib/rouge/lexers/haml.rb +229 -0
  204. data/lib/rouge/lexers/handlebars.rb +79 -0
  205. data/lib/rouge/lexers/haskell.rb +182 -0
  206. data/lib/rouge/lexers/html.rb +139 -0
  207. data/lib/rouge/lexers/http.rb +80 -0
  208. data/lib/rouge/lexers/hylang.rb +93 -0
  209. data/lib/rouge/lexers/idlang.rb +310 -0
  210. data/lib/rouge/lexers/igorpro.rb +408 -0
  211. data/lib/rouge/lexers/ini.rb +53 -0
  212. data/lib/rouge/lexers/io.rb +68 -0
  213. data/lib/rouge/lexers/irb.rb +66 -0
  214. data/lib/rouge/lexers/java.rb +87 -0
  215. data/lib/rouge/lexers/javascript.rb +281 -0
  216. data/lib/rouge/lexers/jinja.rb +137 -0
  217. data/lib/rouge/lexers/json.rb +29 -0
  218. data/lib/rouge/lexers/json_doc.rb +23 -0
  219. data/lib/rouge/lexers/jsonnet.rb +151 -0
  220. data/lib/rouge/lexers/jsx.rb +102 -0
  221. data/lib/rouge/lexers/julia.rb +172 -0
  222. data/lib/rouge/lexers/kotlin.rb +79 -0
  223. data/lib/rouge/lexers/lasso.rb +214 -0
  224. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  225. data/lib/rouge/lexers/liquid.rb +287 -0
  226. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  227. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  228. data/lib/rouge/lexers/llvm.rb +80 -0
  229. data/lib/rouge/lexers/lua.rb +125 -0
  230. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  231. data/lib/rouge/lexers/make.rb +112 -0
  232. data/lib/rouge/lexers/markdown.rb +154 -0
  233. data/lib/rouge/lexers/matlab.rb +71 -0
  234. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  235. data/lib/rouge/lexers/moonscript.rb +114 -0
  236. data/lib/rouge/lexers/mosel.rb +231 -0
  237. data/lib/rouge/lexers/mxml.rb +68 -0
  238. data/lib/rouge/lexers/nasm.rb +198 -0
  239. data/lib/rouge/lexers/nginx.rb +71 -0
  240. data/lib/rouge/lexers/nim.rb +152 -0
  241. data/lib/rouge/lexers/nix.rb +205 -0
  242. data/lib/rouge/lexers/objective_c.rb +194 -0
  243. data/lib/rouge/lexers/ocaml.rb +100 -0
  244. data/lib/rouge/lexers/pascal.rb +66 -0
  245. data/lib/rouge/lexers/perl.rb +196 -0
  246. data/lib/rouge/lexers/php.rb +193 -0
  247. data/lib/rouge/lexers/php/builtins.rb +194 -0
  248. data/lib/rouge/lexers/plain_text.rb +26 -0
  249. data/lib/rouge/lexers/plist.rb +45 -0
  250. data/lib/rouge/lexers/pony.rb +93 -0
  251. data/lib/rouge/lexers/powershell.rb +678 -0
  252. data/lib/rouge/lexers/praat.rb +350 -0
  253. data/lib/rouge/lexers/prolog.rb +59 -0
  254. data/lib/rouge/lexers/prometheus.rb +121 -0
  255. data/lib/rouge/lexers/properties.rb +51 -0
  256. data/lib/rouge/lexers/protobuf.rb +70 -0
  257. data/lib/rouge/lexers/puppet.rb +128 -0
  258. data/lib/rouge/lexers/python.rb +232 -0
  259. data/lib/rouge/lexers/q.rb +123 -0
  260. data/lib/rouge/lexers/qml.rb +73 -0
  261. data/lib/rouge/lexers/r.rb +89 -0
  262. data/lib/rouge/lexers/racket.rb +543 -0
  263. data/lib/rouge/lexers/ruby.rb +437 -0
  264. data/lib/rouge/lexers/rust.rb +192 -0
  265. data/lib/rouge/lexers/sass.rb +74 -0
  266. data/lib/rouge/lexers/sass/common.rb +180 -0
  267. data/lib/rouge/lexers/scala.rb +142 -0
  268. data/lib/rouge/lexers/scheme.rb +112 -0
  269. data/lib/rouge/lexers/scss.rb +34 -0
  270. data/lib/rouge/lexers/sed.rb +172 -0
  271. data/lib/rouge/lexers/shell.rb +189 -0
  272. data/lib/rouge/lexers/sieve.rb +96 -0
  273. data/lib/rouge/lexers/slim.rb +228 -0
  274. data/lib/rouge/lexers/smalltalk.rb +116 -0
  275. data/lib/rouge/lexers/smarty.rb +80 -0
  276. data/lib/rouge/lexers/sml.rb +344 -0
  277. data/lib/rouge/lexers/sql.rb +140 -0
  278. data/lib/rouge/lexers/swift.rb +181 -0
  279. data/lib/rouge/lexers/tap.rb +87 -0
  280. data/lib/rouge/lexers/tcl.rb +192 -0
  281. data/lib/rouge/lexers/tex.rb +69 -0
  282. data/lib/rouge/lexers/toml.rb +67 -0
  283. data/lib/rouge/lexers/tsx.rb +19 -0
  284. data/lib/rouge/lexers/tulip.rb +106 -0
  285. data/lib/rouge/lexers/turtle.rb +63 -0
  286. data/lib/rouge/lexers/twig.rb +39 -0
  287. data/lib/rouge/lexers/typescript.rb +22 -0
  288. data/lib/rouge/lexers/typescript/common.rb +33 -0
  289. data/lib/rouge/lexers/vala.rb +77 -0
  290. data/lib/rouge/lexers/vb.rb +164 -0
  291. data/lib/rouge/lexers/verilog.rb +164 -0
  292. data/lib/rouge/lexers/vhdl.rb +97 -0
  293. data/lib/rouge/lexers/viml.rb +101 -0
  294. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  295. data/lib/rouge/lexers/vue.rb +122 -0
  296. data/lib/rouge/lexers/wollok.rb +103 -0
  297. data/lib/rouge/lexers/xml.rb +57 -0
  298. data/lib/rouge/lexers/yaml.rb +373 -0
  299. data/lib/rouge/plugins/redcarpet.rb +30 -0
  300. data/lib/rouge/regex_lexer.rb +441 -0
  301. data/lib/rouge/template_lexer.rb +20 -0
  302. data/lib/rouge/text_analyzer.rb +49 -0
  303. data/lib/rouge/theme.rb +213 -0
  304. data/lib/rouge/themes/base16.rb +130 -0
  305. data/lib/rouge/themes/colorful.rb +67 -0
  306. data/lib/rouge/themes/github.rb +71 -0
  307. data/lib/rouge/themes/gruvbox.rb +167 -0
  308. data/lib/rouge/themes/igor_pro.rb +20 -0
  309. data/lib/rouge/themes/molokai.rb +82 -0
  310. data/lib/rouge/themes/monokai.rb +92 -0
  311. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  312. data/lib/rouge/themes/pastie.rb +69 -0
  313. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  314. data/lib/rouge/themes/tulip.rb +69 -0
  315. data/lib/rouge/token.rb +182 -0
  316. data/lib/rouge/util.rb +101 -0
  317. data/lib/rouge/version.rb +7 -0
  318. data/rouge.gemspec +23 -0
  319. metadata +365 -0
@@ -0,0 +1,310 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # vim: set ts=2 sw=2 et:
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class IDLang < RegexLexer
7
+ title "IDL"
8
+ desc "Interactive Data Language"
9
+
10
+ tag 'idlang'
11
+ filenames '*.idl'
12
+
13
+ name = /[_A-Z]\w*/i
14
+ kind_param = /(\d+|#{name})/
15
+ exponent = /[dDeE][+-]\d+/
16
+
17
+ def self.exec_unit
18
+ @exec_unit ||= Set.new %w(
19
+ PRO FUNCTION
20
+ )
21
+ end
22
+
23
+ def self.keywords
24
+ @keywords ||= Set.new %w(
25
+ STRUCT INHERITS
26
+ RETURN CONTINUE BEGIN END BREAK GOTO
27
+ )
28
+ end
29
+
30
+ def self.standalone_statements
31
+ # Must not have a comma afterwards
32
+ @standalone_statements ||= Set.new %w(
33
+ COMMON FORWARD_FUNCTION
34
+ )
35
+ end
36
+
37
+ def self.decorators
38
+ # Must not have a comma afterwards
39
+ @decorators ||= Set.new %w(
40
+ COMPILE_OPT
41
+ )
42
+ end
43
+
44
+ def self.operators
45
+ @operators ||= Set.new %w(
46
+ AND= EQ= GE= GT= LE= LT= MOD= NE= OR= XOR= NOT=
47
+ )
48
+ end
49
+
50
+ def self.conditionals
51
+ @conditionals ||= Set.new %w(
52
+ OF DO ENDIF ENDELSE ENDFOR ENDFOREACH ENDWHILE ENDREP ENDCASE ENDSWITCH
53
+ IF THEN ELSE FOR FOREACH WHILE REPEAT UNTIL CASE SWITCH
54
+ AND EQ GE GT LE LT MOD NE OR XOR NOT
55
+ )
56
+ end
57
+
58
+ def self.routines
59
+ @routines ||= Set.new %w(
60
+ A_CORRELATE ABS ACOS ADAPT_HIST_EQUAL ALOG ALOG10
61
+ AMOEBA ANNOTATE ARG_PRESENT ARRAY_EQUAL
62
+ ARRAY_INDICES ARROW ASCII_TEMPLATE ASIN ASSOC ATAN
63
+ AXIS BAR_PLOT BESELI BESELJ BESELK BESELY BETA
64
+ BILINEAR BIN_DATE BINARY_TEMPLATE BINDGEN BINOMIAL
65
+ BLAS_AXPY BLK_CON BOX_CURSOR BREAK BREAKPOINT
66
+ BROYDEN BYTARR BYTE BYTEORDER BYTSCL C_CORRELATE
67
+ CALDAT CALENDAR CALL_EXTERNAL CALL_FUNCTION
68
+ CALL_METHOD CALL_PROCEDURE CATCH CD CEIL CHEBYSHEV
69
+ CHECK_MATH CHISQR_CVF CHISQR_PDF CHOLDC CHOLSOL
70
+ CINDGEN CIR_3PNT CLOSE CLUST_WTS CLUSTER
71
+ COLOR_CONVERT COLOR_QUAN COLORMAP_APPLICABLE COMFIT
72
+ COMPLEX COMPLEXARR COMPLEXROUND
73
+ COMPUTE_MESH_NORMALS COND CONGRID CONJ
74
+ CONSTRAINED_MIN CONTOUR CONVERT_COORD CONVOL
75
+ COORD2TO3 CORRELATE COS COSH CRAMER CREATE_STRUCT
76
+ CREATE_VIEW CROSSP CRVLENGTH CT_LUMINANCE CTI_TEST
77
+ CURSOR CURVEFIT CV_COORD CVTTOBM CW_ANIMATE
78
+ CW_ANIMATE_GETP CW_ANIMATE_LOAD CW_ANIMATE_RUN
79
+ CW_ARCBALL CW_BGROUP CW_CLR_INDEX CW_COLORSEL
80
+ CW_DEFROI CW_FIELD CW_FILESEL CW_FORM CW_FSLIDER
81
+ CW_LIGHT_EDITOR CW_LIGHT_EDITOR_GET
82
+ CW_LIGHT_EDITOR_SET CW_ORIENT CW_PALETTE_EDITOR
83
+ CW_PALETTE_EDITOR_GET CW_PALETTE_EDITOR_SET
84
+ CW_PDMENU CW_RGBSLIDER CW_TMPL CW_ZOOM DBLARR
85
+ DCINDGEN DCOMPLEX DCOMPLEXARR DEFINE_KEY DEFROI
86
+ DEFSYSV DELETE_SYMBOL DELLOG DELVAR DERIV DERIVSIG
87
+ DETERM DEVICE DFPMIN DIALOG_MESSAGE
88
+ DIALOG_PICKFILE DIALOG_PRINTERSETUP
89
+ DIALOG_PRINTJOB DIALOG_READ_IMAGE
90
+ DIALOG_WRITE_IMAGE DICTIONARY DIGITAL_FILTER DILATE DINDGEN
91
+ DISSOLVE DIST DLM_LOAD DLM_REGISTER
92
+ DO_APPLE_SCRIPT DOC_LIBRARY DOUBLE DRAW_ROI EFONT
93
+ EIGENQL EIGENVEC ELMHES EMPTY ENABLE_SYSRTN EOF
94
+ ERASE ERODE ERRORF ERRPLOT EXECUTE EXIT EXP EXPAND
95
+ EXPAND_PATH EXPINT EXTRAC EXTRACT_SLICE F_CVF
96
+ F_PDF FACTORIAL FFT FILE_CHMOD FILE_DELETE
97
+ FILE_EXPAND_PATH FILE_MKDIR FILE_TEST FILE_WHICH
98
+ FILE_SEARCH PATH_SEP FILE_DIRNAME FILE_BASENAME
99
+ FILE_INFO FILE_MOVE FILE_COPY FILE_LINK FILE_POLL_INPUT
100
+ FILEPATH FINDFILE FINDGEN FINITE FIX FLICK FLOAT
101
+ FLOOR FLOW3 FLTARR FLUSH FORMAT_AXIS_VALUES
102
+ FORWARD_FUNCTION FREE_LUN FSTAT FULSTR FUNCT
103
+ FV_TEST FX_ROOT FZ_ROOTS GAMMA GAMMA_CT
104
+ GAUSS_CVF GAUSS_PDF GAUSS2DFIT GAUSSFIT GAUSSINT
105
+ GET_DRIVE_LIST GET_KBRD GET_LUN GET_SCREEN_SIZE
106
+ GET_SYMBOL GETENV GOTO GREG2JUL GRID_TPS GRID3 GS_ITER
107
+ H_EQ_CT H_EQ_INT HANNING HASH HEAP_GC HELP HILBERT
108
+ HIST_2D HIST_EQUAL HISTOGRAM HLS HOUGH HQR HSV
109
+ IBETA IDENTITY IDL_CONTAINER IDLANROI
110
+ IDLANROIGROUP IDLFFDICOM IDLFFDXF IDLFFLANGUAGECAT
111
+ IDLFFSHAPE IDLGRAXIS IDLGRBUFFER IDLGRCLIPBOARD
112
+ IDLGRCOLORBAR IDLGRCONTOUR IDLGRFONT IDLGRIMAGE
113
+ IDLGRLEGEND IDLGRLIGHT IDLGRMODEL IDLGRMPEG
114
+ IDLGRPALETTE IDLGRPATTERN IDLGRPLOT IDLGRPOLYGON
115
+ IDLGRPOLYLINE IDLGRPRINTER IDLGRROI IDLGRROIGROUP
116
+ IDLGRSCENE IDLGRSURFACE IDLGRSYMBOL
117
+ IDLGRTESSELLATOR IDLGRTEXT IDLGRVIEW
118
+ IDLGRVIEWGROUP IDLGRVOLUME IDLGRVRML IDLGRWINDOW
119
+ IGAMMA IMAGE_CONT IMAGE_STATISTICS IMAGINARY
120
+ INDGEN INT_2D INT_3D INT_TABULATED INTARR INTERPOL
121
+ INTERPOLATE INVERT IOCTL ISA ISHFT ISOCONTOUR
122
+ ISOSURFACE JOURNAL JUL2GREG JULDAY KEYWORD_SET KRIG2D
123
+ KURTOSIS KW_TEST L64INDGEN LABEL_DATE LABEL_REGION
124
+ LADFIT LAGUERRE LEEFILT LEGENDRE LINBCG LINDGEN
125
+ LINFIT LINKIMAGE LIST LIVE_CONTOUR LIVE_CONTROL
126
+ LIVE_DESTROY LIVE_EXPORT LIVE_IMAGE LIVE_INFO
127
+ LIVE_LINE LIVE_LOAD LIVE_OPLOT LIVE_PLOT
128
+ LIVE_PRINT LIVE_RECT LIVE_STYLE LIVE_SURFACE
129
+ LIVE_TEXT LJLCT LL_ARC_DISTANCE LMFIT LMGR LNGAMMA
130
+ LNP_TEST LOADCT LOCALE_GET LON64ARR LONARR LONG
131
+ LONG64 LSODE LU_COMPLEX LUDC LUMPROVE LUSOL
132
+ M_CORRELATE MACHAR MAKE_ARRAY MAKE_DLL MAP_2POINTS
133
+ MAP_CONTINENTS MAP_GRID MAP_IMAGE MAP_PATCH
134
+ MAP_PROJ_INFO MAP_SET MAX MATRIX_MULTIPLY MD_TEST MEAN
135
+ MEANABSDEV MEDIAN MEMORY MESH_CLIP MESH_DECIMATE
136
+ MESH_ISSOLID MESH_MERGE MESH_NUMTRIANGLES MESH_OBJ
137
+ MESH_SMOOTH MESH_SURFACEAREA MESH_VALIDATE
138
+ MESH_VOLUME MESSAGE MIN MIN_CURVE_SURF MK_HTML_HELP
139
+ MODIFYCT MOMENT MORPH_CLOSE MORPH_DISTANCE
140
+ MORPH_GRADIENT MORPH_HITORMISS MORPH_OPEN
141
+ MORPH_THIN MORPH_TOPHAT MPEG_CLOSE MPEG_OPEN
142
+ MPEG_PUT MPEG_SAVE MSG_CAT_CLOSE MSG_CAT_COMPILE
143
+ MSG_CAT_OPEN MULTI N_ELEMENTS N_PARAMS N_TAGS
144
+ NEWTON NORM OBJ_CLASS OBJ_DESTROY OBJ_ISA OBJ_NEW
145
+ OBJ_VALID OBJARR ON_ERROR ON_IOERROR ONLINE_HELP
146
+ OPEN OPENR OPENW OPENU OPLOT OPLOTERR ORDEREDHASH P_CORRELATE
147
+ PARTICLE_TRACE PCOMP PLOT PLOT_3DBOX PLOT_FIELD
148
+ PLOTERR PLOTS PNT_LINE POINT_LUN POLAR_CONTOUR
149
+ POLAR_SURFACE POLY POLY_2D POLY_AREA POLY_FIT
150
+ POLYFILL POLYFILLV POLYSHADE POLYWARP POPD POWELL
151
+ PRIMES PRINT PRINTF PRINTD PRODUCT PROFILE PROFILER
152
+ PROFILES PROJECT_VOL PS_SHOW_FONTS PSAFM PSEUDO
153
+ PTR_FREE PTR_NEW PTR_VALID PTRARR PUSHD QROMB
154
+ QROMO QSIMP QUERY_CSV R_CORRELATE R_TEST RADON RANDOMN
155
+ RANDOMU RANKS RDPIX READ READF READ_ASCII
156
+ READ_BINARY READ_BMP READ_CSV READ_DICOM READ_IMAGE
157
+ READ_INTERFILE READ_JPEG READ_PICT READ_PNG
158
+ READ_PPM READ_SPR READ_SRF READ_SYLK READ_TIFF
159
+ READ_WAV READ_WAVE READ_X11_BITMAP READ_XWD READS
160
+ READU REBIN RECALL_COMMANDS RECON3 REDUCE_COLORS
161
+ REFORM REGRESS REPLICATE REPLICATE_INPLACE
162
+ RESOLVE_ALL RESOLVE_ROUTINE RESTORE RETALL
163
+ REVERSE REWIND RK4 ROBERTS ROT ROTATE ROUND
164
+ ROUTINE_INFO RS_TEST S_TEST SAVE SAVGOL SCALE3
165
+ SCALE3D SCOPE_LEVEL SCOPE_TRACEBACK SCOPE_VARFETCH
166
+ SCOPE_VARNAME SEARCH2D SEARCH3D SET_PLOT SET_SHADING
167
+ SET_SYMBOL SETENV SETLOG SETUP_KEYS SFIT
168
+ SHADE_SURF SHADE_SURF_IRR SHADE_VOLUME SHIFT SHOW3
169
+ SHOWFONT SIGNUM SIN SINDGEN SINH SIZE SKEWNESS SKIPF
170
+ SLICER3 SLIDE_IMAGE SMOOTH SOBEL SOCKET SORT SPAWN
171
+ SPH_4PNT SPH_SCAT SPHER_HARM SPL_INIT SPL_INTERP
172
+ SPLINE SPLINE_P SPRSAB SPRSAX SPRSIN SPRSTP SQRT
173
+ STANDARDIZE STDDEV STOP STRARR STRCMP STRCOMPRESS
174
+ STREAMLINE STREGEX STRETCH STRING STRJOIN STRLEN
175
+ STRLOWCASE STRMATCH STRMESSAGE STRMID STRPOS
176
+ STRPUT STRSPLIT STRTRIM STRUCT_ASSIGN STRUCT_HIDE
177
+ STRUPCASE SURFACE SURFR SVDC SVDFIT SVSOL
178
+ SWAP_ENDIAN SWITCH SYSTIME T_CVF T_PDF T3D
179
+ TAG_NAMES TAN TANH TAPRD TAPWRT TEK_COLOR
180
+ TEMPORARY TETRA_CLIP TETRA_SURFACE TETRA_VOLUME
181
+ THIN THREED TIME_TEST2 TIMEGEN TM_TEST TOTAL TRACE
182
+ TRANSPOSE TRI_SURF TRIANGULATE TRIGRID TRIQL
183
+ TRIRED TRISOL TRNLOG TS_COEF TS_DIFF TS_FCAST
184
+ TS_SMOOTH TV TVCRS TVLCT TVRD TVSCL TYPENAME UINDGEN UINT
185
+ UINTARR UL64INDGEN ULINDGEN ULON64ARR ULONARR
186
+ ULONG ULONG64 UNIQ USERSYM VALUE_LOCATE VARIANCE
187
+ VAX_FLOAT VECTOR_FIELD VEL VELOVECT VERT_T3D VOIGT
188
+ VORONOI VOXEL_PROJ WAIT WARP_TRI WATERSHED WDELETE
189
+ WEOF WF_DRAW WHERE WIDGET_BASE WIDGET_BUTTON
190
+ WIDGET_CONTROL WIDGET_DRAW WIDGET_DROPLIST
191
+ WIDGET_EVENT WIDGET_INFO WIDGET_LABEL WIDGET_LIST
192
+ WIDGET_SLIDER WIDGET_TABLE WIDGET_TEXT WINDOW
193
+ WRITE_BMP WRITE_CSV WRITE_IMAGE WRITE_JPEG WRITE_NRIF
194
+ WRITE_PICT WRITE_PNG WRITE_PPM WRITE_SPR WRITE_SRF
195
+ WRITE_SYLK WRITE_TIFF WRITE_WAV WRITE_WAVE WRITEU
196
+ WSET WSHOW WTN WV_APPLET WV_CW_WAVELET WV_CWT
197
+ WV_DENOISE WV_DWT WV_FN_COIFLET WV_FN_DAUBECHIES
198
+ WV_FN_GAUSSIAN WV_FN_HAAR WV_FN_MORLET WV_FN_PAUL
199
+ WV_FN_SYMLET WV_IMPORT_DATA WV_IMPORT_WAVELET
200
+ WV_PLOT3D_WPS WV_PLOT_MULTIRES WV_PWT
201
+ WV_TOOL_DENOISE XBM_EDIT XDISPLAYFILE XDXF XFONT
202
+ XINTERANIMATE XLOADCT XMANAGER XMNG_TMPL XMTOOL
203
+ XOBJVIEW XPALETTE XPCOLOR XPLOT3D XREGISTERED XROI
204
+ XSQ_TEST XSURFACE XVAREDIT XVOLUME XVOLUME_ROTATE
205
+ XVOLUME_WRITE_IMAGE XYOUTS ZOOM ZOOM_24
206
+ )
207
+ end
208
+
209
+ state :root do
210
+ rule /[\s\n]+/, Text::Whitespace
211
+ # Normal comments
212
+ rule /;.*$/, Comment::Single
213
+ rule /\,\s*\,/, Error
214
+ rule /\!#{name}/, Name::Variable::Global
215
+
216
+ rule /[(),:\&\$]/, Punctuation
217
+
218
+ ## Format statements are quite a strange beast.
219
+ ## Better process them in their own state.
220
+ #rule /\b(FORMAT)(\s*)(\()/mi do |m|
221
+ # token Keyword, m[1]
222
+ # token Text::Whitespace, m[2]
223
+ # token Punctuation, m[3]
224
+ # push :format_spec
225
+ #end
226
+
227
+ rule %r(
228
+ [+-]? # sign
229
+ (
230
+ (\d+[.]\d*|[.]\d+)(#{exponent})?
231
+ | \d+#{exponent} # exponent is mandatory
232
+ )
233
+ (_#{kind_param})? # kind parameter
234
+ )xi, Num::Float
235
+
236
+ rule /\d+(B|S|U|US|LL|L|ULL|UL)?/i, Num::Integer
237
+ rule /"[0-7]+(B|O|U|ULL|UL|LL|L)?/i, Num::Oct
238
+ rule /'[0-9A-F]+'X(B|S|US|ULL|UL|U|LL|L)?/i, Num::Hex
239
+ rule /(#{kind_param}_)?'/, Str::Single, :string_single
240
+ rule /(#{kind_param}_)?"/, Str::Double, :string_double
241
+
242
+ rule %r{\#\#|\#|\&\&|\|\||/=|<=|>=|->|\@|\?|[-+*/<=~^{}]}, Operator
243
+ # Structures and the like
244
+ rule /(#{name})(\.)([^\s,]*)/i do |m|
245
+ groups Name, Operator, Name
246
+ #delegate IDLang, m[3]
247
+ end
248
+
249
+ rule /(function|pro)((?:\s|\$\s)+)/i do
250
+ groups Keyword, Text::Whitespace
251
+ push :funcname
252
+ end
253
+
254
+ rule /#{name}/m do |m|
255
+ match = m[0].upcase
256
+ if self.class.keywords.include? match
257
+ token Keyword
258
+ elsif self.class.conditionals.include? match
259
+ token Keyword
260
+ elsif self.class.decorators.include? match
261
+ token Name::Decorator
262
+ elsif self.class.standalone_statements.include? match
263
+ token Keyword::Reserved
264
+ elsif self.class.operators.include? match
265
+ token Operator::Word
266
+ elsif self.class.routines.include? match
267
+ token Name::Builtin
268
+ else
269
+ token Name
270
+ end
271
+ end
272
+
273
+ end
274
+
275
+ state :funcname do
276
+ rule /#{name}/, Name::Function
277
+
278
+ rule /\s+/, Text::Whitespace
279
+ rule /(:+|\$)/, Operator
280
+ rule /;.*/, Comment::Single
281
+
282
+ # Be done with this state if we hit EOL or comma
283
+ rule /$/, Text::Whitespace, :pop!
284
+ rule /,/, Operator, :pop!
285
+ end
286
+
287
+ state :string_single do
288
+ rule /[^']+/, Str::Single
289
+ rule /''/, Str::Escape
290
+ rule /'/, Str::Single, :pop!
291
+ end
292
+
293
+ state :string_double do
294
+ rule /[^"]+/, Str::Double
295
+ rule /"/, Str::Double, :pop!
296
+ end
297
+
298
+ state :format_spec do
299
+ rule /'/, Str::Single, :string_single
300
+ rule /"/, Str::Double, :string_double
301
+ rule /\(/, Punctuation, :format_spec
302
+ rule /\)/, Punctuation, :pop!
303
+ rule /,/, Punctuation
304
+ rule /[\s\n]+/, Text::Whitespace
305
+ # Edit descriptors could be seen as a kind of "format literal".
306
+ rule /[^\s'"(),]+/, Literal
307
+ end
308
+ end
309
+ end
310
+ end
@@ -0,0 +1,408 @@
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
+ try catch endtry
23
+ abortonrte
24
+ )
25
+ end
26
+
27
+ def self.preprocessor
28
+ @preprocessor ||= Set.new %w(
29
+ pragma include
30
+ define ifdef ifndef undef
31
+ if elif else endif
32
+ )
33
+ end
34
+
35
+ def self.igorDeclarations
36
+ @igorDeclarations ||= Set.new %w(
37
+ variable string wave strconstant constant
38
+ nvar svar dfref funcref struct
39
+ char uchar int16 uint16 int32 uint32 int64 uint64 float double
40
+ )
41
+ end
42
+
43
+ def self.igorConstants
44
+ @igorConstants ||= Set.new %w(
45
+ nan inf
46
+ )
47
+ end
48
+
49
+ def self.igorFunction
50
+ @igorFunction ||= Set.new %w(
51
+ axontelegraphsettimeoutms axontelegraphgettimeoutms
52
+ axontelegraphgetdatanum axontelegraphagetdatanum
53
+ axontelegraphgetdatastring axontelegraphagetdatastring
54
+ axontelegraphgetdatastruct axontelegraphagetdatastruct hdf5datasetinfo
55
+ hdf5attributeinfo hdf5typeinfo hdf5libraryinfo
56
+ mpfxgausspeak mpfxlorenzianpeak mpfxvoigtpeak mpfxemgpeak mpfxexpconvexppeak
57
+ abs acos acosh airya airyad airyb airybd
58
+ alog area areaxy asin asinh atan atan2 atanh axisvalfrompixel besseli
59
+ besselj besselk bessely beta betai binarysearch binarysearchinterp
60
+ binomial binomialln binomialnoise cabs capturehistorystart ceil cequal
61
+ char2num chebyshev chebyshevu checkname cmplx cmpstr conj contourz cos
62
+ cosh cosintegral cot coth countobjects countobjectsdfr cpowi
63
+ creationdate csc csch datafolderexists datafolderrefsequal
64
+ datafolderrefstatus date2secs datetime datetojulian dawson defined
65
+ deltax digamma dilogarithm dimdelta dimoffset dimsize ei enoise
66
+ equalwaves erf erfc erfcw exists exp expint expintegrale1 expnoise
67
+ factorial fakedata faverage faveragexy finddimlabel findlistitem floor
68
+ fontsizeheight fontsizestringwidth fresnelcos fresnelsin gamma
69
+ gammaeuler gammainc gammanoise gammln gammp gammq gauss gauss1d gauss2d
70
+ gcd getbrowserline getdefaultfontsize getdefaultfontstyle getkeystate
71
+ getrterror getrtlocation gizmoinfo gizmoscale gnoise grepstring hcsr
72
+ hermite hermitegauss hyperg0f1 hyperg1f1 hyperg2f1 hypergnoise hypergpfq
73
+ igorversion imag indextoscale integrate1d interp interp2d interp3d
74
+ inverseerf inverseerfc itemsinlist jacobicn jacobisn laguerre laguerrea
75
+ laguerregauss lambertw leftx legendrea limit ln log lognormalnoise
76
+ lorentziannoise magsqr mandelbrotpoint marcumq matrixcondition matrixdet
77
+ matrixdot matrixrank matrixtrace max mean median min mod moddate
78
+ norm numberbykey numpnts numtype numvarordefault nvar_exists p2rect
79
+ panelresolution paramisdefault pcsr pi pixelfromaxisval pnt2x
80
+ poissonnoise poly poly2d polygonarea qcsr r2polar real rightx round
81
+ sawtooth scaletoindex screenresolution sec sech selectnumber
82
+ setenvironmentvariable sign sin sinc sinh sinintegral sphericalbessj
83
+ sphericalbessjd sphericalbessy sphericalbessyd sphericalharmonics sqrt
84
+ startmstimer statsbetacdf statsbetapdf statsbinomialcdf statsbinomialpdf
85
+ statscauchycdf statscauchypdf statschicdf statschipdf statscmssdcdf
86
+ statscorrelation statsdexpcdf statsdexppdf statserlangcdf statserlangpdf
87
+ statserrorpdf statsevaluecdf statsevaluepdf statsexpcdf statsexppdf
88
+ statsfcdf statsfpdf statsfriedmancdf statsgammacdf statsgammapdf
89
+ statsgeometriccdf statsgeometricpdf statsgevcdf statsgevpdf
90
+ statshypergcdf statshypergpdf statsinvbetacdf statsinvbinomialcdf
91
+ statsinvcauchycdf statsinvchicdf statsinvcmssdcdf statsinvdexpcdf
92
+ statsinvevaluecdf statsinvexpcdf statsinvfcdf statsinvfriedmancdf
93
+ statsinvgammacdf statsinvgeometriccdf statsinvkuipercdf
94
+ statsinvlogisticcdf statsinvlognormalcdf statsinvmaxwellcdf
95
+ statsinvmoorecdf statsinvnbinomialcdf statsinvncchicdf statsinvncfcdf
96
+ statsinvnormalcdf statsinvparetocdf statsinvpoissoncdf statsinvpowercdf
97
+ statsinvqcdf statsinvqpcdf statsinvrayleighcdf statsinvrectangularcdf
98
+ statsinvspearmancdf statsinvstudentcdf statsinvtopdowncdf
99
+ statsinvtriangularcdf statsinvusquaredcdf statsinvvonmisescdf
100
+ statsinvweibullcdf statskuipercdf statslogisticcdf statslogisticpdf
101
+ statslognormalcdf statslognormalpdf statsmaxwellcdf statsmaxwellpdf
102
+ statsmedian statsmoorecdf statsnbinomialcdf statsnbinomialpdf
103
+ statsncchicdf statsncchipdf statsncfcdf statsncfpdf statsnctcdf
104
+ statsnctpdf statsnormalcdf statsnormalpdf statsparetocdf statsparetopdf
105
+ statspermute statspoissoncdf statspoissonpdf statspowercdf
106
+ statspowernoise statspowerpdf statsqcdf statsqpcdf statsrayleighcdf
107
+ statsrayleighpdf statsrectangularcdf statsrectangularpdf statsrunscdf
108
+ statsspearmanrhocdf statsstudentcdf statsstudentpdf statstopdowncdf
109
+ statstriangularcdf statstriangularpdf statstrimmedmean statsusquaredcdf
110
+ statsvonmisescdf statsvonmisesnoise statsvonmisespdf statswaldcdf
111
+ statswaldpdf statsweibullcdf statsweibullpdf stopmstimer str2num
112
+ stringcrc stringmatch strlen strsearch studenta studentt sum svar_exists
113
+ tagval tan tanh textencodingcode threadgroupcreate threadgrouprelease
114
+ threadgroupwait threadprocessorcount threadreturnvalue ticks trunc
115
+ unsetenvironmentvariable variance vcsr voigtfunc wavecrc wavedims
116
+ waveexists wavemax wavemin waverefsequal wavetextencoding wavetype
117
+ whichlistitem wintype wnoise x2pnt xcsr zcsr zerniker zeta addlistitem
118
+ annotationinfo annotationlist axisinfo axislist base64_decode
119
+ base64_encode capturehistory childwindowlist cleanupname contourinfo
120
+ contournamelist controlnamelist converttextencoding csrinfo csrwave
121
+ csrxwave ctablist datafolderdir date fetchurl fontlist funcrefinfo
122
+ functioninfo functionlist functionpath getbrowserselection getdatafolder
123
+ getdefaultfont getdimlabel getenvironmentvariable geterrmessage
124
+ getformula getindependentmodulename getindexedobjname
125
+ getindexedobjnamedfr getrterrmessage getrtlocinfo getrtstackinfo
126
+ getscraptext getuserdata getwavesdatafolder greplist guideinfo
127
+ guidenamelist hash igorinfo imageinfo imagenamelist
128
+ independentmodulelist indexeddir indexedfile juliantodate layoutinfo
129
+ listmatch lowerstr macrolist nameofwave normalizeunicode note num2char
130
+ num2istr num2str operationlist padstring parsefilepath pathlist pictinfo
131
+ pictlist possiblyquotename proceduretext removebykey removeending
132
+ removefromlist removelistitem replacenumberbykey replacestring
133
+ replacestringbykey secs2date secs2time selectstring sortlist
134
+ specialcharacterinfo specialcharacterlist specialdirpath stringbykey
135
+ stringfromlist stringlist strvarordefault tableinfo textencodingname
136
+ textfile threadgroupgetdf time tracefrompixel traceinfo tracenamelist
137
+ trimstring uniquename unpadstring upperstr urldecode urlencode
138
+ variablelist waveinfo wavelist wavename waverefwavetolist waveunits
139
+ winlist winname winrecreation wmfindwholeword xwavename
140
+ contournametowaveref csrwaveref csrxwaveref imagenametowaveref
141
+ listtotextwave listtowaverefwave newfreewave tagwaveref
142
+ tracenametowaveref waverefindexed waverefindexeddfr xwavereffromtrace
143
+ getdatafolderdfr getwavesdatafolderdfr newfreedatafolder
144
+ )
145
+ end
146
+
147
+ def self.igorOperation
148
+ @igorOperation ||= Set.new %w(
149
+ abort addfifodata addfifovectdata addmovieaudio addmovieframe adoptfiles
150
+ apmath append appendimage appendlayoutobject appendmatrixcontour
151
+ appendtext appendtogizmo appendtograph appendtolayout appendtotable
152
+ appendxyzcontour autopositionwindow backgroundinfo beep boundingball
153
+ browseurl buildmenu button cd chart checkbox checkdisplayed choosecolor
154
+ close closehelp closemovie closeproc colorscale colortab2wave
155
+ concatenate controlbar controlinfo controlupdate
156
+ convertglobalstringtextencoding convexhull convolve copyfile copyfolder
157
+ copyscales correlate createaliasshortcut createbrowser cross
158
+ ctrlbackground ctrlfifo ctrlnamedbackground cursor curvefit
159
+ customcontrol cwt debugger debuggeroptions defaultfont
160
+ defaultguicontrols defaultguifont defaulttextencoding defineguide
161
+ delayupdate deleteannotations deletefile deletefolder deletepoints
162
+ differentiate dir display displayhelptopic displayprocedure doalert
163
+ doigormenu doupdate dowindow doxopidle dpss drawaction drawarc
164
+ drawbezier drawline drawoval drawpict drawpoly drawrect drawrrect
165
+ drawtext drawusershape dspdetrend dspperiodogram duplicate
166
+ duplicatedatafolder dwt edgestats edit errorbars execute
167
+ executescripttext experimentmodified exportgizmo extract
168
+ fastgausstransform fastop fbinread fbinwrite fft fgetpos fifo2wave
169
+ fifostatus filterfir filteriir findcontour findduplicates findlevel
170
+ findlevels findpeak findpointsinpoly findroots findsequence findvalue
171
+ fpclustering fprintf freadline fsetpos fstatus ftpcreatedirectory
172
+ ftpdelete ftpdownload ftpupload funcfit funcfitmd gbloadwave getaxis
173
+ getcamera getfilefolderinfo getgizmo getlastusermenuinfo getmarquee
174
+ getmouse getselection getwindow graphnormal graphwavedraw graphwaveedit
175
+ grep groupbox hanning hideigormenus hideinfo hideprocedures hidetools
176
+ hilberttransform histogram ica ifft imageanalyzeparticles imageblend
177
+ imageboundarytomask imageedgedetection imagefileinfo imagefilter
178
+ imagefocus imagefromxyz imagegenerateroimask imageglcm
179
+ imagehistmodification imagehistogram imageinterpolate imagelineprofile
180
+ imageload imagemorphology imageregistration imageremovebackground
181
+ imagerestore imagerotate imagesave imageseedfill imageskeleton3d
182
+ imagesnake imagestats imagethreshold imagetransform imageunwrapphase
183
+ imagewindow indexsort insertpoints integrate integrate2d integrateode
184
+ interp3dpath interpolate2 interpolate3d jcamploadwave jointhistogram
185
+ killbackground killcontrol killdatafolder killfifo killfreeaxis killpath
186
+ killpicts killstrings killvariables killwaves killwindow kmeans label
187
+ layout layoutpageaction layoutslideshow legend
188
+ linearfeedbackshiftregister listbox loaddata loadpackagepreferences
189
+ loadpict loadwave loess lombperiodogram make makeindex markperftesttime
190
+ matrixconvolve matrixcorr matrixeigenv matrixfilter matrixgaussj
191
+ matrixglm matrixinverse matrixlinearsolve matrixlinearsolvetd matrixlls
192
+ matrixlubksub matrixlud matrixludtd matrixmultiply matrixop matrixschur
193
+ matrixsolve matrixsvbksub matrixsvd matrixtranspose measurestyledtext
194
+ mlloadwave modify modifybrowser modifycamera modifycontour modifycontrol
195
+ modifycontrollist modifyfreeaxis modifygizmo modifygraph modifyimage
196
+ modifylayout modifypanel modifytable modifywaterfall movedatafolder
197
+ movefile movefolder movestring movesubwindow movevariable movewave
198
+ movewindow multitaperpsd multithreadingcontrol neuralnetworkrun
199
+ neuralnetworktrain newcamera newdatafolder newfifo newfifochan
200
+ newfreeaxis newgizmo newimage newlayout newmovie newnotebook newpanel
201
+ newpath newwaterfall note notebook notebookaction open openhelp
202
+ opennotebook optimize parseoperationtemplate pathinfo pauseforuser
203
+ pauseupdate pca playmovie playmovieaction playsound popupcontextualmenu
204
+ popupmenu preferences primefactors print printf printgraphs printlayout
205
+ printnotebook printsettings printtable project pulsestats putscraptext
206
+ pwd quit ratiofromnumber redimension remove removecontour
207
+ removefromgizmo removefromgraph removefromlayout removefromtable
208
+ removeimage removelayoutobjects removepath rename renamedatafolder
209
+ renamepath renamepict renamewindow reorderimages reordertraces
210
+ replacetext replacewave resample resumeupdate reverse rotate save
211
+ savedata saveexperiment savegraphcopy savenotebook
212
+ savepackagepreferences savepict savetablecopy setactivesubwindow setaxis
213
+ setbackground setdashpattern setdatafolder setdimlabel setdrawenv
214
+ setdrawlayer setfilefolderinfo setformula setigorhook setigormenumode
215
+ setigoroption setmarquee setprocesssleep setrandomseed setscale
216
+ setvariable setwavelock setwavetextencoding setwindow showigormenus
217
+ showinfo showtools silent sleep slider smooth smoothcustom sort
218
+ sortcolumns soundinrecord soundinset soundinstartchart soundinstatus
219
+ soundinstopchart soundloadwave soundsavewave sphericalinterpolate
220
+ sphericaltriangulate splitstring splitwave sprintf sscanf stack
221
+ stackwindows statsangulardistancetest statsanova1test statsanova2nrtest
222
+ statsanova2rmtest statsanova2test statschitest
223
+ statscircularcorrelationtest statscircularmeans statscircularmoments
224
+ statscirculartwosampletest statscochrantest statscontingencytable
225
+ statsdiptest statsdunnetttest statsfriedmantest statsftest
226
+ statshodgesajnetest statsjbtest statskde statskendalltautest statskstest
227
+ statskwtest statslinearcorrelationtest statslinearregression
228
+ statsmulticorrelationtest statsnpmctest statsnpnominalsrtest
229
+ statsquantiles statsrankcorrelationtest statsresample statssample
230
+ statsscheffetest statsshapirowilktest statssigntest statssrtest
231
+ statsttest statstukeytest statsvariancestest statswatsonusquaredtest
232
+ statswatsonwilliamstest statswheelerwatsontest statswilcoxonranktest
233
+ statswrcorrelationtest structget structput sumdimension sumseries
234
+ tabcontrol tag textbox threadgroupputdf threadstart tile tilewindows
235
+ titlebox tocommandline toolsgrid triangulate3d unwrap urlrequest
236
+ valdisplay waveclear wavemeanstdv wavestats wavetransform wfprintf
237
+ )
238
+ end
239
+
240
+ def self.hdf5Operation
241
+ @hdf5Operation ||= Set.new %w(
242
+ hdf5createfile hdf5openfile hdf5closefile hdf5creategroup hdf5opengroup
243
+ hdf5listgroup hdf5closegroup hdf5listattributes hdf5attributeinfo hdf5datasetinfo
244
+ hdf5loaddata hdf5loadimage hdf5loadgroup hdf5savedata hdf5saveimage hdf5savegroup
245
+ hdf5typeinfo hdf5createlink hdf5unlinkobject hdf5libraryinfo
246
+ hdf5dumpstate hdf5dump hdf5dumperrors
247
+ )
248
+ end
249
+
250
+ def self.object_name
251
+ /\b[a-z][a-z0-9_\.]*?\b/i
252
+ end
253
+
254
+ object = self.object_name
255
+ noLineBreak = /(?:[ \t]|(?:\\\s*[\r\n]))+/
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 /#{object}/ do |m|
266
+ if m[0].downcase =~ /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 =~ /\b(v|s|w)_[a-z]+[a-z0-9]*/
285
+ token Name::Constant
286
+ else
287
+ token Name
288
+ end
289
+ end
290
+
291
+ mixin :preprocessor
292
+ mixin :waveFlag
293
+
294
+ mixin :characters
295
+ mixin :numbers
296
+ mixin :whitespace
297
+ end
298
+
299
+ state :preprocessor do
300
+ rule %r((\#)(#{object})) do |m|
301
+ if self.class.preprocessor.include? m[2].downcase
302
+ token Comment::Preproc
303
+ else
304
+ token Punctuation, m[1] #i.e. ModuleFunctions
305
+ token Name, m[2]
306
+ end
307
+
308
+
309
+ end
310
+ end
311
+
312
+ state :assignment do
313
+ mixin :whitespace
314
+ rule /\"/, Literal::String::Double, :string1 #punctuation for string
315
+ mixin :string2
316
+ rule /#{number_float}/, Literal::Number::Float, :pop!
317
+ rule /#{number_int}/, Literal::Number::Integer, :pop!
318
+ rule /[\(\[\{][^\)\]\}]+[\)\]\}]/, Generic, :pop!
319
+ rule /[^\s\/\(]+/, Generic, :pop!
320
+ rule(//) { pop! }
321
+ end
322
+
323
+ state :parse_variables do
324
+ mixin :whitespace
325
+ rule /[=]/, Punctuation, :assignment
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 %r([/][a-z]+)i, Keyword::Pseudo, :parse_variables
331
+ rule(//) { pop! }
332
+ end
333
+
334
+ state :parse_function do
335
+ rule %r([/][a-z]+)i, Keyword::Pseudo # only one flag
336
+ mixin :whitespace
337
+ rule object, Name::Function
338
+ rule /[\(]/, Punctuation, :parse_variables
339
+ rule(//) { pop! }
340
+ end
341
+
342
+ state :operationFlags do
343
+ rule /#{noLineBreak}/, Text
344
+ rule /[=]/, Punctuation, :assignment
345
+ rule %r([/][a-z]+)i, Keyword::Pseudo, :operationFlags
346
+ rule /(as)(\s*)(#{object})/i do
347
+ groups Keyword::Type, Text, Name::Label
348
+ end
349
+ rule(//) { pop! }
350
+ end
351
+
352
+ # inline variable assignments (i.e. for Make) with strict syntax
353
+ state :waveFlag do
354
+ rule %r(
355
+ (/(?:wave|X|Y))
356
+ (\s*)(=)(\s*)
357
+ (#{object})
358
+ )ix do |m|
359
+ token Keyword::Pseudo, m[1]
360
+ token Text, m[2]
361
+ token Punctuation, m[3]
362
+ token Text, m[4]
363
+ token Name::Variable, m[5]
364
+ end
365
+ end
366
+
367
+ state :characters do
368
+ rule /\s/, Text
369
+ rule /#{operator}/, Operator
370
+ rule /#{punctuation}/, Punctuation
371
+ rule /\"/, Literal::String::Double, :string1 #punctuation for string
372
+ mixin :string2
373
+ end
374
+
375
+ state :numbers do
376
+ rule /#{number_float}/, Literal::Number::Float
377
+ rule /#{number_hex}/, Literal::Number::Hex
378
+ rule /#{number_int}/, Literal::Number::Integer
379
+ end
380
+
381
+ state :whitespace do
382
+ rule /#{noLineBreak}/, Text
383
+ end
384
+
385
+ state :string1 do
386
+ rule /%\w\b/, Literal::String::Other
387
+ rule /\\\\/, Literal::String::Escape
388
+ rule /\\\"/, Literal::String::Escape
389
+ rule /\\/, Literal::String::Escape
390
+ rule /[^"]/, Literal::String
391
+ rule /\"/, Literal::String::Double, :pop! #punctuation for string
392
+ end
393
+
394
+ state :string2 do
395
+ rule /\'[^']*\'/, Literal::String::Single
396
+ end
397
+
398
+ state :comments do
399
+ rule %r{([/]\s*)([@]\w+\b)}i do
400
+ # doxygen comments
401
+ groups Comment, Comment::Special
402
+ end
403
+ rule /[^\r\n]/, Comment
404
+ rule(//) { pop! }
405
+ end
406
+ end
407
+ end
408
+ end