stylus-source 0.15.4

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 (113) hide show
  1. data/.DS_Store +0 -0
  2. data/README.md +3 -0
  3. data/lib/.DS_Store +0 -0
  4. data/lib/node_modules/cssom/.idea/CSSOM.iml +9 -0
  5. data/lib/node_modules/cssom/.idea/dictionaries/nv.xml +3 -0
  6. data/lib/node_modules/cssom/.idea/encodings.xml +5 -0
  7. data/lib/node_modules/cssom/.idea/misc.xml +17 -0
  8. data/lib/node_modules/cssom/.idea/modules.xml +9 -0
  9. data/lib/node_modules/cssom/.idea/projectCodeStyle.xml +82 -0
  10. data/lib/node_modules/cssom/.idea/vcs.xml +8 -0
  11. data/lib/node_modules/cssom/.idea/workspace.xml +467 -0
  12. data/lib/node_modules/cssom/.livereload +19 -0
  13. data/lib/node_modules/cssom/Jakefile +37 -0
  14. data/lib/node_modules/cssom/README.mdown +33 -0
  15. data/lib/node_modules/cssom/Rakefile +23 -0
  16. data/lib/node_modules/cssom/docs/.livereload +19 -0
  17. data/lib/node_modules/cssom/docs/bar.css +3 -0
  18. data/lib/node_modules/cssom/docs/demo.css +0 -0
  19. data/lib/node_modules/cssom/docs/foo.css +4 -0
  20. data/lib/node_modules/cssom/docs/parse.html +170 -0
  21. data/lib/node_modules/cssom/docs/parse2.html +431 -0
  22. data/lib/node_modules/cssom/index.html +100 -0
  23. data/lib/node_modules/cssom/lib/CSSImportRule.js +34 -0
  24. data/lib/node_modules/cssom/lib/CSSMediaRule.js +38 -0
  25. data/lib/node_modules/cssom/lib/CSSOM.js +3 -0
  26. data/lib/node_modules/cssom/lib/CSSRule.js +38 -0
  27. data/lib/node_modules/cssom/lib/CSSStyleDeclaration.js +130 -0
  28. data/lib/node_modules/cssom/lib/CSSStyleRule.js +187 -0
  29. data/lib/node_modules/cssom/lib/CSSStyleSheet.js +85 -0
  30. data/lib/node_modules/cssom/lib/MediaList.js +61 -0
  31. data/lib/node_modules/cssom/lib/StyleSheet.js +15 -0
  32. data/lib/node_modules/cssom/lib/clone.js +69 -0
  33. data/lib/node_modules/cssom/lib/index.js +10 -0
  34. data/lib/node_modules/cssom/lib/parse.js +195 -0
  35. data/lib/node_modules/cssom/media.html +17 -0
  36. data/lib/node_modules/cssom/package.json +30 -0
  37. data/lib/node_modules/cssom/plugins/toHTML.js +32 -0
  38. data/lib/node_modules/cssom/server/index.html +22 -0
  39. data/lib/node_modules/cssom/server/index.js +21 -0
  40. data/lib/node_modules/cssom/shorthands.html +21 -0
  41. data/lib/node_modules/cssom/test/CSSStyleDeclaration.test.js +35 -0
  42. data/lib/node_modules/cssom/test/CSSStyleRule.test.js +12 -0
  43. data/lib/node_modules/cssom/test/CSSStyleSheet.test.js +16 -0
  44. data/lib/node_modules/cssom/test/MediaList.test.js +21 -0
  45. data/lib/node_modules/cssom/test/clone.test.js +38 -0
  46. data/lib/node_modules/cssom/test/fixtures/dummy.css +3 -0
  47. data/lib/node_modules/cssom/test/helper.js +97 -0
  48. data/lib/node_modules/cssom/test/index.html +42 -0
  49. data/lib/node_modules/cssom/test/parse.test.js +346 -0
  50. data/lib/node_modules/cssom/test/vendor/qunit.css +189 -0
  51. data/lib/node_modules/cssom/test/vendor/qunit.js +1341 -0
  52. data/lib/node_modules/growl/History.md +16 -0
  53. data/lib/node_modules/growl/Readme.md +74 -0
  54. data/lib/node_modules/growl/lib/growl.js +82 -0
  55. data/lib/node_modules/growl/package.json +6 -0
  56. data/lib/node_modules/growl/test.js +17 -0
  57. data/lib/stylus/colors.js +156 -0
  58. data/lib/stylus/convert/css.js +130 -0
  59. data/lib/stylus/errors.js +58 -0
  60. data/lib/stylus/functions/image.js +120 -0
  61. data/lib/stylus/functions/index.js +722 -0
  62. data/lib/stylus/functions/index.styl +123 -0
  63. data/lib/stylus/functions/url.js +98 -0
  64. data/lib/stylus/lexer.js +728 -0
  65. data/lib/stylus/middleware.js +223 -0
  66. data/lib/stylus/nodes/arguments.js +65 -0
  67. data/lib/stylus/nodes/binop.js +54 -0
  68. data/lib/stylus/nodes/block.js +99 -0
  69. data/lib/stylus/nodes/boolean.js +103 -0
  70. data/lib/stylus/nodes/call.js +57 -0
  71. data/lib/stylus/nodes/charset.js +42 -0
  72. data/lib/stylus/nodes/comment.js +32 -0
  73. data/lib/stylus/nodes/each.js +56 -0
  74. data/lib/stylus/nodes/expression.js +168 -0
  75. data/lib/stylus/nodes/fontface.js +55 -0
  76. data/lib/stylus/nodes/function.js +104 -0
  77. data/lib/stylus/nodes/group.js +79 -0
  78. data/lib/stylus/nodes/hsla.js +256 -0
  79. data/lib/stylus/nodes/ident.js +127 -0
  80. data/lib/stylus/nodes/if.js +55 -0
  81. data/lib/stylus/nodes/import.js +30 -0
  82. data/lib/stylus/nodes/index.js +52 -0
  83. data/lib/stylus/nodes/jsliteral.js +32 -0
  84. data/lib/stylus/nodes/keyframes.js +78 -0
  85. data/lib/stylus/nodes/literal.js +92 -0
  86. data/lib/stylus/nodes/media.js +42 -0
  87. data/lib/stylus/nodes/node.js +209 -0
  88. data/lib/stylus/nodes/null.js +72 -0
  89. data/lib/stylus/nodes/page.js +43 -0
  90. data/lib/stylus/nodes/params.js +72 -0
  91. data/lib/stylus/nodes/property.js +72 -0
  92. data/lib/stylus/nodes/return.js +44 -0
  93. data/lib/stylus/nodes/rgba.js +335 -0
  94. data/lib/stylus/nodes/root.js +50 -0
  95. data/lib/stylus/nodes/selector.js +57 -0
  96. data/lib/stylus/nodes/string.js +120 -0
  97. data/lib/stylus/nodes/ternary.js +51 -0
  98. data/lib/stylus/nodes/unaryop.js +46 -0
  99. data/lib/stylus/nodes/unit.js +207 -0
  100. data/lib/stylus/parser.js +1514 -0
  101. data/lib/stylus/renderer.js +157 -0
  102. data/lib/stylus/source.rb +7 -0
  103. data/lib/stylus/stack/frame.js +66 -0
  104. data/lib/stylus/stack/index.js +146 -0
  105. data/lib/stylus/stack/scope.js +53 -0
  106. data/lib/stylus/stylus.js +102 -0
  107. data/lib/stylus/token.js +53 -0
  108. data/lib/stylus/utils.js +237 -0
  109. data/lib/stylus/visitor/compiler.js +472 -0
  110. data/lib/stylus/visitor/evaluator.js +1070 -0
  111. data/lib/stylus/visitor/index.js +31 -0
  112. data/stylus-source.gemspec +15 -0
  113. metadata +158 -0
