docs: 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)
    }