stylus-source 0.15.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.DS_Store +0 -0
- data/README.md +3 -0
- data/lib/.DS_Store +0 -0
- data/lib/node_modules/cssom/.idea/CSSOM.iml +9 -0
- data/lib/node_modules/cssom/.idea/dictionaries/nv.xml +3 -0
- data/lib/node_modules/cssom/.idea/encodings.xml +5 -0
- data/lib/node_modules/cssom/.idea/misc.xml +17 -0
- data/lib/node_modules/cssom/.idea/modules.xml +9 -0
- data/lib/node_modules/cssom/.idea/projectCodeStyle.xml +82 -0
- data/lib/node_modules/cssom/.idea/vcs.xml +8 -0
- data/lib/node_modules/cssom/.idea/workspace.xml +467 -0
- data/lib/node_modules/cssom/.livereload +19 -0
- data/lib/node_modules/cssom/Jakefile +37 -0
- data/lib/node_modules/cssom/README.mdown +33 -0
- data/lib/node_modules/cssom/Rakefile +23 -0
- data/lib/node_modules/cssom/docs/.livereload +19 -0
- data/lib/node_modules/cssom/docs/bar.css +3 -0
- data/lib/node_modules/cssom/docs/demo.css +0 -0
- data/lib/node_modules/cssom/docs/foo.css +4 -0
- data/lib/node_modules/cssom/docs/parse.html +170 -0
- data/lib/node_modules/cssom/docs/parse2.html +431 -0
- data/lib/node_modules/cssom/index.html +100 -0
- data/lib/node_modules/cssom/lib/CSSImportRule.js +34 -0
- data/lib/node_modules/cssom/lib/CSSMediaRule.js +38 -0
- data/lib/node_modules/cssom/lib/CSSOM.js +3 -0
- data/lib/node_modules/cssom/lib/CSSRule.js +38 -0
- data/lib/node_modules/cssom/lib/CSSStyleDeclaration.js +130 -0
- data/lib/node_modules/cssom/lib/CSSStyleRule.js +187 -0
- data/lib/node_modules/cssom/lib/CSSStyleSheet.js +85 -0
- data/lib/node_modules/cssom/lib/MediaList.js +61 -0
- data/lib/node_modules/cssom/lib/StyleSheet.js +15 -0
- data/lib/node_modules/cssom/lib/clone.js +69 -0
- data/lib/node_modules/cssom/lib/index.js +10 -0
- data/lib/node_modules/cssom/lib/parse.js +195 -0
- data/lib/node_modules/cssom/media.html +17 -0
- data/lib/node_modules/cssom/package.json +30 -0
- data/lib/node_modules/cssom/plugins/toHTML.js +32 -0
- data/lib/node_modules/cssom/server/index.html +22 -0
- data/lib/node_modules/cssom/server/index.js +21 -0
- data/lib/node_modules/cssom/shorthands.html +21 -0
- data/lib/node_modules/cssom/test/CSSStyleDeclaration.test.js +35 -0
- data/lib/node_modules/cssom/test/CSSStyleRule.test.js +12 -0
- data/lib/node_modules/cssom/test/CSSStyleSheet.test.js +16 -0
- data/lib/node_modules/cssom/test/MediaList.test.js +21 -0
- data/lib/node_modules/cssom/test/clone.test.js +38 -0
- data/lib/node_modules/cssom/test/fixtures/dummy.css +3 -0
- data/lib/node_modules/cssom/test/helper.js +97 -0
- data/lib/node_modules/cssom/test/index.html +42 -0
- data/lib/node_modules/cssom/test/parse.test.js +346 -0
- data/lib/node_modules/cssom/test/vendor/qunit.css +189 -0
- data/lib/node_modules/cssom/test/vendor/qunit.js +1341 -0
- data/lib/node_modules/growl/History.md +16 -0
- data/lib/node_modules/growl/Readme.md +74 -0
- data/lib/node_modules/growl/lib/growl.js +82 -0
- data/lib/node_modules/growl/package.json +6 -0
- data/lib/node_modules/growl/test.js +17 -0
- data/lib/stylus/colors.js +156 -0
- data/lib/stylus/convert/css.js +130 -0
- data/lib/stylus/errors.js +58 -0
- data/lib/stylus/functions/image.js +120 -0
- data/lib/stylus/functions/index.js +722 -0
- data/lib/stylus/functions/index.styl +123 -0
- data/lib/stylus/functions/url.js +98 -0
- data/lib/stylus/lexer.js +728 -0
- data/lib/stylus/middleware.js +223 -0
- data/lib/stylus/nodes/arguments.js +65 -0
- data/lib/stylus/nodes/binop.js +54 -0
- data/lib/stylus/nodes/block.js +99 -0
- data/lib/stylus/nodes/boolean.js +103 -0
- data/lib/stylus/nodes/call.js +57 -0
- data/lib/stylus/nodes/charset.js +42 -0
- data/lib/stylus/nodes/comment.js +32 -0
- data/lib/stylus/nodes/each.js +56 -0
- data/lib/stylus/nodes/expression.js +168 -0
- data/lib/stylus/nodes/fontface.js +55 -0
- data/lib/stylus/nodes/function.js +104 -0
- data/lib/stylus/nodes/group.js +79 -0
- data/lib/stylus/nodes/hsla.js +256 -0
- data/lib/stylus/nodes/ident.js +127 -0
- data/lib/stylus/nodes/if.js +55 -0
- data/lib/stylus/nodes/import.js +30 -0
- data/lib/stylus/nodes/index.js +52 -0
- data/lib/stylus/nodes/jsliteral.js +32 -0
- data/lib/stylus/nodes/keyframes.js +78 -0
- data/lib/stylus/nodes/literal.js +92 -0
- data/lib/stylus/nodes/media.js +42 -0
- data/lib/stylus/nodes/node.js +209 -0
- data/lib/stylus/nodes/null.js +72 -0
- data/lib/stylus/nodes/page.js +43 -0
- data/lib/stylus/nodes/params.js +72 -0
- data/lib/stylus/nodes/property.js +72 -0
- data/lib/stylus/nodes/return.js +44 -0
- data/lib/stylus/nodes/rgba.js +335 -0
- data/lib/stylus/nodes/root.js +50 -0
- data/lib/stylus/nodes/selector.js +57 -0
- data/lib/stylus/nodes/string.js +120 -0
- data/lib/stylus/nodes/ternary.js +51 -0
- data/lib/stylus/nodes/unaryop.js +46 -0
- data/lib/stylus/nodes/unit.js +207 -0
- data/lib/stylus/parser.js +1514 -0
- data/lib/stylus/renderer.js +157 -0
- data/lib/stylus/source.rb +7 -0
- data/lib/stylus/stack/frame.js +66 -0
- data/lib/stylus/stack/index.js +146 -0
- data/lib/stylus/stack/scope.js +53 -0
- data/lib/stylus/stylus.js +102 -0
- data/lib/stylus/token.js +53 -0
- data/lib/stylus/utils.js +237 -0
- data/lib/stylus/visitor/compiler.js +472 -0
- data/lib/stylus/visitor/evaluator.js +1070 -0
- data/lib/stylus/visitor/index.js +31 -0
- data/stylus-source.gemspec +15 -0
- metadata +158 -0
@@ -0,0 +1,157 @@
|
|
1
|
+
|
2
|
+
/*!
|
3
|
+
* Stylus - Renderer
|
4
|
+
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
|
5
|
+
* MIT Licensed
|
6
|
+
*/
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Module dependencies.
|
10
|
+
*/
|
11
|
+
|
12
|
+
var Parser = require('./parser')
|
13
|
+
, Compiler = require('./visitor/compiler')
|
14
|
+
, Evaluator = require('./visitor/evaluator')
|
15
|
+
, utils = require('./utils')
|
16
|
+
, nodes = require('./nodes')
|
17
|
+
, path = require('path')
|
18
|
+
, join = path.join;
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Initialize a new `Renderer` with the given `str` and `options`.
|
22
|
+
*
|
23
|
+
* @param {String} str
|
24
|
+
* @param {Object} options
|
25
|
+
* @api public
|
26
|
+
*/
|
27
|
+
|
28
|
+
var Renderer = module.exports = function Renderer(str, options) {
|
29
|
+
options = options || {};
|
30
|
+
options.globals = {};
|
31
|
+
options.functions = {};
|
32
|
+
options.imports = [join(__dirname, 'functions')];
|
33
|
+
options.paths = options.paths || [];
|
34
|
+
options.filename = options.filename || 'stylus';
|
35
|
+
this.options = options;
|
36
|
+
this.str = str;
|
37
|
+
};
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Parse and evaluate AST, then callback `fn(err, css, js)`.
|
41
|
+
*
|
42
|
+
* @param {Function} fn
|
43
|
+
* @api public
|
44
|
+
*/
|
45
|
+
|
46
|
+
Renderer.prototype.render = function(fn){
|
47
|
+
var parser = this.parser = new Parser(this.str, this.options);
|
48
|
+
try {
|
49
|
+
nodes.filename = this.options.filename;
|
50
|
+
var ast = parser.parse();
|
51
|
+
this.evaluator = new Evaluator(ast, this.options);
|
52
|
+
ast = this.evaluator.evaluate();
|
53
|
+
var compiler = new Compiler(ast, this.options)
|
54
|
+
, css = compiler.compile()
|
55
|
+
, js = compiler.js;
|
56
|
+
fn(null, css, js);
|
57
|
+
} catch (err) {
|
58
|
+
var options = {};
|
59
|
+
options.input = err.input || this.str;
|
60
|
+
options.filename = err.filename || this.options.filename;
|
61
|
+
options.lineno = err.lineno || parser.lexer.lineno;
|
62
|
+
fn(utils.formatException(err, options));
|
63
|
+
}
|
64
|
+
};
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Set option `key` to `val`.
|
68
|
+
*
|
69
|
+
* @param {String} key
|
70
|
+
* @param {Mixed} val
|
71
|
+
* @return {Renderer} for chaining
|
72
|
+
* @api public
|
73
|
+
*/
|
74
|
+
|
75
|
+
Renderer.prototype.set = function(key, val){
|
76
|
+
this.options[key] = val;
|
77
|
+
return this;
|
78
|
+
};
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Get option `key`.
|
82
|
+
*
|
83
|
+
* @param {String} key
|
84
|
+
* @return {Mixed} val
|
85
|
+
* @api public
|
86
|
+
*/
|
87
|
+
|
88
|
+
Renderer.prototype.get = function(key){
|
89
|
+
return this.options[key];
|
90
|
+
};
|
91
|
+
|
92
|
+
/**
|
93
|
+
* Include the given `path` to the lookup paths array.
|
94
|
+
*
|
95
|
+
* @param {String} path
|
96
|
+
* @return {Renderer} for chaining
|
97
|
+
* @api public
|
98
|
+
*/
|
99
|
+
|
100
|
+
Renderer.prototype.include = function(path){
|
101
|
+
this.options.paths.push(path);
|
102
|
+
return this;
|
103
|
+
};
|
104
|
+
|
105
|
+
/**
|
106
|
+
* Use the given `fn`.
|
107
|
+
*
|
108
|
+
* This allows for plugins to alter the renderer in
|
109
|
+
* any way they wish, exposing paths etc.
|
110
|
+
*
|
111
|
+
* @param {Function}
|
112
|
+
* @return {Renderer} for chaining
|
113
|
+
* @api public
|
114
|
+
*/
|
115
|
+
|
116
|
+
Renderer.prototype.use = function(fn){
|
117
|
+
fn.call(this, this);
|
118
|
+
return this;
|
119
|
+
};
|
120
|
+
|
121
|
+
/**
|
122
|
+
* Define function or global var with the given `name`. Optionally
|
123
|
+
* the function may accept full expressions, by setting `raw`
|
124
|
+
* to `true`.
|
125
|
+
*
|
126
|
+
* @param {String} name
|
127
|
+
* @param {Function|Node} fn
|
128
|
+
* @return {Renderer} for chaining
|
129
|
+
* @api public
|
130
|
+
*/
|
131
|
+
|
132
|
+
Renderer.prototype.define = function(name, fn, raw){
|
133
|
+
if (fn.nodeName) {
|
134
|
+
this.options.globals[name] = fn;
|
135
|
+
return this;
|
136
|
+
}
|
137
|
+
|
138
|
+
// function
|
139
|
+
this.options.functions[name] = fn;
|
140
|
+
if (undefined != raw) fn.raw = raw;
|
141
|
+
return this;
|
142
|
+
};
|
143
|
+
|
144
|
+
/**
|
145
|
+
* Import the given `file`.
|
146
|
+
*
|
147
|
+
* @param {String} file
|
148
|
+
* @return {Renderer} for chaining
|
149
|
+
* @api public
|
150
|
+
*/
|
151
|
+
|
152
|
+
Renderer.prototype.import = function(file){
|
153
|
+
this.options.imports.push(file);
|
154
|
+
return this;
|
155
|
+
};
|
156
|
+
|
157
|
+
|
@@ -0,0 +1,66 @@
|
|
1
|
+
|
2
|
+
/*!
|
3
|
+
* Stylus - stack - Frame
|
4
|
+
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
|
5
|
+
* MIT Licensed
|
6
|
+
*/
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Module dependencies.
|
10
|
+
*/
|
11
|
+
|
12
|
+
var Scope = require('./scope')
|
13
|
+
, blocks = require('../nodes');
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Initialize a new `Frame` with the given `block`.
|
17
|
+
*
|
18
|
+
* @param {Block} block
|
19
|
+
* @api private
|
20
|
+
*/
|
21
|
+
|
22
|
+
var Frame = module.exports = function Frame(block) {
|
23
|
+
this._scope = false === block.scope
|
24
|
+
? null
|
25
|
+
: new Scope;
|
26
|
+
this.block = block;
|
27
|
+
};
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Return this frame's scope or the parent scope
|
31
|
+
* for scope-less blocks.
|
32
|
+
*
|
33
|
+
* @return {Scope}
|
34
|
+
* @api public
|
35
|
+
*/
|
36
|
+
|
37
|
+
Frame.prototype.__defineGetter__('scope', function(){
|
38
|
+
return this._scope || this.parent.scope;
|
39
|
+
});
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Lookup the given local variable `name`.
|
43
|
+
*
|
44
|
+
* @param {String} name
|
45
|
+
* @return {Node}
|
46
|
+
* @api private
|
47
|
+
*/
|
48
|
+
|
49
|
+
Frame.prototype.lookup = function(name){
|
50
|
+
return this.scope.lookup(name)
|
51
|
+
};
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Custom inspect.
|
55
|
+
*
|
56
|
+
* @return {String}
|
57
|
+
* @api public
|
58
|
+
*/
|
59
|
+
|
60
|
+
Frame.prototype.inspect = function(){
|
61
|
+
return '[Frame '
|
62
|
+
+ (false === this.block.scope
|
63
|
+
? 'scope-less'
|
64
|
+
: this.scope.inspect())
|
65
|
+
+ ']';
|
66
|
+
};
|
@@ -0,0 +1,146 @@
|
|
1
|
+
|
2
|
+
/*!
|
3
|
+
* Stylus - Stack
|
4
|
+
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
|
5
|
+
* MIT Licensed
|
6
|
+
*/
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Module dependencies.
|
10
|
+
*/
|
11
|
+
|
12
|
+
var Frame = require('./frame');
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Initialize a new `Stack`.
|
16
|
+
*
|
17
|
+
* @api private
|
18
|
+
*/
|
19
|
+
|
20
|
+
var Stack = module.exports = function Stack() {
|
21
|
+
Array.apply(this, arguments);
|
22
|
+
};
|
23
|
+
|
24
|
+
/**
|
25
|
+
* Inherit from `Array.prototype`.
|
26
|
+
*/
|
27
|
+
|
28
|
+
Stack.prototype.__proto__ = Array.prototype;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Push the given `frame`.
|
32
|
+
*
|
33
|
+
* @param {Frame} frame
|
34
|
+
* @api public
|
35
|
+
*/
|
36
|
+
|
37
|
+
Stack.prototype.push = function(frame){
|
38
|
+
frame.stack = this;
|
39
|
+
frame.parent = this.currentFrame;
|
40
|
+
return [].push.apply(this, arguments);
|
41
|
+
};
|
42
|
+
|
43
|
+
/**
|
44
|
+
* Return the current stack `Frame`.
|
45
|
+
*
|
46
|
+
* @return {Frame}
|
47
|
+
* @api private
|
48
|
+
*/
|
49
|
+
|
50
|
+
Stack.prototype.__defineGetter__('currentFrame', function(){
|
51
|
+
return this[this.length - 1];
|
52
|
+
});
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Lookup stack frame for the given `block`.
|
56
|
+
*
|
57
|
+
* @param {Block} block
|
58
|
+
* @return {Frame}
|
59
|
+
* @api private
|
60
|
+
*/
|
61
|
+
|
62
|
+
Stack.prototype.getBlockFrame = function(block){
|
63
|
+
for (var i = 0; i < this.length; ++i) {
|
64
|
+
if (block == this[i].block) {
|
65
|
+
return this[i];
|
66
|
+
}
|
67
|
+
}
|
68
|
+
};
|
69
|
+
|
70
|
+
/**
|
71
|
+
* Lookup the given local variable `name`, relative
|
72
|
+
* to the lexical scope of the current frame's `Block`.
|
73
|
+
*
|
74
|
+
* When the result of a lookup is an identifier
|
75
|
+
* a recursive lookup is performed, defaulting to
|
76
|
+
* returning the identifier itself.
|
77
|
+
*
|
78
|
+
* @param {String} name
|
79
|
+
* @return {Node}
|
80
|
+
* @api private
|
81
|
+
*/
|
82
|
+
|
83
|
+
Stack.prototype.lookup = function(name){
|
84
|
+
var block = this.currentFrame.block
|
85
|
+
, val
|
86
|
+
, ret;
|
87
|
+
|
88
|
+
do {
|
89
|
+
var frame = this.getBlockFrame(block);
|
90
|
+
if (frame && (val = frame.lookup(name))) {
|
91
|
+
switch (val.first.nodeName) {
|
92
|
+
case 'ident':
|
93
|
+
return this.lookup(val.first.name) || val;
|
94
|
+
default:
|
95
|
+
return val;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
} while (block = block.parent);
|
99
|
+
};
|
100
|
+
|
101
|
+
/**
|
102
|
+
* Custom inspect.
|
103
|
+
*
|
104
|
+
* @return {String}
|
105
|
+
* @api private
|
106
|
+
*/
|
107
|
+
|
108
|
+
Stack.prototype.inspect = function(){
|
109
|
+
return this.reverse().map(function(frame){
|
110
|
+
return frame.inspect();
|
111
|
+
}).join('\n');
|
112
|
+
};
|
113
|
+
|
114
|
+
/**
|
115
|
+
* Return stack string formatted as:
|
116
|
+
*
|
117
|
+
* at <context> (<filename>:<lineno>)
|
118
|
+
*
|
119
|
+
* @return {String}
|
120
|
+
* @api private
|
121
|
+
*/
|
122
|
+
|
123
|
+
Stack.prototype.toString = function(){
|
124
|
+
var block
|
125
|
+
, node
|
126
|
+
, buf = []
|
127
|
+
, location
|
128
|
+
, len = this.length;
|
129
|
+
|
130
|
+
while (len--) {
|
131
|
+
block = this[len].block;
|
132
|
+
if (node = block.node) {
|
133
|
+
location = '(' + node.filename + ':' + (node.lineno + 1) + ')';
|
134
|
+
switch (node.nodeName) {
|
135
|
+
case 'function':
|
136
|
+
buf.push(' at ' + node.name + '() ' + location);
|
137
|
+
break;
|
138
|
+
case 'group':
|
139
|
+
buf.push(' at "' + node.nodes[0].val + '" ' + location);
|
140
|
+
break;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
return buf.join('\n');
|
146
|
+
};
|
@@ -0,0 +1,53 @@
|
|
1
|
+
|
2
|
+
/*!
|
3
|
+
* Stylus - stack - Scope
|
4
|
+
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
|
5
|
+
* MIT Licensed
|
6
|
+
*/
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Initialize a new `Scope`.
|
10
|
+
*
|
11
|
+
* @api private
|
12
|
+
*/
|
13
|
+
|
14
|
+
var Scope = module.exports = function Scope() {
|
15
|
+
this.locals = {};
|
16
|
+
};
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Add `ident` node to the current scope.
|
20
|
+
*
|
21
|
+
* @param {Ident} ident
|
22
|
+
* @api private
|
23
|
+
*/
|
24
|
+
|
25
|
+
Scope.prototype.add = function(ident){
|
26
|
+
this.locals[ident.name] = ident.val;
|
27
|
+
};
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Lookup the given local variable `name`.
|
31
|
+
*
|
32
|
+
* @param {String} name
|
33
|
+
* @return {Node}
|
34
|
+
* @api private
|
35
|
+
*/
|
36
|
+
|
37
|
+
Scope.prototype.lookup = function(name){
|
38
|
+
return this.locals[name];
|
39
|
+
};
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Custom inspect.
|
43
|
+
*
|
44
|
+
* @return {String}
|
45
|
+
* @api public
|
46
|
+
*/
|
47
|
+
|
48
|
+
Scope.prototype.inspect = function(){
|
49
|
+
var keys = Object.keys(this.locals).map(function(key){ return '@' + key; });
|
50
|
+
return '[Scope'
|
51
|
+
+ (keys.length ? ' ' + keys.join(', ') : '')
|
52
|
+
+ ']';
|
53
|
+
};
|
@@ -0,0 +1,102 @@
|
|
1
|
+
|
2
|
+
/*!
|
3
|
+
* Stylus
|
4
|
+
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
|
5
|
+
* MIT Licensed
|
6
|
+
*/
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Module dependencies.
|
10
|
+
*/
|
11
|
+
|
12
|
+
var Renderer = require('./renderer')
|
13
|
+
, Parser = require('./parser')
|
14
|
+
, nodes = require('./nodes')
|
15
|
+
, utils = require('./utils');
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Export render as the module.
|
19
|
+
*/
|
20
|
+
|
21
|
+
exports = module.exports = render;
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Library version.
|
25
|
+
*/
|
26
|
+
|
27
|
+
exports.version = '0.15.4';
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Expose nodes.
|
31
|
+
*/
|
32
|
+
|
33
|
+
exports.nodes = nodes;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* Expose BIFs.
|
37
|
+
*/
|
38
|
+
|
39
|
+
exports.functions = require('./functions');
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Expose utils.
|
43
|
+
*/
|
44
|
+
|
45
|
+
exports.utils = require('./utils');
|
46
|
+
|
47
|
+
/**
|
48
|
+
* Expose middleware.
|
49
|
+
*/
|
50
|
+
|
51
|
+
exports.middleware = require('./middleware');
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Expose constructors.
|
55
|
+
*/
|
56
|
+
|
57
|
+
exports.Visitor = require('./visitor');
|
58
|
+
exports.Parser = require('./parser');
|
59
|
+
exports.Evaluator = require('./visitor/evaluator');
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Convert the given `css` to `stylus` source.
|
63
|
+
*
|
64
|
+
* @param {String} css
|
65
|
+
* @return {String}
|
66
|
+
* @api public
|
67
|
+
*/
|
68
|
+
|
69
|
+
exports.convertCSS = require('./convert/css');
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Render the given `str` with `options` and callback `fn(err, css)`.
|
73
|
+
*
|
74
|
+
* @param {String} str
|
75
|
+
* @param {Object|Function} options
|
76
|
+
* @param {Function} fn
|
77
|
+
* @api public
|
78
|
+
*/
|
79
|
+
|
80
|
+
exports.render = function(str, options, fn){
|
81
|
+
if ('function' == typeof options) fn = options, options = {};
|
82
|
+
new Renderer(str, options).render(fn);
|
83
|
+
};
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Return a new `Renderer` for the given `str` and `options`.
|
87
|
+
*
|
88
|
+
* @param {String} str
|
89
|
+
* @param {Object} options
|
90
|
+
* @return {Renderer}
|
91
|
+
* @api public
|
92
|
+
*/
|
93
|
+
|
94
|
+
function render(str, options) {
|
95
|
+
return new Renderer(str, options);
|
96
|
+
}
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Expose optional functions.
|
100
|
+
*/
|
101
|
+
|
102
|
+
exports.url = require('./functions/url');
|