mirror of https://github.com/jkjoy/sunpeiwen.git
51 lines
788 B
JavaScript
51 lines
788 B
JavaScript
|
|
/**
|
|
* 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;
|
|
};
|