OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 import operator | |
3 | |
4 | |
5 VERSION_INFO = (0, 8, 50) | |
6 | |
7 __project__ = PROJECT = __name__ | |
8 __version__ = VERSION = '.'.join(str(i) for i in VERSION_INFO) | |
9 __author__ = AUTHOR = "Kirill Klenov <horneds@gmail.com>" | |
10 __license__ = LICENSE = "GNU LGPL" | |
11 | |
12 | |
13 CONV = { | |
14 'size': { | |
15 'em': 13.0, | |
16 'px': 1.0 | |
17 }, | |
18 'length': { | |
19 'mm': 1.0, | |
20 'cm': 10.0, | |
21 'in': 25.4, | |
22 'pt': 25.4 / 72, | |
23 'pc': 25.4 / 6 | |
24 }, | |
25 'time': { | |
26 'ms': 1.0, | |
27 's': 1000.0 | |
28 }, | |
29 'freq': { | |
30 'hz': 1.0, | |
31 'khz': 1000.0 | |
32 }, | |
33 'any': { | |
34 '%': 1.0 / 100, | |
35 'deg': 1.0 / 360 | |
36 } | |
37 } | |
38 CONV_TYPE = {} | |
39 CONV_FACTOR = {} | |
40 for t, m in CONV.items(): | |
41 for k, f in m.items(): | |
42 CONV_TYPE[k] = t | |
43 CONV_FACTOR[k] = f | |
44 | |
45 OPRT = { | |
46 '^' : operator.__pow__, | |
47 '+' : operator.__add__, | |
48 '-' : operator.__sub__, | |
49 '*' : operator.__mul__, | |
50 '/' : operator.__div__, | |
51 '!' : operator.__neg__, | |
52 '<' : operator.__lt__, | |
53 '<=' : operator.__le__, | |
54 '>' : operator.__gt__, | |
55 '>=' : operator.__ge__, | |
56 '==' : operator.__eq__, | |
57 '=' : operator.__eq__, | |
58 '!=' : operator.__ne__, | |
59 '&': operator.__and__, | |
60 '|' : operator.__or__, | |
61 'and': lambda x,y: x and y, | |
62 'or': lambda x,y: x or y, | |
63 } | |
64 | |
65 ELEMENTS_OF_TYPE = { | |
66 'block': 'address, article, aside, blockquote, center, dd, dialog, dir, div,
dl, dt, fieldset, figure, footer, form, frameset, h1, h2, h3, h4, h5, h6, heade
r, hgroup, hr, isindex, menu, nav, noframes, noscript, ol, p, pre, section, ul', | |
67 'inline': 'a, abbr, acronym, b, basefont, bdo, big, br, cite, code, dfn, em,
font, i, img, input, kbd, label, q, s, samp, select, small, span, strike, stron
g, sub, sup, textarea, tt, u, var', | |
68 'table': 'table', | |
69 'list-item': 'li', | |
70 'table-row-group': 'tbody', | |
71 'table-header-group': 'thead', | |
72 'table-footer-group': 'tfoot', | |
73 'table-row': 'tr', | |
74 'table-cell': 'td, th', | |
75 } | |
76 | |
77 COLORS = { | |
78 'aliceblue': '#f0f8ff', | |
79 'antiquewhite': '#faebd7', | |
80 'aqua': '#00ffff', | |
81 'aquamarine': '#7fffd4', | |
82 'azure': '#f0ffff', | |
83 'beige': '#f5f5dc', | |
84 'bisque': '#ffe4c4', | |
85 'black': '#000000', | |
86 'blanchedalmond': '#ffebcd', | |
87 'blue': '#0000ff', | |
88 'blueviolet': '#8a2be2', | |
89 'brown': '#a52a2a', | |
90 'burlywood': '#deb887', | |
91 'cadetblue': '#5f9ea0', | |
92 'chartreuse': '#7fff00', | |
93 'chocolate': '#d2691e', | |
94 'coral': '#ff7f50', | |
95 'cornflowerblue': '#6495ed', | |
96 'cornsilk': '#fff8dc', | |
97 'crimson': '#dc143c', | |
98 'cyan': '#00ffff', | |
99 'darkblue': '#00008b', | |
100 'darkcyan': '#008b8b', | |
101 'darkgoldenrod': '#b8860b', | |
102 'darkgray': '#a9a9a9', | |
103 'darkgreen': '#006400', | |
104 'darkkhaki': '#bdb76b', | |
105 'darkmagenta': '#8b008b', | |
106 'darkolivegreen': '#556b2f', | |
107 'darkorange': '#ff8c00', | |
108 'darkorchid': '#9932cc', | |
109 'darkred': '#8b0000', | |
110 'darksalmon': '#e9967a', | |
111 'darkseagreen': '#8fbc8f', | |
112 'darkslateblue': '#483d8b', | |
113 'darkslategray': '#2f4f4f', | |
114 'darkturquoise': '#00ced1', | |
115 'darkviolet': '#9400d3', | |
116 'deeppink': '#ff1493', | |
117 'deepskyblue': '#00bfff', | |
118 'dimgray': '#696969', | |
119 'dodgerblue': '#1e90ff', | |
120 'firebrick': '#b22222', | |
121 'floralwhite': '#fffaf0', | |
122 'forestgreen': '#228b22', | |
123 'fuchsia': '#ff00ff', | |
124 'gainsboro': '#dcdcdc', | |
125 'ghostwhite': '#f8f8ff', | |
126 'gold': '#ffd700', | |
127 'goldenrod': '#daa520', | |
128 'gray': '#808080', | |
129 'green': '#008000', | |
130 'greenyellow': '#adff2f', | |
131 'honeydew': '#f0fff0', | |
132 'hotpink': '#ff69b4', | |
133 'indianred': '#cd5c5c', | |
134 'indigo': '#4b0082', | |
135 'ivory': '#fffff0', | |
136 'khaki': '#f0e68c', | |
137 'lavender': '#e6e6fa', | |
138 'lavenderblush': '#fff0f5', | |
139 'lawngreen': '#7cfc00', | |
140 'lemonchiffon': '#fffacd', | |
141 'lightblue': '#add8e6', | |
142 'lightcoral': '#f08080', | |
143 'lightcyan': '#e0ffff', | |
144 'lightgoldenrodyellow': '#fafad2', | |
145 'lightgreen': '#90ee90', | |
146 'lightgrey': '#d3d3d3', | |
147 'lightpink': '#ffb6c1', | |
148 'lightsalmon': '#ffa07a', | |
149 'lightseagreen': '#20b2aa', | |
150 'lightskyblue': '#87cefa', | |
151 'lightslategray': '#778899', | |
152 'lightsteelblue': '#b0c4de', | |
153 'lightyellow': '#ffffe0', | |
154 'lime': '#00ff00', | |
155 'limegreen': '#32cd32', | |
156 'linen': '#faf0e6', | |
157 'magenta': '#ff00ff', | |
158 'maroon': '#800000', | |
159 'mediumaquamarine': '#66cdaa', | |
160 'mediumblue': '#0000cd', | |
161 'mediumorchid': '#ba55d3', | |
162 'mediumpurple': '#9370db', | |
163 'mediumseagreen': '#3cb371', | |
164 'mediumslateblue': '#7b68ee', | |
165 'mediumspringgreen': '#00fa9a', | |
166 'mediumturquoise': '#48d1cc', | |
167 'mediumvioletred': '#c71585', | |
168 'midnightblue': '#191970', | |
169 'mintcream': '#f5fffa', | |
170 'mistyrose': '#ffe4e1', | |
171 'moccasin': '#ffe4b5', | |
172 'navajowhite': '#ffdead', | |
173 'navy': '#000080', | |
174 'oldlace': '#fdf5e6', | |
175 'olive': '#808000', | |
176 'olivedrab': '#6b8e23', | |
177 'orange': '#ffa500', | |
178 'orangered': '#ff4500', | |
179 'orchid': '#da70d6', | |
180 'palegoldenrod': '#eee8aa', | |
181 'palegreen': '#98fb98', | |
182 'paleturquoise': '#afeeee', | |
183 'palevioletred': '#db7093', | |
184 'papayawhip': '#ffefd5', | |
185 'peachpuff': '#ffdab9', | |
186 'peru': '#cd853f', | |
187 'pink': '#ffc0cb', | |
188 'plum': '#dda0dd', | |
189 'powderblue': '#b0e0e6', | |
190 'purple': '#800080', | |
191 'red': '#ff0000', | |
192 'rosybrown': '#bc8f8f', | |
193 'royalblue': '#4169e1', | |
194 'saddlebrown': '#8b4513', | |
195 'salmon': '#fa8072', | |
196 'sandybrown': '#f4a460', | |
197 'seagreen': '#2e8b57', | |
198 'seashell': '#fff5ee', | |
199 'sienna': '#a0522d', | |
200 'silver': '#c0c0c0', | |
201 'skyblue': '#87ceeb', | |
202 'slateblue': '#6a5acd', | |
203 'slategray': '#708090', | |
204 'snow': '#fffafa', | |
205 'springgreen': '#00ff7f', | |
206 'steelblue': '#4682b4', | |
207 'tan': '#d2b48c', | |
208 'teal': '#008080', | |
209 'thistle': '#d8bfd8', | |
210 'tomato': '#ff6347', | |
211 'turquoise': '#40e0d0', | |
212 'violet': '#ee82ee', | |
213 'wheat': '#f5deb3', | |
214 'white': '#ffffff', | |
215 'whitesmoke': '#f5f5f5', | |
216 'yellow': '#ffff00', | |
217 'yellowgreen': '#9acd32' | |
218 } | |
219 | |
220 SORTING = dict((v, k) for k, v in enumerate(( | |
221 | |
222 # Positioning | |
223 'position', | |
224 'top', | |
225 'right', | |
226 'bottom', | |
227 'left', | |
228 'z-index', | |
229 | |
230 # Box behavior and properties | |
231 'float', | |
232 'clear', | |
233 'display', | |
234 'visibility', | |
235 'overflow', | |
236 'overflow-x', | |
237 'overflow-y', | |
238 'overflow-style', | |
239 'zoom', | |
240 'clip', | |
241 'box-sizing', | |
242 'box-shadow', | |
243 '-webkit-box-shadow', | |
244 '-moz-box-shadow', | |
245 | |
246 # Sizing | |
247 'margin', | |
248 'margin-top', | |
249 'margin-right', | |
250 'margin-bottom', | |
251 'margin-left', | |
252 'padding', | |
253 'padding-top', | |
254 'padding-right', | |
255 'padding-bottom', | |
256 'padding-left', | |
257 'width', | |
258 'height', | |
259 'max-width', | |
260 'max-height', | |
261 'min-width', | |
262 'min-height', | |
263 | |
264 # Color appearance | |
265 'outline', | |
266 'outline-offset', | |
267 'outline-width', | |
268 'outline-style', | |
269 'outline-color', | |
270 'border', | |
271 'border-break', | |
272 'border-collapse', | |
273 'border-color', | |
274 'border-image', | |
275 '-webkit-border-image', | |
276 '-moz-border-image', | |
277 'border-top-image', | |
278 'border-right-image', | |
279 'border-bottom-image', | |
280 'border-left-image', | |
281 'border-corner-image', | |
282 'border-top-left-image', | |
283 'border-top-right-image', | |
284 'border-bottom-right-image', | |
285 'border-bottom-left-image', | |
286 'border-fit', | |
287 'border-length', | |
288 'border-spacing', | |
289 'border-style', | |
290 'border-width', | |
291 'border-top', | |
292 'border-top-width', | |
293 'border-top-style', | |
294 'border-top-color', | |
295 'border-right', | |
296 'border-right-width', | |
297 'border-right-style', | |
298 'border-right-color', | |
299 'border-bottom', | |
300 'border-bottom-width', | |
301 'border-bottom-style', | |
302 'border-bottom-color', | |
303 'border-left', | |
304 'border-left-width', | |
305 'border-left-style', | |
306 'border-left-color', | |
307 '-webkit-border-radius', | |
308 '-moz-border-radius', | |
309 '-khtml-border-radius', | |
310 'border-radius', | |
311 'border-top-right-radius', | |
312 'border-top-left-radius', | |
313 'border-bottom-right-radius', | |
314 'border-bottom-left-radius', | |
315 'background', | |
316 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader', | |
317 'background-color', | |
318 'background-image', | |
319 'background-repeat', | |
320 'background-attachment', | |
321 'background-position', | |
322 'background-position-x', | |
323 'background-position-y', | |
324 'background-break', | |
325 'background-clip', | |
326 'background-origin', | |
327 'background-size', | |
328 'color', | |
329 | |
330 # Special content types | |
331 'table-layout', | |
332 'caption-side', | |
333 'empty-cells', | |
334 'list-style', | |
335 'list-style-position', | |
336 'list-style-type', | |
337 'list-style-image', | |
338 'quotes', | |
339 'content', | |
340 'counter-increment', | |
341 'counter-reset', | |
342 | |
343 # Text | |
344 'direction', | |
345 'vertical-align', | |
346 'text-align', | |
347 'text-align-last', | |
348 'text-decoration', | |
349 'text-emphasis', | |
350 'text-height', | |
351 'text-indent', | |
352 'text-justify', | |
353 'text-outline', | |
354 'text-replace', | |
355 'text-transform', | |
356 'text-wrap', | |
357 'text-shadow', | |
358 'line-height', | |
359 'white-space', | |
360 'white-space-collapse', | |
361 'word-break', | |
362 'word-spacing', | |
363 'word-wrap', | |
364 'letter-spacing', | |
365 'font', | |
366 'font-weight', | |
367 'font-style', | |
368 'font-variant', | |
369 'font-size', | |
370 'font-size-adjust', | |
371 'font-family', | |
372 'font-effect', | |
373 'font-emphasize', | |
374 'font-emphasize-position', | |
375 'font-emphasize-style', | |
376 'font-smooth', | |
377 'font-stretch', | |
378 'src', | |
379 | |
380 # Visual properties | |
381 'opacity', | |
382 'filter:progid:DXImageTransform.Microsoft.Alpha', | |
383 '-ms-filter:progid:DXImageTransform.Microsoft.Alpha', | |
384 'transitions', | |
385 'resize', | |
386 'cursor', | |
387 | |
388 # Print | |
389 'page-break-before', | |
390 'page-break-inside', | |
391 'page-break-after', | |
392 'orphans', | |
393 'widows', | |
394 | |
395 # CSS3, -webkit and -epub missing parts. | |
396 'ms-box-sizing', | |
397 'text-rendering', | |
398 'text-overflow', | |
399 'min-device-width', | |
400 'max-device-width', | |
401 'image-rendering', | |
402 'pointer-events', | |
403 'speak', | |
404 'unicode-bidi', | |
405 'unicode-range', | |
406 '-webkit-animation', | |
407 '-webkit-animation-delay', | |
408 '-webkit-animation-direction', | |
409 '-webkit-animation-duration', | |
410 '-webkit-animation-fill-mode', | |
411 '-webkit-animation-iteration-count', | |
412 '-webkit-animation-name', | |
413 '-webkit-animation-play-state', | |
414 '-webkit-animation-timing-function', | |
415 '-webkit-appearance', | |
416 '-webkit-backface-visibility', | |
417 '-webkit-background-clip', | |
418 '-webkit-background-composite', | |
419 '-webkit-background-origin', | |
420 '-webkit-background-size', | |
421 '-webkit-border-after', | |
422 '-webkit-border-after-color', | |
423 '-webkit-border-after-style', | |
424 '-webkit-border-after-width', | |
425 '-webkit-border-before', | |
426 '-webkit-border-before-color', | |
427 '-webkit-border-before-style', | |
428 '-webkit-border-before-width', | |
429 '-webkit-border-end', | |
430 '-webkit-border-end-color', | |
431 '-webkit-border-end-style', | |
432 '-webkit-border-end-width', | |
433 '-webkit-border-fit', | |
434 '-webkit-border-horizontal-spacing', | |
435 '-webkit-border-image', | |
436 '-webkit-border-bottom-left-radius', | |
437 '-webkit-border-bottom-right-radius', | |
438 '-webkit-border-top-left-radius', | |
439 '-webkit-border-top-right-radius', | |
440 '-webkit-border-radius', | |
441 '-webkit-border-start', | |
442 '-webkit-border-start-color', | |
443 '-webkit-border-start-style', | |
444 '-webkit-border-start-width', | |
445 '-webkit-border-vertical-spacing', | |
446 '-webkit-box-align', | |
447 '-webkit-box-direction', | |
448 '-webkit-box-flex', | |
449 '-webkit-box-flex-group', | |
450 '-webkit-box-lines', | |
451 '-webkit-box-ordinal-group', | |
452 '-webkit-box-orient', | |
453 '-webkit-box-pack', | |
454 '-webkit-box-reflect', | |
455 '-webkit-box-shadow', | |
456 '-webkit-box-sizing', | |
457 '-webkit-color-correction', | |
458 '-webkit-column-break-after', | |
459 '-webkit-column-break-before', | |
460 '-webkit-column-break-inside', | |
461 '-webkit-column-count', | |
462 '-webkit-column-gap', | |
463 '-webkit-column-rule', | |
464 '-webkit-column-rule-color', | |
465 '-webkit-column-rule-style', | |
466 '-webkit-column-rule-width', | |
467 '-webkit-column-span', | |
468 '-webkit-column-width', | |
469 '-webkit-columns', | |
470 '-webkit-flex-order', | |
471 '-webkit-flex-pack', | |
472 '-webkit-font-feature-settings', | |
473 '-webkit-font-smoothing', | |
474 '-webkit-font-size-delta', | |
475 '-webkit-highlight', | |
476 '-webkit-hyphenate-character', | |
477 '-webkit-hyphenate-limit-after', | |
478 '-webkit-hyphenate-limit-before', | |
479 '-webkit-hyphens', | |
480 '-webkit-line-box-contain', | |
481 '-webkit-line-break', | |
482 '-webkit-line-clamp', | |
483 '-webkit-locale', | |
484 '-webkit-logical-width', | |
485 '-webkit-logical-height', | |
486 '-webkit-margin-after-collapse', | |
487 '-webkit-margin-before-collapse', | |
488 '-webkit-margin-bottom-collapse', | |
489 '-webkit-margin-top-collapse', | |
490 '-webkit-margin-collapse', | |
491 '-webkit-margin-after', | |
492 '-webkit-margin-before', | |
493 '-webkit-margin-end', | |
494 '-webkit-margin-start', | |
495 '-webkit-marquee', | |
496 '-webkit-marquee-direction', | |
497 '-webkit-marquee-increment', | |
498 '-webkit-marquee-repetition', | |
499 '-webkit-marquee-speed', | |
500 '-webkit-marquee-style', | |
501 '-webkit-mask', | |
502 '-webkit-mask-attachment', | |
503 '-webkit-mask-box-image', | |
504 '-webkit-mask-clip', | |
505 '-webkit-mask-composite', | |
506 '-webkit-mask-image', | |
507 '-webkit-mask-origin', | |
508 '-webkit-mask-position', | |
509 '-webkit-mask-position-x', | |
510 '-webkit-mask-position-y', | |
511 '-webkit-mask-repeat', | |
512 '-webkit-mask-repeat-x', | |
513 '-webkit-mask-repeat-y', | |
514 '-webkit-mask-size', | |
515 '-webkit-match-nearest-mail-blockquote-color', | |
516 '-webkit-max-logical-width', | |
517 '-webkit-max-logical-height', | |
518 '-webkit-min-logical-width', | |
519 '-webkit-min-logical-height', | |
520 '-webkit-nbsp-mode', | |
521 '-webkit-opacity', | |
522 '-webkit-padding-after', | |
523 '-webkit-padding-before', | |
524 '-webkit-padding-end', | |
525 '-webkit-padding-start', | |
526 '-webkit-perspective', | |
527 '-webkit-perspective-origin', | |
528 '-webkit-perspective-origin-x', | |
529 '-webkit-perspective-origin-y', | |
530 '-webkit-rtl-ordering', | |
531 '-webkit-text-combine', | |
532 '-webkit-text-decorations-in-effect', | |
533 '-webkit-text-emphasis', | |
534 '-webkit-text-emphasis-color', | |
535 '-webkit-text-emphasis-position', | |
536 '-webkit-text-emphasis-style', | |
537 '-webkit-text-fill-color', | |
538 '-webkit-text-orientation', | |
539 '-webkit-text-security', | |
540 '-webkit-text-size-adjust', | |
541 '-webkit-text-stroke', | |
542 '-webkit-text-stroke-color', | |
543 '-webkit-text-stroke-width', | |
544 '-webkit-transform', | |
545 '-webkit-transform-origin', | |
546 '-webkit-transform-origin-x', | |
547 '-webkit-transform-origin-y', | |
548 '-webkit-transform-origin-z', | |
549 '-webkit-transform-style', | |
550 '-webkit-transition', | |
551 '-webkit-transition-delay', | |
552 '-webkit-transition-duration', | |
553 '-webkit-transition-property', | |
554 '-webkit-transition-timing-function', | |
555 '-webkit-user-drag', | |
556 '-webkit-user-modify', | |
557 '-webkit-user-select', | |
558 '-webkit-flow', | |
559 '-webkit-content-order', | |
560 '-webkit-region-overflow', | |
561 '-webkit-wrap-shape', | |
562 '-webkit-writing-mode', | |
563 '-webkit-region-break-after', | |
564 '-webkit-region-break-before', | |
565 '-webkit-region-break-inside', | |
566 '-epub-caption-side', | |
567 '-epub-hyphens', | |
568 '-epub-text-combine', | |
569 '-epub-text-emphasis', | |
570 '-epub-text-emphasis-color', | |
571 '-epub-text-emphasis-style', | |
572 '-epub-text-orientation', | |
573 '-epub-text-transform', | |
574 '-epub-word-break', | |
575 '-epub-writing-mode', | |
576 | |
577 # TODO(terry): Should we look at prefixing grid properties with -dart-. | |
578 # Also, look at changing display: -dart-grid with | |
579 # layout: grid? | |
580 # Dart Layout Engine | |
581 'grid-cell', | |
582 'grid-column', | |
583 'grid-colums', | |
584 'grid-layer', | |
585 'grid-template', | |
586 'grid-rows', | |
587 'grid-row', | |
588 'grid-row-align', | |
589 'grid-row-span', | |
590 'grid-row-sizing', | |
591 'grid-columns', | |
592 'grid-column', | |
593 'grid-column-align', | |
594 'grid-column-span', | |
595 'grid-column-sizing', | |
596 '-dart-grid', | |
597 '' | |
598 ))) | |
599 | |
600 | |
601 class ScssException(Exception): | |
602 pass | |
OLD | NEW |