You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
738 B
50 lines
738 B
|
|
/** |
|
* Expose `Compiler`. |
|
*/ |
|
|
|
module.exports = Compiler; |
|
|
|
/** |
|
* Initialize a compiler. |
|
* |
|
* @param {Type} name |
|
* @return {Type} |
|
* @api public |
|
*/ |
|
|
|
function Compiler(opts) { |
|
this.options = opts || {}; |
|
} |
|
|
|
/** |
|
* Emit `str` |
|
*/ |
|
|
|
Compiler.prototype.emit = function(str) { |
|
return str; |
|
}; |
|
|
|
/** |
|
* Visit `node`. |
|
*/ |
|
|
|
Compiler.prototype.visit = function(node){ |
|
return this[node.type](node); |
|
}; |
|
|
|
/** |
|
* Map visit over array of `nodes`, optionally using a `delim` |
|
*/ |
|
|
|
Compiler.prototype.mapVisit = function(nodes, delim){ |
|
var buf = ''; |
|
delim = delim || ''; |
|
|
|
for (var i = 0, length = nodes.length; i < length; i++) { |
|
buf += this.visit(nodes[i]); |
|
if (delim && i < length - 1) buf += this.emit(delim); |
|
} |
|
|
|
return buf; |
|
};
|
|
|