code: function callFn(tpl, scope, option, buffer, parts, depth) {
    var caller, fn, command1;
    if (!depth) {
      command1 = findCommand(tpl.runtime.commands, tpl.root.config.commands, parts);
    }
    if (command1) {
      return command1.call(tpl, scope, option, buffer);
    } else if (command1 !== false) {
      caller = scope.resolve(parts.slice(0, -1), depth);
      fn = caller[parts[parts.length - 1]];
      if (fn) {
        // apply(x, undefined) error in ie8
        try {
          return fn.apply(caller, option.params || []);
        } catch (err) {
          buffer.error('Execute function `' + parts.join('.') + '` Error: ' + err.message);
          return buffer;
        }
      }
    }
    buffer.error('Command Not Found: ' + parts.join('.'));
    return buffer;
  }
docs: depth: ../x.y() => 1