mayu-live 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. checksums.yaml +7 -0
  2. data/COPYING +661 -0
  3. data/README.md +598 -0
  4. data/exe/mayu +33 -0
  5. data/lib/mayu/app_metrics.rb +93 -0
  6. data/lib/mayu/banner.rb +12 -0
  7. data/lib/mayu/client/README.md +17 -0
  8. data/lib/mayu/client/dist/DecompressionStreamPolyfill-3ceba43e.js +1 -0
  9. data/lib/mayu/client/dist/DecompressionStreamPolyfill-3ceba43e.js.br +0 -0
  10. data/lib/mayu/client/dist/DecompressionStreamPolyfill-3ceba43e.js.map +1 -0
  11. data/lib/mayu/client/dist/DecompressionStreamPolyfill-3ceba43e.js.map.br +0 -0
  12. data/lib/mayu/client/dist/custom-elements/mayu-alert-cd7ad2a4.js +1 -0
  13. data/lib/mayu/client/dist/custom-elements/mayu-alert-cd7ad2a4.js.map +1 -0
  14. data/lib/mayu/client/dist/custom-elements/mayu-disconnected-9f349f46.js +1 -0
  15. data/lib/mayu/client/dist/custom-elements/mayu-disconnected-9f349f46.js.map +1 -0
  16. data/lib/mayu/client/dist/custom-elements/mayu-exception-63df4e8c.js +1 -0
  17. data/lib/mayu/client/dist/custom-elements/mayu-exception-63df4e8c.js.map +1 -0
  18. data/lib/mayu/client/dist/custom-elements/mayu-ping-c498c2a6.js +1 -0
  19. data/lib/mayu/client/dist/custom-elements/mayu-ping-c498c2a6.js.map +1 -0
  20. data/lib/mayu/client/dist/custom-elements/mayu-progress-bar-eb3e1ac8.js +1 -0
  21. data/lib/mayu/client/dist/custom-elements/mayu-progress-bar-eb3e1ac8.js.map +1 -0
  22. data/lib/mayu/client/dist/entries.json +3 -0
  23. data/lib/mayu/client/dist/main-4b49dbc4.js +1 -0
  24. data/lib/mayu/client/dist/main-4b49dbc4.js.br +0 -0
  25. data/lib/mayu/client/dist/main-4b49dbc4.js.map +1 -0
  26. data/lib/mayu/client/dist/main-4b49dbc4.js.map.br +0 -0
  27. data/lib/mayu/client/package.json +39 -0
  28. data/lib/mayu/client/rollup.config.js +81 -0
  29. data/lib/mayu/client/src/DecompressionStream.ts +15 -0
  30. data/lib/mayu/client/src/DecompressionStreamPolyfill.ts +43 -0
  31. data/lib/mayu/client/src/MimeTypes.ts +4 -0
  32. data/lib/mayu/client/src/NodeTree.ts +445 -0
  33. data/lib/mayu/client/src/custom-elements/mayu-alert.html +137 -0
  34. data/lib/mayu/client/src/custom-elements/mayu-alert.ts +62 -0
  35. data/lib/mayu/client/src/custom-elements/mayu-disconnected.html +134 -0
  36. data/lib/mayu/client/src/custom-elements/mayu-disconnected.ts +51 -0
  37. data/lib/mayu/client/src/custom-elements/mayu-exception.html +79 -0
  38. data/lib/mayu/client/src/custom-elements/mayu-exception.ts +28 -0
  39. data/lib/mayu/client/src/custom-elements/mayu-log.html +70 -0
  40. data/lib/mayu/client/src/custom-elements/mayu-log.ts +42 -0
  41. data/lib/mayu/client/src/custom-elements/mayu-ping.html +36 -0
  42. data/lib/mayu/client/src/custom-elements/mayu-ping.ts +53 -0
  43. data/lib/mayu/client/src/custom-elements/mayu-progress-bar.html +44 -0
  44. data/lib/mayu/client/src/custom-elements/mayu-progress-bar.ts +40 -0
  45. data/lib/mayu/client/src/custom-elements/types.d.ts +4 -0
  46. data/lib/mayu/client/src/global.d.ts +26 -0
  47. data/lib/mayu/client/src/h.ts +27 -0
  48. data/lib/mayu/client/src/logger.ts +56 -0
  49. data/lib/mayu/client/src/main.ts +271 -0
  50. data/lib/mayu/client/src/serializeEvent.ts +90 -0
  51. data/lib/mayu/client/src/stream.ts +175 -0
  52. data/lib/mayu/client/src/types.ts +1 -0
  53. data/lib/mayu/client/src/utils.ts +71 -0
  54. data/lib/mayu/client/tsconfig.json +18 -0
  55. data/lib/mayu/colors.rb +34 -0
  56. data/lib/mayu/commands/base.rb +22 -0
  57. data/lib/mayu/commands/build.rb +82 -0
  58. data/lib/mayu/commands.rb +53 -0
  59. data/lib/mayu/component/base.rb +177 -0
  60. data/lib/mayu/component/handler_ref.rb +99 -0
  61. data/lib/mayu/component/helpers.rb +93 -0
  62. data/lib/mayu/component/interface.rb +18 -0
  63. data/lib/mayu/component/wrapper.rb +165 -0
  64. data/lib/mayu/component.rb +54 -0
  65. data/lib/mayu/configuration.rb +195 -0
  66. data/lib/mayu/disable_sorbet.rb +23 -0
  67. data/lib/mayu/environment.rb +151 -0
  68. data/lib/mayu/event_stream.rb +158 -0
  69. data/lib/mayu/fetch.rb +88 -0
  70. data/lib/mayu/html.rb +53 -0
  71. data/lib/mayu/html.yaml +767 -0
  72. data/lib/mayu/message_cipher.rb +172 -0
  73. data/lib/mayu/message_cipher.test.rb +16 -0
  74. data/lib/mayu/metrics/collector.rb +161 -0
  75. data/lib/mayu/metrics/exporter.rb +47 -0
  76. data/lib/mayu/metrics/reporter.rb +187 -0
  77. data/lib/mayu/metrics.rb +82 -0
  78. data/lib/mayu/ref_counter.rb +57 -0
  79. data/lib/mayu/resources/README.md +14 -0
  80. data/lib/mayu/resources/asset.rb +71 -0
  81. data/lib/mayu/resources/assets.rb +76 -0
  82. data/lib/mayu/resources/dependency_graph.rb +306 -0
  83. data/lib/mayu/resources/dot_exporter.rb +167 -0
  84. data/lib/mayu/resources/generators/base.rb +18 -0
  85. data/lib/mayu/resources/generators/copy_file.rb +26 -0
  86. data/lib/mayu/resources/generators/image.rb +106 -0
  87. data/lib/mayu/resources/generators/write_file.rb +39 -0
  88. data/lib/mayu/resources/hot_swap/file_watcher.rb +69 -0
  89. data/lib/mayu/resources/hot_swap.rb +46 -0
  90. data/lib/mayu/resources/mermaid_exporter.rb +210 -0
  91. data/lib/mayu/resources/registry.rb +190 -0
  92. data/lib/mayu/resources/resolver/base.rb +32 -0
  93. data/lib/mayu/resources/resolver/filesystem.rb +94 -0
  94. data/lib/mayu/resources/resolver/static.rb +27 -0
  95. data/lib/mayu/resources/resolver.rb +13 -0
  96. data/lib/mayu/resources/resource.rb +150 -0
  97. data/lib/mayu/resources/transformers/__test__/css/adjacent_selectors.in.css +3 -0
  98. data/lib/mayu/resources/transformers/__test__/css/adjacent_selectors.out.css +6 -0
  99. data/lib/mayu/resources/transformers/__test__/css/attributes.in.css +3 -0
  100. data/lib/mayu/resources/transformers/__test__/css/attributes.out.css +6 -0
  101. data/lib/mayu/resources/transformers/__test__/css/composes.in.css +6 -0
  102. data/lib/mayu/resources/transformers/__test__/css/composes.out.css +10 -0
  103. data/lib/mayu/resources/transformers/__test__/css/element_selectors.in.css +3 -0
  104. data/lib/mayu/resources/transformers/__test__/css/element_selectors.out.css +6 -0
  105. data/lib/mayu/resources/transformers/__test__/css/has.in.css +7 -0
  106. data/lib/mayu/resources/transformers/__test__/css/has.out.css +10 -0
  107. data/lib/mayu/resources/transformers/__test__/css/media_queries.in.css +8 -0
  108. data/lib/mayu/resources/transformers/__test__/css/media_queries.out.css +12 -0
  109. data/lib/mayu/resources/transformers/__test__/css/pseudo_classes.in.css +5 -0
  110. data/lib/mayu/resources/transformers/__test__/css/pseudo_classes.out.css +6 -0
  111. data/lib/mayu/resources/transformers/__test__/haml/README.md +10 -0
  112. data/lib/mayu/resources/transformers/__test__/haml/case.haml +8 -0
  113. data/lib/mayu/resources/transformers/__test__/haml/case.rb +15 -0
  114. data/lib/mayu/resources/transformers/__test__/haml/class_names.haml +13 -0
  115. data/lib/mayu/resources/transformers/__test__/haml/class_names.rb +26 -0
  116. data/lib/mayu/resources/transformers/__test__/haml/comments.haml +5 -0
  117. data/lib/mayu/resources/transformers/__test__/haml/comments.rb +5 -0
  118. data/lib/mayu/resources/transformers/__test__/haml/css.haml +3 -0
  119. data/lib/mayu/resources/transformers/__test__/haml/css.rb +11 -0
  120. data/lib/mayu/resources/transformers/__test__/haml/dashes.haml +3 -0
  121. data/lib/mayu/resources/transformers/__test__/haml/dashes.rb +11 -0
  122. data/lib/mayu/resources/transformers/__test__/haml/early_return.haml +4 -0
  123. data/lib/mayu/resources/transformers/__test__/haml/early_return.rb +9 -0
  124. data/lib/mayu/resources/transformers/__test__/haml/early_return2.haml +3 -0
  125. data/lib/mayu/resources/transformers/__test__/haml/early_return2.rb +6 -0
  126. data/lib/mayu/resources/transformers/__test__/haml/handlers.haml +6 -0
  127. data/lib/mayu/resources/transformers/__test__/haml/handlers.rb +12 -0
  128. data/lib/mayu/resources/transformers/__test__/haml/if_else.haml +6 -0
  129. data/lib/mayu/resources/transformers/__test__/haml/if_else.rb +12 -0
  130. data/lib/mayu/resources/transformers/__test__/haml/interpolation.haml +8 -0
  131. data/lib/mayu/resources/transformers/__test__/haml/interpolation.rb +11 -0
  132. data/lib/mayu/resources/transformers/__test__/haml/object_ref_as_key.haml +1 -0
  133. data/lib/mayu/resources/transformers/__test__/haml/object_ref_as_key.rb +5 -0
  134. data/lib/mayu/resources/transformers/__test__/haml/props.haml +4 -0
  135. data/lib/mayu/resources/transformers/__test__/haml/props.rb +11 -0
  136. data/lib/mayu/resources/transformers/__test__/haml/slots.haml +5 -0
  137. data/lib/mayu/resources/transformers/__test__/haml/slots.rb +9 -0
  138. data/lib/mayu/resources/transformers/__test__/haml/slots_dynamic.haml +3 -0
  139. data/lib/mayu/resources/transformers/__test__/haml/slots_dynamic.rb +9 -0
  140. data/lib/mayu/resources/transformers/__test__/haml/slots_fallback.haml +3 -0
  141. data/lib/mayu/resources/transformers/__test__/haml/slots_fallback.rb +5 -0
  142. data/lib/mayu/resources/transformers/__test__/haml/spacing.haml +5 -0
  143. data/lib/mayu/resources/transformers/__test__/haml/spacing.rb +14 -0
  144. data/lib/mayu/resources/transformers/__test__/haml/spacing2.haml +10 -0
  145. data/lib/mayu/resources/transformers/__test__/haml/spacing2.rb +11 -0
  146. data/lib/mayu/resources/transformers/__test__/haml/spacing3.haml +3 -0
  147. data/lib/mayu/resources/transformers/__test__/haml/spacing3.rb +10 -0
  148. data/lib/mayu/resources/transformers/css/rouge_lexer.rb +841 -0
  149. data/lib/mayu/resources/transformers/css.rb +100 -0
  150. data/lib/mayu/resources/transformers/css.test.rb +87 -0
  151. data/lib/mayu/resources/transformers/haml.rb +984 -0
  152. data/lib/mayu/resources/transformers/haml.test.rb +114 -0
  153. data/lib/mayu/resources/types/README.md +36 -0
  154. data/lib/mayu/resources/types/base.rb +35 -0
  155. data/lib/mayu/resources/types/component.rb +198 -0
  156. data/lib/mayu/resources/types/image.rb +169 -0
  157. data/lib/mayu/resources/types/javascript.rb +50 -0
  158. data/lib/mayu/resources/types/nil.rb +23 -0
  159. data/lib/mayu/resources/types/stylesheet.rb +119 -0
  160. data/lib/mayu/resources/types/svg.rb +69 -0
  161. data/lib/mayu/resources/types.rb +37 -0
  162. data/lib/mayu/routes.rb +170 -0
  163. data/lib/mayu/routing/builder.rb +108 -0
  164. data/lib/mayu/routing/matcher.rb +58 -0
  165. data/lib/mayu/routing/routes.rb +85 -0
  166. data/lib/mayu/routing.rb +17 -0
  167. data/lib/mayu/server/app.rb +494 -0
  168. data/lib/mayu/server/controller.rb +152 -0
  169. data/lib/mayu/server/errors.rb +110 -0
  170. data/lib/mayu/server/file_server.rb +140 -0
  171. data/lib/mayu/server.rb +63 -0
  172. data/lib/mayu/session.rb +358 -0
  173. data/lib/mayu/state/README.md +6 -0
  174. data/lib/mayu/state/action_creator.rb +191 -0
  175. data/lib/mayu/state/action_wrapper.rb +30 -0
  176. data/lib/mayu/state/loader.rb +220 -0
  177. data/lib/mayu/state/store.rb +82 -0
  178. data/lib/mayu/state.rb +8 -0
  179. data/lib/mayu/state.test.rb +97 -0
  180. data/lib/mayu/utils.rb +114 -0
  181. data/lib/mayu/vdom/children.rb +117 -0
  182. data/lib/mayu/vdom/component_marshaler.rb +53 -0
  183. data/lib/mayu/vdom/css_attributes.rb +131 -0
  184. data/lib/mayu/vdom/descriptor.rb +151 -0
  185. data/lib/mayu/vdom/descriptor.test.rb +26 -0
  186. data/lib/mayu/vdom/dom.rb +239 -0
  187. data/lib/mayu/vdom/h.rb +22 -0
  188. data/lib/mayu/vdom/id_generator.rb +55 -0
  189. data/lib/mayu/vdom/interfaces.rb +186 -0
  190. data/lib/mayu/vdom/marshalling.rb +78 -0
  191. data/lib/mayu/vdom/reconciliation.rb +205 -0
  192. data/lib/mayu/vdom/reconciliation.test.rb +56 -0
  193. data/lib/mayu/vdom/special_elements.rb +108 -0
  194. data/lib/mayu/vdom/update_context.rb +180 -0
  195. data/lib/mayu/vdom/vdom.perf.test.rb +146 -0
  196. data/lib/mayu/vdom/vnode.rb +266 -0
  197. data/lib/mayu/vdom/vtree.rb +672 -0
  198. data/lib/mayu/vdom/vtree.test.rb +68 -0
  199. data/lib/mayu/vdom.rb +8 -0
  200. data/lib/mayu/vdom.test.rb +73 -0
  201. data/lib/mayu/version.rb +6 -0
  202. data/lib/mayu.rb +8 -0
  203. data/mayu-live.gemspec +70 -0
  204. metadata +612 -0
