Source: assembler.js

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) {

};