Example #1
0
    it('should handle operator expressions', function(){
      var element = document.querySelector('#operator-expression');
      directive('data-operator-expression', function(ctx, element, attr){
        if (attr.expression(ctx)) {
          element.textContent = 'Count is greater than 10';
        } else {
          element.textContent = 'Count is not greater than 10';
        }
      });

      directive('data-operator-expression').exec(element, { count: 20 });
      assert('Count is greater than 10' === element.textContent);
      directive('data-operator-expression').exec(element, { count: 5 });
      assert('Count is not greater than 10' === element.textContent);
    });
Example #2
0
    it('should handle function(arg) expressions', function(done){
      var element = document.querySelector('#fn-arg-expression');
      directive('data-fn-arg-expression', function(ctx, element, attr){
        attr.expression(ctx);
      });

      content('todos')
        .attr('todo', 'object')
        .action('create', function(todo){
          assert('A todo!' === todo.title);
          done();
        });

      var ctx = content('todos').init({ todo: { title: 'A todo!' } });
      directive('data-fn-arg-expression').exec(element, ctx);
    });
Example #3
0
 it('should execute (and return a content)', function(done){
   var result = directive('data-title', function(ctx, element){
     assert(content.root() === ctx);
     assert(document.querySelector('#mocha') === element);
     done();
   }).exec(document.querySelector('#mocha'), content.root());
 });
Example #4
0
  it('should define', function(done){
    directive.on('define', function(instance){
      assert('property' === instance.name);
      done();
    });

    directive('property');
  });
Example #5
0
  it('should return a custom content', function(){
    var custom = content('custom').init();

    var result = directive('data-title', function(ctx, element){
      return custom;
    }).exec(document.querySelector('#mocha'), content.root());

    assert(custom === result);
  });
Example #6
0
 it('should return `true` if `defined`', function(){
   assert(false === directive.defined('data-random'));
   directive('data-random', function(){});
   assert(true === directive.defined('data-random'));
 });
Example #7
0
 it('should print "directive(name)" on instance.toString()', function(){
   assert('directive("data-text")' === directive('data-text').toString());
 });
Example #8
0
/**
 * Module dependencies.
 */

var element = require('tower-element');
var directive = require('tower-directive');

/**
 * Expose `elementDirective`.
 */

module.exports = directive('data-element').compiler(elementDirective);

/**
 * Define `elementDirective`.
 */

function elementDirective(el, attr) {
  var expression = attr.expression;
  // XXX: could probably use some way of caching.

  function exec(scope, cursor, attr) {
    var name = expression(scope);
    var obj = element(name).init({ parent: scope });
    var el = obj.render();
    cursor.parentNode.insertBefore(el, cursor.nextSibling);
  }

  return exec;
}
Example #9
0
var directive = require('tower-directive');

// https://github.com/isagalaev/highlight.js
directive('data-content', function(scope, el, attr){
  while (el.firstChild) el.removeChild(el.firstChild);
  var child = scope.get('body')(scope);
  el.appendChild(child);
});

/**
 * Module dependencies.
 */

var domify = require('domify');
var jsdom = require('jsdom').jsdom;
var template = require('tower-template');
var content = require('tower-content');
var fs = require('fs');
var path = require('path');
var minify = require('html-minifier').minify;
var minifyOptions = {
  removeCommentsFromCDATA: true,
  collapseWhitespace: true,
  collapseBooleanAttributes: true,
  removeEmptyAttributes: true,
  useShortDoctype: false
};

function min(val) {
  return minify(val, minifyOptions);