@@ -0,0 +1,79 @@
1
+
2
+ /*!
3
+ * Stylus - Group
4
+ * Copyright(c) 2010 LearnBoost <dev@learnboost.com>
5
+ * MIT Licensed
6
+ */
7
+
8
+ /**
9
+ * Module dependencies.
10
+ */
11
+
12
+ var Node = require('./node');
13
+
14
+ /**
15
+ * Initialize a new `Group`.
16
+ *
17
+ * @api public
18
+ */
19
+
20
+ var Group = module.exports = function Group(){
21
+ Node.call(this);
22
+ this.nodes = [];
23
+ };
24
+
25
+ /**
26
+ * Inherit from `Node.prototype`.
27
+ */
28
+
29
+ Group.prototype.__proto__ = Node.prototype;
30
+
31
+ /**
32
+ * Push the given `selector` node.
33
+ *
34
+ * @param {Selector} selector
35
+ * @api public
36
+ */
37
+
38
+ Group.prototype.push = function(selector){
39
+ this.nodes.push(selector);
40
+ };
41
+
42
+ /**
43
+ * Return this set's `Block`.
44
+ */
45
+
46
+ Group.prototype.__defineGetter__('block', function(){
47
+ return this.nodes[0].block;
48
+ });
49
+
50
+ /**
51
+ * Assign `block` to each selector in this set.
52
+ *
53
+ * @param {Block} block
54
+ * @api public
55
+ */
56
+
57
+ Group.prototype.__defineSetter__('block', function(block){
58
+ for (var i = 0, len = this.nodes.length; i < len; ++i) {
59
+ this.nodes[i].block = block;
60
+ }
61
+ });
62
+
63
+ /**
64
+ * Return a clone of this node.
65
+ *
66
+ * @return {Node}
67
+ * @api public
68
+ */
69
+
70
+ Group.prototype.clone = function(){
71
+ var clone = new Group;
72
+ clone.lineno = this.lineno;
73
+ this.nodes.forEach(function(node){
74
+ clone.push(node.clone());
75
+ });
76
+ clone.filename = this.filename;
77
+ clone.block = this.block.clone();
78
+ return clone;
79
+ };
@@ -0,0 +1,256 @@
1
+
2
+ /*!
3
+ * Stylus - HSLA
4
+ * Copyright(c) 2010 LearnBoost <dev@learnboost.com>
5
+ * MIT Licensed
6
+ */
7
+
8
+ /**
9
+ * Module dependencies.
10
+ */
11
+
12
+ var Node = require('./node')
13
+ , nodes = require('./');
14
+
15
+ /**
16
+ * Initialize a new `HSLA` with the given h,s,l,a component values.
17
+ *
18
+ * @param {Number} h
19
+ * @param {Number} s
20
+ * @param {Number} l
21
+ * @param {Number} a
22
+ * @api public
23
+ */
24
+
25
+ var HSLA = exports = module.exports = function HSLA(h,s,l,a){
26
+ Node.call(this);
27
+ this.h = clampDegrees(h);
28
+ this.s = clampPercentage(s);
29
+ this.l = clampPercentage(l);
30
+ this.a = clampAlpha(a);
31
+ this.hsla = this;
32
+ };
33
+
34
+ /**
35
+ * Inherit from `Node.prototype`.
36
+ */
37
+
38
+ HSLA.prototype.__proto__ = Node.prototype;
39
+
40
+ /**
41
+ * Return hsla(n,n,n,n).
42
+ *
43
+ * @return {String}
44
+ * @api public
45
+ */
46
+
47
+ HSLA.prototype.toString = function(){
48
+ return 'hsla('
49
+ + this.h + ','
50
+ + this.s.toFixed(0) + ','
51
+ + this.l.toFixed(0) + ','
52
+ + this.a + ')';
53
+ };
54
+
55
+ /**
56
+ * Return a clone of this node.
57
+ *
58
+ * @return {Node}
59
+ * @api public
60
+ */
61
+
62
+ HSLA.prototype.clone = function(){
63
+ var clone = new HSLA(
64
+ this.h
65
+ , this.s
66
+ , this.l
67
+ , this.a);
68
+ clone.lineno = this.lineno;
69
+ clone.filename = this.filename;
70
+ return clone;
71
+ };
72
+
73
+ /**
74
+ * Return rgba `RGBA` representation.
75
+ *
76
+ * @return {RGBA}
77
+ * @api public
78
+ */
79
+
80
+ HSLA.prototype.__defineGetter__('rgba', function(){
81
+ return nodes.RGBA.fromHSLA(this);
82
+ });
83
+
84
+ /**
85
+ * Return hash.
86
+ *
87
+ * @return {String}
88
+ * @api public
89
+ */
90
+
91
+ HSLA.prototype.__defineGetter__('hash', function(){
92
+ return this.rgba.toString();
93
+ });
94
+
95
+ /**
96
+ * Add h,s,l to the current component values.
97
+ *
98
+ * @param {Number} h
99
+ * @param {Number} s
100
+ * @param {Number} l
101
+ * @return {HSLA} new node
102
+ * @api public
103
+ */
104
+
105
+ HSLA.prototype.add = function(h,s,l){
106
+ return new HSLA(
107
+ this.h + h
108
+ , this.s + s
109
+ , this.l + l
110
+ , this.a);
111
+ };
112
+
113
+ /**
114
+ * Subtract h,s,l from the current component values.
115
+ *
116
+ * @param {Number} h
117
+ * @param {Number} s
118
+ * @param {Number} l
119
+ * @return {HSLA} new node
120
+ * @api public
121
+ */
122
+
123
+ HSLA.prototype.sub = function(h,s,l){
124
+ return this.add(-h, -s, -l);
125
+ };
126
+
127
+ /**
128
+ * Operate on `right` with the given `op`.
129
+ *
130
+ * @param {String} op
131
+ * @param {Node} right
132
+ * @return {Node}
133
+ * @api public
134
+ */
135
+
136
+ HSLA.prototype.operate = function(op, right){
137
+ switch (op) {
138
+ case '==':
139
+ case '!=':
140
+ case '<=':
141
+ case '>=':
142
+ case '<':
143
+ case '>':
144
+ case 'is a':
145
+ case '||':
146
+ case '&&':
147
+ return this.rgba.operate(op, right);
148
+ default:
149
+ return this.rgba.operate(op, right).hsla;
150
+ }
151
+ };
152
+
153
+ /**
154
+ * Return `HSLA` representation of the given `color`.
155
+ *
156
+ * @param {RGBA} color
157
+ * @return {HSLA}
158
+ * @api public
159
+ */
160
+
161
+ exports.fromRGBA = function(rgba){
162
+ var r = rgba.r / 255
163
+ , g = rgba.g / 255
164
+ , b = rgba.b / 255
165
+ , a = rgba.a;
166
+
167
+ var min = Math.min(r,g,b)
168
+ , max = Math.max(r,g,b)
169
+ , l = (max + min) / 2
170
+ , d = max - min
171
+ , h, s;
172
+
173
+ switch (max) {
174
+ case min: h = 0; break;
175
+ case r: h = 60 * (g-b) / d; break;
176
+ case g: h = 60 * (b-r) / d + 120; break;
177
+ case b: h = 60 * (r-g) / d + 240; break;
178
+ }
179
+
180
+ if (max == min) {
181
+ s = 0;
182
+ } else if (l < .5) {
183
+ s = d / (2 * l);
184
+ } else {
185
+ s = d / (2 - 2 * l);
186
+ }
187
+
188
+ h %= 360;
189
+ s *= 100;
190
+ l *= 100;
191
+
192
+ return new HSLA(h,s,l,a);
193
+ };
194
+
195
+ /**
196
+ * Adjust lightness by `percent`.
197
+ *
198
+ * @param {Number} percent
199
+ * @return {HSLA} for chaining
200
+ * @api public
201
+ */
202
+
203
+ HSLA.prototype.adjustLightness = function(percent){
204
+ this.l = clampPercentage(this.l + this.l * (percent / 100));
205
+ return this;
206
+ };
207
+
208
+ /**
209
+ * Adjust hue by `deg`.
210
+ *
211
+ * @param {Number} deg
212
+ * @return {HSLA} for chaining
213
+ * @api public
214
+ */
215
+
216
+ HSLA.prototype.adjustHue = function(deg){
217
+ this.h = clampDegrees(this.h + deg);
218
+ return this;
219
+ };
220
+
221
+ /**
222
+ * Clamp degree `n` >= 0 and <= 360.
223
+ *
224
+ * @param {Number} n
225
+ * @return {Number}
226
+ * @api private
227
+ */
228
+
229
+ function clampDegrees(n) {
230
+ n = n % 360;
231
+ return n >= 0 ? n : 360 + n;
232
+ }
233
+
234
+ /**
235
+ * Clamp percentage `n` >= 0 and <= 100.
236
+ *
237
+ * @param {Number} n
238
+ * @return {Number}
239
+ * @api private
240
+ */
241
+
242
+ function clampPercentage(n) {
243
+ return Math.max(0, Math.min(n, 100));
244
+ }
245
+
246
+ /**
247
+ * Clamp alpha `n` >= 0 and <= 1.
248
+ *
249
+ * @param {Number} n
250
+ * @return {Number}
251
+ * @api private
252
+ */
253
+
254
+ function clampAlpha(n) {
255
+ return Math.max(0, Math.min(n, 1));
256
+ }
@@ -0,0 +1,127 @@
1
+
2
+ /*!
3
+ * Stylus - Ident
4
+ * Copyright(c) 2010 LearnBoost <dev@learnboost.com>
5
+ * MIT Licensed
6
+ */
7
+
8
+ /**
9
+ * Module dependencies.
10
+ */
11
+
12
+ var Node = require('./node')
13
+ , nodes = require('./');
14
+
15
+ /**
16
+ * Initialize a new `Ident` by `name` with the given `val` node.
17
+ *
18
+ * @param {String} name
19
+ * @param {Node} val
20
+ * @api public
21
+ */
22
+
23
+ var Ident = module.exports = function Ident(name, val){
24
+ Node.call(this);
25
+ this.name = name;
26
+ this.string = name;
27
+ this.val = val || nodes.null;
28
+ };
29
+
30
+ /**
31
+ * Check if the variable has a value.
32
+ *
33
+ * @return {Boolean}
34
+ * @api public
35
+ */
36
+
37
+ Ident.prototype.__defineGetter__('isEmpty', function(){
38
+ return undefined == this.val;
39
+ });
40
+
41
+ /**
42
+ * Return hash.
43
+ *
44
+ * @return {String}
45
+ * @api public
46
+ */
47
+
48
+ Ident.prototype.__defineGetter__('hash', function(){
49
+ return this.name;
50
+ });
51
+
52
+ /**
53
+ * Inherit from `Node.prototype`.
54
+ */
55
+
56
+ Ident.prototype.__proto__ = Node.prototype;
57
+
58
+ /**
59
+ * Return a clone of this node.
60
+ *
61
+ * @return {Node}
62
+ * @api public
63
+ */
64
+
65
+ Ident.prototype.clone = function(){
66
+ var clone = new Ident(this.name, this.val.clone());
67
+ clone.lineno = this.lineno;
68
+ clone.filename = this.filename;
69
+ clone.property = this.property;
70
+ return clone;
71
+ };
72
+
73
+ /**
74
+ * Return <name>.
75
+ *
76
+ * @return {String}
77
+ * @api public
78
+ */
79
+
80
+ Ident.prototype.toString = function(){
81
+ return this.name;
82
+ };
83
+
84
+ /**
85
+ * Coerce `other` to an ident.
86
+ *
87
+ * @param {Node} other
88
+ * @return {String}
89
+ * @api public
90
+ */
91
+
92
+ Ident.prototype.coerce = function(other){
93
+ switch (other.nodeName) {
94
+ case 'ident':
95
+ case 'string':
96
+ case 'literal':
97
+ return new Ident(other.string);
98
+ default:
99
+ return Node.prototype.coerce.call(this, other);
100
+ }
101
+ };
102
+
103
+ /**
104
+ * Operate on `right` with the given `op`.
105
+ *
106
+ * @param {String} op
107
+ * @param {Node} right
108
+ * @return {Node}
109
+ * @api public
110
+ */
111
+
112
+ Ident.prototype.operate = function(op, right){
113
+ var val = right.first;
114
+ switch (op) {
115
+ case '-':
116
+ if ('unit' == val.nodeName) {
117
+ var expr = new nodes.Expression;
118
+ val.val = -val.val;
119
+ expr.push(this);
120
+ expr.push(val);
121
+ return expr;
122
+ }
123
+ case '+':
124
+ return new nodes.Ident(this.string + this.coerce(val).string);
125
+ }
126
+ return Node.prototype.operate.call(this, op, right);
127
+ };