mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 17:35:16 +00:00
51 lines
738 B
JavaScript
51 lines
738 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;
|
||
|
};
|