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,273 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class CSS < RegexLexer
6
+ title "CSS"
7
+ desc "Cascading Style Sheets, used to style web pages"
8
+
9
+ tag 'css'
10
+ filenames '*.css'
11
+ mimetypes 'text/css'
12
+
13
+ identifier = /[a-zA-Z0-9_-]+/
14
+ number = /-?(?:[0-9]+(\.[0-9]+)?|\.[0-9]+)/
15
+
16
+ def self.attributes
17
+ @attributes ||= Set.new %w(
18
+ align-content align-items align-self alignment-adjust
19
+ alignment-baseline all anchor-point animation
20
+ animation-delay animation-direction animation-duration
21
+ animation-fill-mode animation-iteration-count animation-name
22
+ animation-play-state animation-timing-function appearance
23
+ azimuth backface-visibility background background-attachment
24
+ background-clip background-color background-image
25
+ background-origin background-position background-repeat
26
+ background-size baseline-shift binding bleed bookmark-label
27
+ bookmark-level bookmark-state bookmark-target border
28
+ border-bottom border-bottom-color border-bottom-left-radius
29
+ border-bottom-right-radius border-bottom-style
30
+ border-bottom-width border-collapse border-color
31
+ border-image border-image-outset border-image-repeat
32
+ border-image-slice border-image-source border-image-width
33
+ border-left border-left-color border-left-style
34
+ border-left-width border-radius border-right
35
+ border-right-color border-right-style border-right-width
36
+ border-spacing border-style border-top border-top-color
37
+ border-top-left-radius border-top-right-radius
38
+ border-top-style border-top-width border-width bottom
39
+ box-align box-decoration-break box-direction box-flex
40
+ box-flex-group box-lines box-ordinal-group box-orient
41
+ box-pack box-shadow box-sizing break-after break-before
42
+ break-inside caption-side clear clip clip-path
43
+ clip-rule color color-profile columns column-count
44
+ column-fill column-gap column-rule column-rule-color
45
+ column-rule-style column-rule-width column-span
46
+ column-width content counter-increment counter-reset
47
+ crop cue cue-after cue-before cursor direction display
48
+ dominant-baseline drop-initial-after-adjust
49
+ drop-initial-after-align drop-initial-before-adjust
50
+ drop-initial-before-align drop-initial-size
51
+ drop-initial-value elevation empty-cells filter fit
52
+ fit-position flex flex-basis flex-direction flex-flow
53
+ flex-grow flex-shrink flex-wrap float float-offset
54
+ font font-family font-feature-settings
55
+ font-kerning font-language-override font-size
56
+ font-size-adjust font-stretch font-style font-synthesis
57
+ font-variant font-variant-alternates font-variant-caps
58
+ font-variant-east-asian font-variant-ligatures
59
+ font-variant-numeric font-variant-position font-weight
60
+ grid-cell grid-column grid-column-align grid-column-sizing
61
+ grid-column-span grid-columns grid-flow grid-row
62
+ grid-row-align grid-row-sizing grid-row-span
63
+ grid-rows grid-template hanging-punctuation height
64
+ hyphenate-after hyphenate-before hyphenate-character
65
+ hyphenate-lines hyphenate-resource hyphens icon
66
+ image-orientation image-rendering image-resolution
67
+ ime-mode inline-box-align justify-content
68
+ left letter-spacing line-break line-height
69
+ line-stacking line-stacking-ruby line-stacking-shift
70
+ line-stacking-strategy list-style list-style-image
71
+ list-style-position list-style-type margin
72
+ margin-bottom margin-left margin-right margin-top
73
+ mark marker-offset marks mark-after mark-before
74
+ marquee-direction marquee-loop marquee-play-count
75
+ marquee-speed marquee-style mask max-height max-width
76
+ min-height min-width move-to nav-down
77
+ nav-index nav-left nav-right nav-up object-fit
78
+ object-position opacity order orphans outline
79
+ outline-color outline-offset outline-style
80
+ outline-width overflow overflow-style overflow-wrap
81
+ overflow-x overflow-y padding padding-bottom
82
+ padding-left padding-right padding-top
83
+ page page-break-after page-break-before
84
+ page-break-inside page-policy pause pause-after
85
+ pause-before perspective perspective-origin
86
+ phonemes pitch pitch-range play-during pointer-events
87
+ position presentation-level punctuation-trim quotes
88
+ rendering-intent resize rest rest-after rest-before
89
+ richness right rotation rotation-point ruby-align
90
+ ruby-overhang ruby-position ruby-span size speak
91
+ speak-as speak-header speak-numeral speak-punctuation
92
+ speech-rate src stress string-set
93
+ tab-size table-layout target target-name
94
+ target-new target-position text-align
95
+ text-align-last text-combine-horizontal
96
+ text-decoration text-decoration-color
97
+ text-decoration-line text-decoration-skip
98
+ text-decoration-style text-emphasis
99
+ text-emphasis-color text-emphasis-position
100
+ text-emphasis-style text-height text-indent
101
+ text-justify text-orientation text-outline
102
+ text-overflow text-rendering text-shadow
103
+ text-space-collapse text-transform
104
+ text-underline-position text-wrap top
105
+ transform transform-origin transform-style
106
+ transition transition-delay transition-duration
107
+ transition-property transition-timing-function
108
+ unicode-bidi vertical-align
109
+ visibility voice-balance voice-duration
110
+ voice-family voice-pitch voice-pitch-range
111
+ voice-range voice-rate voice-stress voice-volume
112
+ volume white-space widows width word-break
113
+ word-spacing word-wrap writing-mode z-index
114
+ )
115
+ end
116
+
117
+ def self.builtins
118
+ @builtins ||= Set.new %w(
119
+ above absolute always armenian aural auto avoid left bottom
120
+ baseline behind below bidi-override blink block bold bolder
121
+ both bottom capitalize center center-left center-right circle
122
+ cjk-ideographic close-quote collapse condensed continuous crop
123
+ cross crosshair cursive dashed decimal decimal-leading-zero
124
+ default digits disc dotted double e-resize embed expanded
125
+ extra-condensed extra-expanded fantasy far-left far-right fast
126
+ faster fixed georgian groove hebrew help hidden hide high higher
127
+ hiragana hiragana-iroha icon inherit inline inline-table inset
128
+ inside invert italic justify katakana katakana-iroha landscape
129
+ large larger left left-side leftwards level lighter line-through
130
+ list-item loud low lower lower-alpha lower-greek lower-roman
131
+ lowercase ltr medium message-box middle mix monospace n-resize
132
+ narrower ne-resize no-close-quote no-open-quote no-repeat none
133
+ normal nowrap nw-resize oblique once open-quote outset outside
134
+ overline pointer portrait px relative repeat repeat-x repeat-y
135
+ rgb ridge right right-side rightwards s-resize sans-serif scroll
136
+ se-resize semi-condensed semi-expanded separate serif show
137
+ silent slow slower small-caps small-caption smaller soft solid
138
+ spell-out square static status-bar super sw-resize table-caption
139
+ table-cell table-column table-column-group table-footer-group
140
+ table-header-group table-row table-row-group text text-bottom
141
+ text-top thick thin top transparent ultra-condensed
142
+ ultra-expanded underline upper-alpha upper-latin upper-roman
143
+ uppercase url visible w-resize wait wider x-fast x-high x-large
144
+ x-loud x-low x-small x-soft xx-large xx-small yes
145
+ )
146
+ end
147
+
148
+ def self.constants
149
+ @constants ||= Set.new %w(
150
+ indigo gold firebrick indianred yellow darkolivegreen
151
+ darkseagreen mediumvioletred mediumorchid chartreuse
152
+ mediumslateblue black springgreen crimson lightsalmon brown
153
+ turquoise olivedrab cyan silver skyblue gray darkturquoise
154
+ goldenrod darkgreen darkviolet darkgray lightpink teal
155
+ darkmagenta lightgoldenrodyellow lavender yellowgreen thistle
156
+ violet navy orchid blue ghostwhite honeydew cornflowerblue
157
+ darkblue darkkhaki mediumpurple cornsilk red bisque slategray
158
+ darkcyan khaki wheat deepskyblue darkred steelblue aliceblue
159
+ gainsboro mediumturquoise floralwhite coral purple lightgrey
160
+ lightcyan darksalmon beige azure lightsteelblue oldlace
161
+ greenyellow royalblue lightseagreen mistyrose sienna lightcoral
162
+ orangered navajowhite lime palegreen burlywood seashell
163
+ mediumspringgreen fuchsia papayawhip blanchedalmond peru
164
+ aquamarine white darkslategray ivory dodgerblue lemonchiffon
165
+ chocolate orange forestgreen slateblue olive mintcream
166
+ antiquewhite darkorange cadetblue moccasin limegreen saddlebrown
167
+ darkslateblue lightskyblue deeppink plum aqua darkgoldenrod
168
+ maroon sandybrown magenta tan rosybrown pink lightblue
169
+ palevioletred mediumseagreen dimgray powderblue seagreen snow
170
+ mediumblue midnightblue paleturquoise palegoldenrod whitesmoke
171
+ darkorchid salmon lightslategray lawngreen lightgreen tomato
172
+ hotpink lightyellow lavenderblush linen mediumaquamarine green
173
+ blueviolet peachpuff
174
+ )
175
+ end
176
+
177
+ # source: http://www.w3.org/TR/CSS21/syndata.html#vendor-keyword-history
178
+ def self.vendor_prefixes
179
+ @vendor_prefixes ||= Set.new %w(
180
+ -ah- -atsc- -hp- -khtml- -moz- -ms- -o- -rim- -ro- -tc- -wap-
181
+ -webkit- -xv- mso- prince-
182
+ )
183
+ end
184
+
185
+ state :root do
186
+ mixin :basics
187
+ rule /{/, Punctuation, :stanza
188
+ rule /:[:]?#{identifier}/, Name::Decorator
189
+ rule /\.#{identifier}/, Name::Class
190
+ rule /##{identifier}/, Name::Function
191
+ rule /@#{identifier}/, Keyword, :at_rule
192
+ rule identifier, Name::Tag
193
+ rule %r([~^*!%&\[\]()<>|+=@:;,./?-]), Operator
194
+ rule /"(\\\\|\\"|[^"])*"/, Str::Single
195
+ rule /'(\\\\|\\'|[^'])*'/, Str::Double
196
+ end
197
+
198
+ state :value do
199
+ mixin :basics
200
+ rule /url\(.*?\)/, Str::Other
201
+ rule /#[0-9a-f]{1,6}/i, Num # colors
202
+ rule /#{number}(?:%|(?:em|px|pt|pc|in|mm|cm|ex|rem|ch|vw|vh|vmin|vmax|dpi|dpcm|dppx|deg|grad|rad|turn|s|ms|Hz|kHz)\b)?/, Num
203
+ rule /[\[\]():\/.,]/, Punctuation
204
+ rule /"(\\\\|\\"|[^"])*"/, Str::Single
205
+ rule /'(\\\\|\\'|[^'])*'/, Str::Double
206
+ rule(identifier) do |m|
207
+ if self.class.constants.include? m[0]
208
+ token Name::Constant
209
+ elsif self.class.builtins.include? m[0]
210
+ token Name::Builtin
211
+ else
212
+ token Name
213
+ end
214
+ end
215
+ end
216
+
217
+ state :at_rule do
218
+ rule /{(?=\s*#{identifier}\s*:)/m, Punctuation, :at_stanza
219
+ rule /{/, Punctuation, :at_body
220
+ rule /;/, Punctuation, :pop!
221
+ mixin :value
222
+ end
223
+
224
+ state :at_body do
225
+ mixin :at_content
226
+ mixin :root
227
+ end
228
+
229
+ state :at_stanza do
230
+ mixin :at_content
231
+ mixin :stanza
232
+ end
233
+
234
+ state :at_content do
235
+ rule /}/ do
236
+ token Punctuation
237
+ pop! 2
238
+ end
239
+ end
240
+
241
+ state :basics do
242
+ rule /\s+/m, Text
243
+ rule %r(/\*(?:.*?)\*/)m, Comment
244
+ end
245
+
246
+ state :stanza do
247
+ mixin :basics
248
+ rule /}/, Punctuation, :pop!
249
+ rule /(#{identifier})(\s*)(:)/m do |m|
250
+ name_tok = if self.class.attributes.include? m[1]
251
+ Name::Label
252
+ elsif self.class.vendor_prefixes.any? { |p| m[1].start_with?(p) }
253
+ Name::Label
254
+ else
255
+ Name::Property
256
+ end
257
+
258
+ groups name_tok, Text, Punctuation
259
+
260
+ push :stanza_value
261
+ end
262
+ end
263
+
264
+ state :stanza_value do
265
+ rule /;/, Punctuation, :pop!
266
+ rule(/(?=})/) { pop! }
267
+ rule /!important\b/, Comment::Preproc
268
+ rule /^@.*?$/, Comment::Preproc
269
+ mixin :value
270
+ end
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,176 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class D < RegexLexer
6
+ tag 'd'
7
+ aliases 'dlang'
8
+ filenames '*.d', '*.di'
9
+ mimetypes 'application/x-dsrc', 'text/x-dsrc'
10
+
11
+ title "D"
12
+ desc 'The D programming language(dlang.org)'
13
+
14
+ keywords = %w(
15
+ abstract alias align asm assert auto body
16
+ break case cast catch class const continue
17
+ debug default delegate delete deprecated do else
18
+ enum export extern finally final foreach_reverse
19
+ foreach for function goto if immutable import
20
+ interface invariant inout in is lazy mixin
21
+ module new nothrow out override package pragma
22
+ private protected public pure ref return scope
23
+ shared static struct super switch synchronized
24
+ template this throw try typedef typeid typeof
25
+ union unittest version volatile while with
26
+ __gshared __traits __vector __parameters
27
+ )
28
+
29
+ keywords_type = %w(
30
+ bool byte cdouble cent cfloat char creal
31
+ dchar double float idouble ifloat int ireal
32
+ long real short ubyte ucent uint ulong
33
+ ushort void wchar
34
+ )
35
+
36
+ keywords_pseudo = %w(
37
+ __FILE__ __MODULE__ __LINE__ __FUNCTION__ __PRETTY_FUNCTION__
38
+ __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__
39
+ __VERSION__
40
+ )
41
+
42
+ state :whitespace do
43
+ rule /\n/m, Text
44
+ rule /\s+/m, Text
45
+ end
46
+
47
+ state :root do
48
+ mixin :whitespace
49
+ # Comments
50
+ rule %r(//(.*?)\n), Comment::Single
51
+ rule %r(/(\\\n)?[*](.|\n)*?[*](\\\n)?/), Comment::Multiline
52
+ rule %r(/\+), Comment::Multiline, :nested_comment
53
+ # Keywords
54
+ rule /(#{keywords.join('|')})\b/, Keyword
55
+ rule /(#{keywords_type.join('|')})\b/, Keyword::Type
56
+ rule /(false|true|null)\b/, Keyword::Constant
57
+ rule /(#{keywords_pseudo.join('|')})\b/, Keyword::Pseudo
58
+ rule /macro\b/, Keyword::Reserved
59
+ rule /(string|wstring|dstring|size_t|ptrdiff_t)\b/, Name::Builtin
60
+ # Literals
61
+ # HexFloat
62
+ rule /0[xX]([0-9a-fA-F_]*\.[0-9a-fA-F_]+|[0-9a-fA-F_]+)[pP][+\-]?[0-9_]+[fFL]?[i]?/, Num::Float
63
+ # DecimalFloat
64
+ rule /[0-9_]+(\.[0-9_]+[eE][+\-]?[0-9_]+|\.[0-9_]*|[eE][+\-]?[0-9_]+)[fFL]?[i]?/, Num::Float
65
+ rule /\.(0|[1-9][0-9_]*)([eE][+\-]?[0-9_]+)?[fFL]?[i]?/, Num::Float
66
+ # IntegerLiteral
67
+ # Binary
68
+ rule /0[Bb][01_]+/, Num::Bin
69
+ # Octal
70
+ # TODO: 0[0-7] isn't supported use octal![0-7] instead
71
+ rule /0[0-7_]+/, Num::Oct
72
+ # Hexadecimal
73
+ rule /0[xX][0-9a-fA-F_]+/, Num::Hex
74
+ # Decimal
75
+ rule /(0|[1-9][0-9_]*)([LUu]|Lu|LU|uL|UL)?/, Num::Integer
76
+ # CharacterLiteral
77
+ rule /'(\\['"?\\abfnrtv]|\\x[0-9a-fA-F]{2}|\\[0-7]{1,3}|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\&\w+;|.)'/, Str::Char
78
+ # StringLiteral
79
+ # WysiwygString
80
+ rule /r"[^"]*"[cwd]?/, Str
81
+ # Alternate WysiwygString
82
+ rule /`[^`]*`[cwd]?/, Str
83
+ # DoubleQuotedString
84
+ rule /"(\\\\|\\"|[^"])*"[cwd]?/, Str
85
+ # EscapeSequence
86
+ rule /\\(['\"?\\abfnrtv]|x[0-9a-fA-F]{2}|[0-7]{1,3}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|&\w+;)/, Str
87
+ # HexString
88
+ rule /x"[0-9a-fA-F_\s]*"[cwd]?/, Str
89
+ # DelimitedString
90
+ rule /q"\[/, Str, :delimited_bracket
91
+ rule /q"\(/, Str, :delimited_parenthesis
92
+ rule /q"</, Str, :delimited_angle
93
+ rule /q"\{/, Str, :delimited_curly
94
+ rule /q"([a-zA-Z_]\w*)\n.*?\n\1"/, Str
95
+ rule /q"(.).*?\1"/, Str
96
+ # TokenString
97
+ rule /q\{/, Str, :token_string
98
+ # Attributes
99
+ rule /@([a-zA-Z_]\w*)?/, Name::Decorator
100
+ # Tokens
101
+ rule %r`(~=|\^=|%=|\*=|==|!>=|!<=|!<>=|!<>|!<|!>|!=|>>>=|>>>|>>=|>>|>=|<>=|<>|<<=|<<|<=|\+\+|\+=|--|-=|\|\||\|=|&&|&=|\.\.\.|\.\.|/=)|[/.&|\-+<>!()\[\]{}?,;:$=*%^~]`, Punctuation
102
+ # Identifier
103
+ rule /[a-zA-Z_]\w*/, Name
104
+ # Line
105
+ rule /#line\s.*\n/, Comment::Special
106
+ end
107
+
108
+ state :nested_comment do
109
+ rule %r([^+/]+), Comment::Multiline
110
+ rule %r(/\+), Comment::Multiline, :push
111
+ rule %r(\+/), Comment::Multiline, :pop!
112
+ rule %r([+/]), Comment::Multiline
113
+ end
114
+
115
+ state :token_string do
116
+ rule /\{/, Punctuation, :token_string_nest
117
+ rule /\}/, Str, :pop!
118
+ mixin :root
119
+ end
120
+
121
+ state :token_string_nest do
122
+ rule /\{/, Punctuation, :push
123
+ rule /\}/, Punctuation, :pop!
124
+ mixin :root
125
+ end
126
+
127
+ state :delimited_bracket do
128
+ rule /[^\[\]]+/, Str
129
+ rule /\[/, Str, :delimited_inside_bracket
130
+ rule /\]"/, Str, :pop!
131
+ end
132
+
133
+ state :delimited_inside_bracket do
134
+ rule /[^\[\]]+/, Str
135
+ rule /\[/, Str, :push
136
+ rule /\]/, Str, :pop!
137
+ end
138
+
139
+ state :delimited_parenthesis do
140
+ rule /[^()]+/, Str
141
+ rule /\(/, Str, :delimited_inside_parenthesis
142
+ rule /\)"/, Str, :pop!
143
+ end
144
+
145
+ state :delimited_inside_parenthesis do
146
+ rule /[^()]+/, Str
147
+ rule /\(/, Str, :push
148
+ rule /\)/, Str, :pop!
149
+ end
150
+
151
+ state :delimited_angle do
152
+ rule /[^<>]+/, Str
153
+ rule /</, Str, :delimited_inside_angle
154
+ rule />"/, Str, :pop!
155
+ end
156
+
157
+ state :delimited_inside_angle do
158
+ rule /[^<>]+/, Str
159
+ rule /</, Str, :push
160
+ rule />/, Str, :pop!
161
+ end
162
+
163
+ state :delimited_curly do
164
+ rule /[^{}]+/, Str
165
+ rule /\{/, Str, :delimited_inside_curly
166
+ rule /\}"/, Str, :pop!
167
+ end
168
+
169
+ state :delimited_inside_curly do
170
+ rule /[^{}]+/, Str
171
+ rule /\{/, Str, :push
172
+ rule /\}/, Str, :pop!
173
+ end
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,104 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Dart < RegexLexer
6
+ title "Dart"
7
+ desc "The Dart programming language (dartlang.com)"
8
+
9
+ tag 'dart'
10
+ filenames '*.dart'
11
+ mimetypes 'text/x-dart'
12
+
13
+ keywords = %w(
14
+ as assert break case catch continue default do else finally for
15
+ if in is new rethrow return super switch this throw try while with
16
+ )
17
+
18
+ declarations = %w(
19
+ abstract dynamic const external extends factory final get implements
20
+ native operator set static typedef var
21
+ )
22
+
23
+ types = %w(bool double Dynamic enum int num Object Set String void)
24
+
25
+ imports = %w(import export library part\s*of part source)
26
+
27
+ id = /[a-zA-Z_]\w*/
28
+
29
+ state :root do
30
+ rule %r(^
31
+ (\s*(?:[a-zA-Z_][a-zA-Z\d_.\[\]]*\s+)+?) # return arguments
32
+ ([a-zA-Z_][\w]*) # method name
33
+ (\s*)(\() # signature start
34
+ )mx do |m|
35
+ # TODO: do this better, this shouldn't need a delegation
36
+ delegate Dart, m[1]
37
+ token Name::Function, m[2]
38
+ token Text, m[3]
39
+ token Punctuation, m[4]
40
+ end
41
+
42
+ rule /\s+/, Text
43
+ rule %r(//.*?$), Comment::Single
44
+ rule %r(/\*.*?\*/)m, Comment::Multiline
45
+ rule /"/, Str, :dqs
46
+ rule /'/, Str, :sqs
47
+ rule /r"[^"]*"/, Str::Other
48
+ rule /r'[^']*'/, Str::Other
49
+ rule /##{id}*/i, Str::Symbol
50
+ rule /@#{id}/, Name::Decorator
51
+ rule /(?:#{keywords.join('|')})\b/, Keyword
52
+ rule /(?:#{declarations.join('|')})\b/, Keyword::Declaration
53
+ rule /(?:#{types.join('|')})\b/, Keyword::Type
54
+ rule /(?:true|false|null)\b/, Keyword::Constant
55
+ rule /(?:class|interface)\b/, Keyword::Declaration, :class
56
+ rule /(?:#{imports.join('|')})\b/, Keyword::Namespace, :import
57
+ rule /(\.)(#{id})/ do
58
+ groups Operator, Name::Attribute
59
+ end
60
+
61
+ rule /#{id}:/, Name::Label
62
+ rule /\$?#{id}/, Name
63
+ rule /[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator
64
+ rule /\d*\.\d+([eE]\-?\d+)?/, Num::Float
65
+ rule /0x[\da-fA-F]+/, Num::Hex
66
+ rule /\d+L?/, Num::Integer
67
+ rule /\n/, Text
68
+ end
69
+
70
+ state :class do
71
+ rule /\s+/m, Text
72
+ rule id, Name::Class, :pop!
73
+ end
74
+
75
+ state :dqs do
76
+ rule /"/, Str, :pop!
77
+ rule /[^\\\$"]+/, Str
78
+ mixin :string
79
+ end
80
+
81
+ state :sqs do
82
+ rule /'/, Str, :pop!
83
+ rule /[^\\\$']+/, Str
84
+ mixin :string
85
+ end
86
+
87
+ state :import do
88
+ rule /;/, Operator, :pop!
89
+ rule /(?:show|hide)\b/, Keyword::Declaration
90
+ mixin :root
91
+ end
92
+
93
+ state :string do
94
+ mixin :interpolation
95
+ rule /\\[nrt\"\'\\]/, Str::Escape
96
+ end
97
+
98
+ state :interpolation do
99
+ rule /\$#{id}/, Str::Interpol
100
+ rule /\$\{[^\}]+\}/, Str::Interpol
101
+ end
102
+ end
103
+ end
104
+ end