docs: function (template, options) {
        var parsedTemplate
        if (!options) {
          options = {}
        }
        if (options.rdelim) {
          // If delimiters are passed locally take them.
          this.smarty.rdelim = options.rdelim
        } else if (jSmart.prototype.right_delimiter) {
          // Backward compatible. Old way to set via prototype.
          this.smarty.rdelim = jSmart.prototype.right_delimiter
        } else {
          // Otherwise default delimiters
          this.smarty.rdelim = '}'
        }
        if (options.ldelim) {
          // If delimiters are passed locally take them.
          this.smarty.ldelim = options.ldelim
        } else if (jSmart.prototype.left_delimiter) {
          // Backward compatible. Old way to set via prototype.
          this.smarty.ldelim = jSmart.prototype.left_delimiter
        } else {
          // Otherwise default delimiters
          this.smarty.ldelim = '{'
        }
        if (options.autoLiteral !== undefined) {
          // If autoLiteral is passed locally, take it.
          this.autoLiteral = options.autoLiteral
        } else if (jSmart.prototype.auto_literal !== undefined) {
          // Backward compatible. Old way to set via prototype.
          this.autoLiteral = jSmart.prototype.auto_literal
        }
  
        if (options.debugging !== undefined) {
          // If debugging is passed locally, take it.
          this.debugging = options.debugging
        } else if (jSmart.prototype.debugging !== undefined) {
          // Backward compatible. Old way to set via prototype.
          this.debugging = jSmart.prototype.debugging
        }
  
        if (options.escapeHtml !== undefined) {
          // If escapeHtml is passed locally, take it.
          this.escapeHtml = options.escapeHtml
        } else if (jSmart.prototype.escape_html !== undefined) {
          // Backward compatible. Old way to set via prototype.
          this.escapeHtml = jSmart.prototype.escape_html
        }
  
        // Is template string or at least defined?!
        template = String(template || '')
  
        // Generate the tree. We pass delimiters and many config values
        // which are needed by parser to parse like delimiters.
        jSmartParser.clear()
        jSmartParser.rdelim = this.smarty.rdelim
        jSmartParser.ldelim = this.smarty.ldelim
        jSmartParser.getTemplate = this.getTemplate
        jSmartParser.getConfig = this.getConfig
        jSmartParser.autoLiteral = this.autoLiteral
        jSmartParser.plugins = this.plugins
        jSmartParser.preFilters = this.filtersGlobal.pre
        // Above parser config are set, lets parse.
        parsedTemplate = jSmartParser.getParsed(template)
        this.tree = parsedTemplate.tree
        this.runTimePlugins = parsedTemplate.runTimePlugins
        this.blocks = parsedTemplate.blocks
        this.outerBlocks = parsedTemplate.outerBlocks
      }