var Utils = require('src/utils')
, AST = require('src/ast')
;
/**
* Assembles the AST into Javascript
* @class Assembler
* @param {Object} opts - The assembler options
*/
var Assembler = module.exports = function Assembler(opts)
{
if(!(this instanceof Assembler))
return new Assembler(opts);
var opts = Utils.defaults({}, opts);
}
Assembler.prototype.assemble = function (ast) {
var ret = '';
ret += this._assembleNodes(ast);
return ret;
};
Assembler.prototype._assembleNodes = function (ast) {
var ret = '';
for( var i=0, ii=ast.length; i<ii; i++ )
{
var node = ast[i];
switch(node.constructor)
{
case AST.TagDirective:
ret += this._tagDirective(node);
break;
case AST.Tag:
ret += this._tag(node);
break;
case AST.Text:
ret += this._text(node);
break;
default:
throw new Error('Bad node type in syntax tree');
}
}
return ret;
};
Assembler.prototype._assembleAttribs = function (node) {
};
Assembler.prototype._attribDirective = function () {
};
Assembler.prototype._attrib = function () {
};
Assembler.prototype._interpolatorExpression = function () {
};
Assembler.prototype._interpolatorString = function () {
};
Assembler.prototype._interpolator = function () {
};
Assembler.prototype._tagDirective = function (node) {
};
Assembler.prototype._tag = function (node) {
};
Assembler.prototype._text = function (node) {
};