@@ -0,0 +1,841 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # typed: false
3
+ # frozen_string_literal: true
4
+ #
5
+ # MIT license. See http://www.opensource.org/licenses/mit-license.php
6
+
7
+ # Copyright (c) 2012 Jeanine Adkisson.
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ # of this software and associated documentation files (the "Software"), to deal
11
+ # in the Software without restriction, including without limitation the rights
12
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ # copies of the Software, and to permit persons to whom the Software is
14
+ # furnished to do so, subject to the following conditions:
15
+ #
16
+ # The above copyright notice and this permission notice shall be included in
17
+ # all copies or substantial portions of the Software.
18
+ #
19
+ # This file is copied from and slightly modified.
20
+ # https://github.com/rouge-ruby/rouge/blob/730208cee94cc6bc17a766d1786af414f751b1c7/lib/rouge/lexers/css.rb
21
+ # Modified locations have been marked with "MAYU".
22
+
23
+ require "rouge"
24
+
25
+ module Mayu
26
+ module Resources
27
+ module Transformers
28
+ module CSS
29
+ class RougeLexer < Rouge::RegexLexer
30
+ title "CSS"
31
+ desc "Cascading Style Sheets, used to style web pages"
32
+
33
+ tag "css"
34
+ filenames "*.css"
35
+ mimetypes "text/css"
36
+
37
+ # Documentation: https://www.w3.org/TR/CSS21/syndata.html#characters
38
+
39
+ # MAYU: This regex has been changed to allow escaping characters (i.e: .foo\.bar).
40
+ identifier = /[\p{L}_-](?:[\p{Word}\p{Cf}-]|\\.)*/
41
+ number = /-?(?:[0-9]+(\.[0-9]+)?|\.[0-9]+)/
42
+
43
+ def self.attributes
44
+ @attributes ||=
45
+ Set.new %w[
46
+ align-content
47
+ align-items
48
+ align-self
49
+ alignment-adjust
50
+ alignment-baseline
51
+ all
52
+ anchor-point
53
+ animation
54
+ animation-delay
55
+ animation-direction
56
+ animation-duration
57
+ animation-fill-mode
58
+ animation-iteration-count
59
+ animation-name
60
+ animation-play-state
61
+ animation-timing-function
62
+ appearance
63
+ azimuth
64
+ backface-visibility
65
+ background
66
+ background-attachment
67
+ background-clip
68
+ background-color
69
+ background-image
70
+ background-origin
71
+ background-position
72
+ background-repeat
73
+ background-size
74
+ baseline-shift
75
+ binding
76
+ bleed
77
+ bookmark-label
78
+ bookmark-level
79
+ bookmark-state
80
+ bookmark-target
81
+ border
82
+ border-bottom
83
+ border-bottom-color
84
+ border-bottom-left-radius
85
+ border-bottom-right-radius
86
+ border-bottom-style
87
+ border-bottom-width
88
+ border-collapse
89
+ border-color
90
+ border-image
91
+ border-image-outset
92
+ border-image-repeat
93
+ border-image-slice
94
+ border-image-source
95
+ border-image-width
96
+ border-left
97
+ border-left-color
98
+ border-left-style
99
+ border-left-width
100
+ border-radius
101
+ border-right
102
+ border-right-color
103
+ border-right-style
104
+ border-right-width
105
+ border-spacing
106
+ border-style
107
+ border-top
108
+ border-top-color
109
+ border-top-left-radius
110
+ border-top-right-radius
111
+ border-top-style
112
+ border-top-width
113
+ border-width
114
+ bottom
115
+ box-align
116
+ box-decoration-break
117
+ box-direction
118
+ box-flex
119
+ box-flex-group
120
+ box-lines
121
+ box-ordinal-group
122
+ box-orient
123
+ box-pack
124
+ box-shadow
125
+ box-sizing
126
+ break-after
127
+ break-before
128
+ break-inside
129
+ caption-side
130
+ clear
131
+ clip
132
+ clip-path
133
+ clip-rule
134
+ color
135
+ color-profile
136
+ columns
137
+ column-count
138
+ column-fill
139
+ column-gap
140
+ column-rule
141
+ column-rule-color
142
+ column-rule-style
143
+ column-rule-width
144
+ column-span
145
+ column-width
146
+ content
147
+ counter-increment
148
+ counter-reset
149
+ crop
150
+ cue
151
+ cue-after
152
+ cue-before
153
+ cursor
154
+ direction
155
+ display
156
+ dominant-baseline
157
+ drop-initial-after-adjust
158
+ drop-initial-after-align
159
+ drop-initial-before-adjust
160
+ drop-initial-before-align
161
+ drop-initial-size
162
+ drop-initial-value
163
+ elevation
164
+ empty-cells
165
+ filter
166
+ fit
167
+ fit-position
168
+ flex
169
+ flex-basis
170
+ flex-direction
171
+ flex-flow
172
+ flex-grow
173
+ flex-shrink
174
+ flex-wrap
175
+ float
176
+ float-offset
177
+ font
178
+ font-family
179
+ font-feature-settings
180
+ font-kerning
181
+ font-language-override
182
+ font-size
183
+ font-size-adjust
184
+ font-stretch
185
+ font-style
186
+ font-synthesis
187
+ font-variant
188
+ font-variant-alternates
189
+ font-variant-caps
190
+ font-variant-east-asian
191
+ font-variant-ligatures
192
+ font-variant-numeric
193
+ font-variant-position
194
+ font-weight
195
+ grid-cell
196
+ grid-column
197
+ grid-column-align
198
+ grid-column-sizing
199
+ grid-column-span
200
+ grid-columns
201
+ grid-flow
202
+ grid-row
203
+ grid-row-align
204
+ grid-row-sizing
205
+ grid-row-span
206
+ grid-rows
207
+ grid-template
208
+ hanging-punctuation
209
+ height
210
+ hyphenate-after
211
+ hyphenate-before
212
+ hyphenate-character
213
+ hyphenate-lines
214
+ hyphenate-resource
215
+ hyphens
216
+ icon
217
+ image-orientation
218
+ image-rendering
219
+ image-resolution
220
+ ime-mode
221
+ inline-box-align
222
+ justify-content
223
+ left
224
+ letter-spacing
225
+ line-break
226
+ line-height
227
+ line-stacking
228
+ line-stacking-ruby
229
+ line-stacking-shift
230
+ line-stacking-strategy
231
+ list-style
232
+ list-style-image
233
+ list-style-position
234
+ list-style-type
235
+ margin
236
+ margin-bottom
237
+ margin-left
238
+ margin-right
239
+ margin-top
240
+ mark
241
+ marker-offset
242
+ marks
243
+ mark-after
244
+ mark-before
245
+ marquee-direction
246
+ marquee-loop
247
+ marquee-play-count
248
+ marquee-speed
249
+ marquee-style
250
+ mask
251
+ max-height
252
+ max-width
253
+ min-height
254
+ min-width
255
+ move-to
256
+ nav-down
257
+ nav-index
258
+ nav-left
259
+ nav-right
260
+ nav-up
261
+ object-fit
262
+ object-position
263
+ opacity
264
+ order
265
+ orphans
266
+ outline
267
+ outline-color
268
+ outline-offset
269
+ outline-style
270
+ outline-width
271
+ overflow
272
+ overflow-style
273
+ overflow-wrap
274
+ overflow-x
275
+ overflow-y
276
+ padding
277
+ padding-bottom
278
+ padding-left
279
+ padding-right
280
+ padding-top
281
+ page
282
+ page-break-after
283
+ page-break-before
284
+ page-break-inside
285
+ page-policy
286
+ pause
287
+ pause-after
288
+ pause-before
289
+ perspective
290
+ perspective-origin
291
+ phonemes
292
+ pitch
293
+ pitch-range
294
+ play-during
295
+ pointer-events
296
+ position
297
+ presentation-level
298
+ punctuation-trim
299
+ quotes
300
+ rendering-intent
301
+ resize
302
+ rest
303
+ rest-after
304
+ rest-before
305
+ richness
306
+ right
307
+ rotation
308
+ rotation-point
309
+ ruby-align
310
+ ruby-overhang
311
+ ruby-position
312
+ ruby-span
313
+ size
314
+ speak
315
+ speak-as
316
+ speak-header
317
+ speak-numeral
318
+ speak-punctuation
319
+ speech-rate
320
+ src
321
+ stress
322
+ string-set
323
+ tab-size
324
+ table-layout
325
+ target
326
+ target-name
327
+ target-new
328
+ target-position
329
+ text-align
330
+ text-align-last
331
+ text-combine-horizontal
332
+ text-decoration
333
+ text-decoration-color
334
+ text-decoration-line
335
+ text-decoration-skip
336
+ text-decoration-style
337
+ text-emphasis
338
+ text-emphasis-color
339
+ text-emphasis-position
340
+ text-emphasis-style
341
+ text-height
342
+ text-indent
343
+ text-justify
344
+ text-orientation
345
+ text-outline
346
+ text-overflow
347
+ text-rendering
348
+ text-shadow
349
+ text-space-collapse
350
+ text-transform
351
+ text-underline-position
352
+ text-wrap
353
+ top
354
+ transform
355
+ transform-origin
356
+ transform-style
357
+ transition
358
+ transition-delay
359
+ transition-duration
360
+ transition-property
361
+ transition-timing-function
362
+ unicode-bidi
363
+ vertical-align
364
+ visibility
365
+ voice-balance
366
+ voice-duration
367
+ voice-family
368
+ voice-pitch
369
+ voice-pitch-range
370
+ voice-range
371
+ voice-rate
372
+ voice-stress
373
+ voice-volume
374
+ volume
375
+ white-space
376
+ widows
377
+ width
378
+ word-break
379
+ word-spacing
380
+ word-wrap
381
+ writing-mode
382
+ z-index
383
+ ]
384
+ end
385
+
386
+ def self.builtins
387
+ @builtins ||=
388
+ Set.new %w[
389
+ above
390
+ absolute
391
+ always
392
+ armenian
393
+ aural
394
+ auto
395
+ avoid
396
+ left
397
+ bottom
398
+ baseline
399
+ behind
400
+ below
401
+ bidi-override
402
+ blink
403
+ block
404
+ bold
405
+ bolder
406
+ both
407
+ bottom
408
+ capitalize
409
+ center
410
+ center-left
411
+ center-right
412
+ circle
413
+ cjk-ideographic
414
+ close-quote
415
+ collapse
416
+ condensed
417
+ continuous
418
+ crop
419
+ cross
420
+ crosshair
421
+ cursive
422
+ dashed
423
+ decimal
424
+ decimal-leading-zero
425
+ default
426
+ digits
427
+ disc
428
+ dotted
429
+ double
430
+ e-resize
431
+ embed
432
+ expanded
433
+ extra-condensed
434
+ extra-expanded
435
+ fantasy
436
+ far-left
437
+ far-right
438
+ fast
439
+ faster
440
+ fixed
441
+ georgian
442
+ groove
443
+ hebrew
444
+ help
445
+ hidden
446
+ hide
447
+ high
448
+ higher
449
+ hiragana
450
+ hiragana-iroha
451
+ icon
452
+ inherit
453
+ inline
454
+ inline-table
455
+ inset
456
+ inside
457
+ invert
458
+ italic
459
+ justify
460
+ katakana
461
+ katakana-iroha
462
+ landscape
463
+ large
464
+ larger
465
+ left
466
+ left-side
467
+ leftwards
468
+ level
469
+ lighter
470
+ line-through
471
+ list-item
472
+ loud
473
+ low
474
+ lower
475
+ lower-alpha
476
+ lower-greek
477
+ lower-roman
478
+ lowercase
479
+ ltr
480
+ medium
481
+ message-box
482
+ middle
483
+ mix
484
+ monospace
485
+ n-resize
486
+ narrower
487
+ ne-resize
488
+ no-close-quote
489
+ no-open-quote
490
+ no-repeat
491
+ none
492
+ normal
493
+ nowrap
494
+ nw-resize
495
+ oblique
496
+ once
497
+ open-quote
498
+ outset
499
+ outside
500
+ overline
501
+ pointer
502
+ portrait
503
+ px
504
+ relative
505
+ repeat
506
+ repeat-x
507
+ repeat-y
508
+ rgb
509
+ ridge
510
+ right
511
+ right-side
512
+ rightwards
513
+ s-resize
514
+ sans-serif
515
+ scroll
516
+ se-resize
517
+ semi-condensed
518
+ semi-expanded
519
+ separate
520
+ serif
521
+ show
522
+ silent
523
+ slow
524
+ slower
525
+ small-caps
526
+ small-caption
527
+ smaller
528
+ soft
529
+ solid
530
+ spell-out
531
+ square
532
+ static
533
+ status-bar
534
+ super
535
+ sw-resize
536
+ table-caption
537
+ table-cell
538
+ table-column
539
+ table-column-group
540
+ table-footer-group
541
+ table-header-group
542
+ table-row
543
+ table-row-group
544
+ text
545
+ text-bottom
546
+ text-top
547
+ thick
548
+ thin
549
+ top
550
+ transparent
551
+ ultra-condensed
552
+ ultra-expanded
553
+ underline
554
+ upper-alpha
555
+ upper-latin
556
+ upper-roman
557
+ uppercase
558
+ url
559
+ visible
560
+ w-resize
561
+ wait
562
+ wider
563
+ x-fast
564
+ x-high
565
+ x-large
566
+ x-loud
567
+ x-low
568
+ x-small
569
+ x-soft
570
+ xx-large
571
+ xx-small
572
+ yes
573
+ ]
574
+ end
575
+
576
+ def self.constants
577
+ @constants ||=
578
+ Set.new %w[
579
+ indigo
580
+ gold
581
+ firebrick
582
+ indianred
583
+ yellow
584
+ darkolivegreen
585
+ darkseagreen
586
+ mediumvioletred
587
+ mediumorchid
588
+ chartreuse
589
+ mediumslateblue
590
+ black
591
+ springgreen
592
+ crimson
593
+ lightsalmon
594
+ brown
595
+ turquoise
596
+ olivedrab
597
+ cyan
598
+ silver
599
+ skyblue
600
+ gray
601
+ darkturquoise
602
+ goldenrod
603
+ darkgreen
604
+ darkviolet
605
+ darkgray
606
+ lightpink
607
+ teal
608
+ darkmagenta
609
+ lightgoldenrodyellow
610
+ lavender
611
+ yellowgreen
612
+ thistle
613
+ violet
614
+ navy
615
+ orchid
616
+ blue
617
+ ghostwhite
618
+ honeydew
619
+ cornflowerblue
620
+ darkblue
621
+ darkkhaki
622
+ mediumpurple
623
+ cornsilk
624
+ red
625
+ bisque
626
+ slategray
627
+ darkcyan
628
+ khaki
629
+ wheat
630
+ deepskyblue
631
+ darkred
632
+ steelblue
633
+ aliceblue
634
+ gainsboro
635
+ mediumturquoise
636
+ floralwhite
637
+ coral
638
+ purple
639
+ lightgrey
640
+ lightcyan
641
+ darksalmon
642
+ beige
643
+ azure
644
+ lightsteelblue
645
+ oldlace
646
+ greenyellow
647
+ royalblue
648
+ lightseagreen
649
+ mistyrose
650
+ sienna
651
+ lightcoral
652
+ orangered
653
+ navajowhite
654
+ lime
655
+ palegreen
656
+ burlywood
657
+ seashell
658
+ mediumspringgreen
659
+ fuchsia
660
+ papayawhip
661
+ blanchedalmond
662
+ peru
663
+ aquamarine
664
+ white
665
+ darkslategray
666
+ ivory
667
+ dodgerblue
668
+ lemonchiffon
669
+ chocolate
670
+ orange
671
+ forestgreen
672
+ slateblue
673
+ olive
674
+ mintcream
675
+ antiquewhite
676
+ darkorange
677
+ cadetblue
678
+ moccasin
679
+ limegreen
680
+ saddlebrown
681
+ darkslateblue
682
+ lightskyblue
683
+ deeppink
684
+ plum
685
+ aqua
686
+ darkgoldenrod
687
+ maroon
688
+ sandybrown
689
+ magenta
690
+ tan
691
+ rosybrown
692
+ pink
693
+ lightblue
694
+ palevioletred
695
+ mediumseagreen
696
+ dimgray
697
+ powderblue
698
+ seagreen
699
+ snow
700
+ mediumblue
701
+ midnightblue
702
+ paleturquoise
703
+ palegoldenrod
704
+ whitesmoke
705
+ darkorchid
706
+ salmon
707
+ lightslategray
708
+ lawngreen
709
+ lightgreen
710
+ tomato
711
+ hotpink
712
+ lightyellow
713
+ lavenderblush
714
+ linen
715
+ mediumaquamarine
716
+ green
717
+ blueviolet
718
+ peachpuff
719
+ ]
720
+ end
721
+
722
+ # source: http://www.w3.org/TR/CSS21/syndata.html#vendor-keyword-history
723
+ def self.vendor_prefixes
724
+ @vendor_prefixes ||=
725
+ Set.new %w[
726
+ -ah-
727
+ -atsc-
728
+ -hp-
729
+ -khtml-
730
+ -moz-
731
+ -ms-
732
+ -o-
733
+ -rim-
734
+ -ro-
735
+ -tc-
736
+ -wap-
737
+ -webkit-
738
+ -xv-
739
+ mso-
740
+ prince-
741
+ ]
742
+ end
743
+
744
+ state :root do
745
+ mixin :basics
746
+ rule /{/, Punctuation, :stanza
747
+ rule /:[:]?#{identifier}/, Name::Decorator
748
+ rule /\.#{identifier}/, Name::Class
749
+ rule /##{identifier}/, Name::Function
750
+ rule /@#{identifier}/, Keyword, :at_rule
751
+ rule identifier, Name::Tag
752
+ rule %r{[~^*!%&\[\]()<>|+=@:;,./?-]}, Operator
753
+ rule /"(\\\\|\\"|[^"])*"/, Str::Single
754
+ rule /'(\\\\|\\'|[^'])*'/, Str::Double
755
+ end
756
+
757
+ state :value do
758
+ mixin :basics
759
+ rule /url\(.*?\)/, Str::Other
760
+ rule /#[0-9a-f]{1,6}/i, Num # colors
761
+ 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)?/,
762
+ Num
763
+ rule %r{[\[\]():\/.,]}, Punctuation
764
+ rule /"(\\\\|\\"|[^"])*"/, Str::Single
765
+ rule /'(\\\\|\\'|[^'])*'/, Str::Double
766
+ rule(identifier) do |m|
767
+ if self.class.constants.include? m[0]
768
+ token Name::Constant
769
+ elsif self.class.builtins.include? m[0]
770
+ token Name::Builtin
771
+ else
772
+ token Name
773
+ end
774
+ end
775
+ end
776
+
777
+ state :at_rule do
778
+ rule /{(?=\s*#{identifier}\s*:)/m, Punctuation, :at_stanza
779
+ rule /{/, Punctuation, :at_body
780
+ rule /;/, Punctuation, :pop!
781
+ mixin :value
782
+ end
783
+
784
+ state :at_body do
785
+ mixin :at_content
786
+ mixin :root
787
+ end
788
+
789
+ state :at_stanza do
790
+ mixin :at_content
791
+ mixin :stanza
792
+ end
793
+
794
+ state :at_content do
795
+ rule /}/ do
796
+ token Punctuation
797
+ pop! 2
798
+ end
799
+ end
800
+
801
+ state :basics do
802
+ rule /\s+/m, Text
803
+ rule %r{/\*(?:.*?)\*/}m, Comment
804
+ end
805
+
806
+ state :stanza do
807
+ mixin :basics
808
+ rule /}/, Punctuation, :pop!
809
+ rule /(#{identifier})(\s*)(:)/m do |m|
810
+ name_tok =
811
+ if self.class.attributes.include? m[1]
812
+ Name::Label
813
+ elsif self.class.vendor_prefixes.any? do |p|
814
+ m[1].start_with?(p)
815
+ end
816
+ Name::Label
817
+ elsif m[1].start_with?("--")
818
+ # MAYU: This was added to highlight CSS variables.
819
+ Name::Constant
820
+ else
821
+ Name::Property
822
+ end
823
+
824
+ groups name_tok, Text, Punctuation
825
+
826
+ push :stanza_value
827
+ end
828
+ end
829
+
830
+ state :stanza_value do
831
+ rule /;/, Punctuation, :pop!
832
+ rule(/(?=})/) { pop! }
833
+ rule /!\s*important\b/, Comment::Preproc
834
+ rule /^@.*?$/, Comment::Preproc
835
+ mixin :value
836
+ end
837
+ end
838
+ end
839
+ end
840
+ end
841
+ end