UNPKG

janus

Version:

the two-faced application library-framework

103 lines (83 loc) 2.73 kB
// Generated by CoffeeScript 1.12.2 (function() { var Attribute, TransientAttribute, isFunction, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty, slice = [].slice; isFunction = require('../util/util').isFunction; Attribute = require('./attribute').Attribute; TransientAttribute = (function(superClass) { extend(_Class, superClass); function _Class() { return _Class.__super__.constructor.apply(this, arguments); } _Class.prototype.transient = true; return _Class; })(Attribute); module.exports = { attribute: function(key, klass) { return function(schema) { return schema.attributes[key] = klass; }; }, bind: function(key, binding) { return function(schema) { return schema.bindings[key] = binding; }; }, validate: function(binding) { return function(schema) { return schema.validations.push(binding); }; }, transient: function(key) { return function(schema) { return schema.attributes[key] = TransientAttribute; }; }, initial: function(key, value, klass) { if (klass == null) { klass = Attribute; } return function(schema) { var wrapped; wrapped = isFunction(value) ? value : (function() { return value; }); return schema.attributes[key] = (function(superClass) { extend(_Class, superClass); function _Class() { return _Class.__super__.constructor.apply(this, arguments); } _Class.prototype.initial = wrapped; return _Class; })(klass); }; }, Trait: function() { var parts; parts = 1 <= arguments.length ? slice.call(arguments, 0) : []; return function(schema) { var i, len, part; for (i = 0, len = parts.length; i < len; i++) { part = parts[i]; part(schema); } }; } }; module.exports.Trait.build = module.exports.Trait; module.exports.initial.writing = function(key, value, klass) { if (klass == null) { klass = Attribute; } return module.exports.initial(key, value, (function(superClass) { extend(_Class, superClass); function _Class() { return _Class.__super__.constructor.apply(this, arguments); } _Class.prototype.writeInitial = true; return _Class; })(klass)); }; }).call(this);