code: function (template, options) {
      // Smarty object which has version, delimiters, config, current directory
      // and all blocks like PHP Smarty.
      this.smarty = {
  
        // Blocks in the current smarty object.
        block: {},
  
        // Used to store state of break;
        'break': false,
  
        // All the capture blocks in the current smarty object.
        capture: {},
  
        // Used to store state of continue
        'continue': false,
  
        // Current counter information. Smarty like feature.
        counter: {},
  
        // Use by {cycle} custom function to store array and cycle info.
        cycle: {},
  
        // All the foreach blocks in the current smarty object.
        'foreach': {},
  
        // All the section blocks in the current smarty object.
        section: {},
  
        // Current timestamp, when the object is created.
        now: Math.floor(((new Date()).getTime() / 1000)),
  
        // All the constants defined the current smarty object.
        'const': {},
  
        // Current configuration.
        config: {},
  
        // Current directory, underscored name as PHP Smarty does it.
        current_dir: '/',
  
        // Currrent template.
        template: '',
  
        // Left delimiter.
        ldelim: '{',
  
        // Right delimiter.
        rdelim: '}',
  
        // Current version of jSmart.
        version: version
      }
  
      // Whether to skip tags in open brace { followed by white space(s) and close brace } with white space(s) before.
      this.autoLiteral = true
  
      // Escape html??
      this.escapeHtml = false
  
      // If user wants debug to be enabled.
      this.debugging = false
  
      // Store outer blocks below extends.
      this.outerBlocks = {}
  
      // Stores inner blocks.
      this.blocks = {}
  
      this.parse(template, options)
    }
docs: /*
  Define jsmart constructor. jSmart object just stores,
  tree, $smarty block and some intialization methods.
  We keep jSmart object light weight as one page or program
  might contain to many jSmart objects.
  Keep parser and processor outside of jSmart objects, help
  us not to store, same parser and processor methods in all
  jSmart object.