lib/render/client.js
function(ast, options){
    options = options || {};
    if(typeof ast === 'string'){
      ast = new Parser(ast).parse()
    }
    var preExt = this.__ext__,
      record = options.record, 
      records;

    if(options.extra) this.__ext__ = options.extra;


    if(record) this._record();
    var group = this._walk(ast, options);
    if(record){
      records = this._release();
      var self = this;
      if( records.length ){
        // auto destroy all wather;
        group.ondestroy = function(){ self.$unwatch(records); }
      }
    }
    if(options.extra) this.__ext__ = preExt;
    return group;
  }
function(ast, options){
    options = options || {};
    if(typeof ast === 'string'){
      ast = new Parser(ast).parse()
    }
    var preExt = this.__ext__,
      record = options.record, 
      records;

    if(options.extra) this.__ext__ = options.extra;


    if(record) this._record();
    var group = this._walk(ast, options);
    if(record){
      records = this._release();
      var self = this;
      if( records.length ){
        // auto destroy all wather;
        group.ondestroy = function(){ self.$unwatch(records); }
      }
    }
    if(options.extra) this.__ext__ = preExt;
    return group;
  }
function ( ast , options ) { options = options || { } ; if ( typeof ast === 'string' ) { ast = new Parser ( ast ) . parse ( ) } var preExt = this . __ext__ , record = options . record , records ; if ( options . extra ) this . __ext__ = options . extra ; if ( record ) this . _record ( ) ; var group = this . _walk ( ast , options ) ; if ( record ) { records = this . _release ( ) ; var self = this ; if ( records . length ) { // auto destroy all wather; group . ondestroy = function ( ) { self . $unwatch ( records ) ; } } } if ( options . extra ) this . __ext__ = preExt ; return group ; }
compile a block ast ; return a group;
@param  {Array} parsed ast
@param  {[type]} record
@return {[type]}
compile a block ast ; return a group ;