Beispiel #1
0
QUnit.test('returns undefined if no container exists (and helper is not found in env)', function() {
  var env = generateEnv();
  var view = {};

  var actual = findHelper('flubarb', view, env);

  equal(actual, undefined, 'does not blow up if view does not have a container');
});
Beispiel #2
0
QUnit.test('does not lookup in the container if the name does not contain a dash (and helper is not found in env)', function() {
  var env = generateEnv();
  var view = {
    container: {
      lookup() {
        ok(false, 'should not lookup in the container');
      }
    }
  };

  var actual = findHelper('flubarb', view, env);

  equal(actual, undefined, 'does not blow up if view does not have a container');
});
Beispiel #3
0
export default function emberElement(morph, env, scope, path, params, hash, visitor) {
  if (handleRedirect(morph, env, scope, path, params, hash, null, null, visitor)) {
    return;
  }

  var result;
  var helper = findHelper(path, scope.getSelf(), env);
  if (helper) {
    var helperStream = buildHelperStream(helper, params, hash, { element: morph.element }, env, scope, path);
    result = helperStream.value();
  } else {
    result = env.hooks.get(env, scope, path);
  }

  env.hooks.getValue(result);
}
Beispiel #4
0
export default function emberElement(morph, env, scope, path, params, hash, visitor) {
  if (handleRedirect(morph, env, scope, path, params, hash, null, null, visitor)) {
    return;
  }

  var result;
  var helper = findHelper(path, scope.self, env);
  if (helper) {
    result = env.hooks.invokeHelper(null, env, scope, null, params, hash, helper, { element: morph.element }).value;
  } else {
    result = env.hooks.get(env, scope, path);
  }

  var value = env.hooks.getValue(result);
  if (value) {
    Ember.deprecate('Returning a string of attributes from a helper inside an element is deprecated.');
    updateElementAttributesFromString(morph.element, value);
  }
}
export default function linkRenderNode(renderNode, env, scope, path, params, hash) {
  if (renderNode.streamUnsubscribers) {
    return true;
  }

  var keyword = env.hooks.keywords[path];
  var helper;
  if (keyword && keyword.link) {
    keyword.link(renderNode.state, params, hash);
  } else {
    switch (path) {
      case 'unbound': return true;
      case 'unless':
      case 'if': params[0] = shouldDisplay(params[0]); break;
      case 'each': params[0] = eachParam(params[0]); break;
      default:
        helper = findHelper(path, scope.view, env);

        if (helper && helper.isHandlebarsCompat && params[0]) {
          params[0] = processHandlebarsCompatDepKeys(params[0], helper._dependentKeys);
        }
    }

  }

  if (params && params.length) {
    for (var i = 0; i < params.length; i++) {
      subscribe(renderNode, env, scope, params[i]);
    }
  }

  if (hash) {
    for (var key in hash) {
      subscribe(renderNode, env, scope, hash[key]);
    }
  }

  // The params and hash can be reused; they don't need to be
  // recomputed on subsequent re-renders because they are
  // streams.
  return true;
}
Beispiel #6
0
export default function hasHelperHook(env, scope, helperName) {
  return !!findHelper(helperName, scope.self, env);
}