{removeSync:remove} = require 'remove'
-MODULE_LINK = 'node_modules/limn'
+MODULE_LINK = 'node_modules/limn'
+APP_BUNDLE_PATH = 'var/js/limn.no-deps.js'
+APP_BUNDLE_MIN_PATH = APP_BUNDLE_PATH.replace /\.js$/, '.min.js'
+VENDOR_BUNDLE_PATH = 'var/vendor/vendor-bundle.js'
+VENDOR_BUNDLE_MIN_PATH = VENDOR_BUNDLE_PATH.replace /\.js$/, '.min.js'
+DIST_PATH = 'dist/limn.js'
+DIST_MIN_PATH = DIST_PATH.replace /\.js$/, '.min.js'
task \setup 'Ensure project is set up for development.' ->
invoke \install
invoke \link
- invoke \update_version
+ err, version <- writeVersionFile 'src/version.js'
task \server 'Start dev server' ->
invoke \setup
coco <[ -bjc package.co ]>
- {sources} = require 'limn/server/view-helpers'
+ {sources} = require 'limn/server/view-helpers'
browserify = require 'browserify'
Coco = require 'coco'
Jade = require 'jade'
yaml = require 'js-yaml'
matchExt = /((?:\.min)?)\.mod((?:\.min)?)\.js$/i
+ fullExt = /(\.(min|mod|amd|jade))*\.js$/i
console.log 'Building source...'
Seq()
.set sources("www/modules.yaml", 'development').map -> it.slice 1
.seqEach (srcfile) ->
return @ok() unless matchExt.test srcfile
- outfile = (if _.startsWith srcfile, 'vendor' then 'static' else 'www') + '/' + srcfile
+ outfile = (if _.startsWith srcfile, 'vendor' then 'static' else 'lib') + '/' + srcfile.replace /^js\/limn\//, ''
infile = outfile.replace matchExt, '$1$2.js'
- return @ok() unless exists infile
+ unless exists infile
+ console.log " Wrapping JS in Module:\t Cannot find #infile!"
+ return @ok()
return @ok() if _.startsWith(srcfile, 'vendor') and exists outfile
- parts = infile.replace matchExt, '' .split '/' .slice 2
+ parts = srcfile.replace fullExt, '' .split '/' .slice 1
parts.pop() if 'index' is _.last parts
ID = parts.join '/'
console.log " Wrapping JS in Module:\t #infile \t-->\t #outfile"
task \bundle 'Build application and vendor bundles' ->
invoke \bundle_app
invoke \bundle_vendor
+ invoke \bundle_combine
task \bundle_app 'Build application bundle' ->
{sources} = require 'limn/server/view-helpers'
- app_bundle_path = 'var/js/limn/app-bundle.js'
app_sources = sources("www/modules.yaml", 'development')
.filter -> not _.startsWith it, '/vendor'
.map -> it.slice 1 .replace /js\/limn/, 'lib'
- mkdirp dirname app_bundle_path
- bundle_js app_bundle_path, app_sources, {-minify}
+ mkdirp dirname APP_BUNDLE_PATH
+ bundle_js APP_BUNDLE_PATH, app_sources, {-minify}
- app_bundle_min_path = app_bundle_path.replace /\.js$/, '.min.js'
- print 'Minifying into', app_bundle_min_path.magenta.bold, '... '
- write app_bundle_min_path, minify read app_bundle_path
+ APP_BUNDLE_MIN_PATH = APP_BUNDLE_PATH.replace /\.js$/, '.min.js'
+ print 'Minifying into', APP_BUNDLE_MIN_PATH.magenta.bold, '... '
+ write APP_BUNDLE_MIN_PATH, minify read APP_BUNDLE_PATH
say 'ok.\n'
task \bundle_vendor 'Build vendor bundle' ->
{sources} = require 'limn/server/view-helpers'
- vendor_bundle_path = 'var/vendor/vendor-bundle.js'
+ VENDOR_BUNDLE_PATH = 'var/vendor/vendor-bundle.js'
vendor_sources = sources("www/modules.yaml", 'development')
.filter -> _.startsWith it, '/vendor'
.map -> "static#it"
- mkdirp dirname vendor_bundle_path
- bundle_js vendor_bundle_path, vendor_sources, {-minify}
+ mkdirp dirname VENDOR_BUNDLE_PATH
+ bundle_js VENDOR_BUNDLE_PATH, vendor_sources, {-minify}
- vendor_bundle_min_path = vendor_bundle_path.replace /\.js$/, '.min.js'
- print 'Minifying into', vendor_bundle_min_path.magenta.bold, '... '
- write vendor_bundle_min_path, minify read vendor_bundle_path
+ VENDOR_BUNDLE_MIN_PATH = VENDOR_BUNDLE_PATH.replace /\.js$/, '.min.js'
+ print 'Minifying into', VENDOR_BUNDLE_MIN_PATH.magenta.bold, '... '
+ write VENDOR_BUNDLE_MIN_PATH, minify read VENDOR_BUNDLE_PATH
say 'ok.\n'
+task \bundle_combine 'Combine bundles into dist file' ->
+ print 'Writing dist file', DIST_PATH.magenta.bold , '... '
+ mkdirp dirname DIST_PATH
+ write DIST_PATH, "#{read VENDOR_BUNDLE_PATH}\n#{read APP_BUNDLE_PATH}\n"
+ say 'ok.\n'
+
+ print 'Writing minified dist file', DIST_MIN_PATH.magenta.bold , '... '
+ mkdirp dirname DIST_MIN_PATH
+ write DIST_MIN_PATH, "#{read VENDOR_BUNDLE_MIN_PATH}\n#{read APP_BUNDLE_MIN_PATH}\n"
+ say 'ok.\n'
+
+
task \test 'Rebuild test files and run tests' ->
task \clean 'Clean up environment and artifacts' ->
invoke \cleanup_tests
- remove [MODULE_LINK, 'var', 'tmp/dist'], {+ignoreMissing, +verbose}
+ remove [MODULE_LINK, 'lib', 'var', 'dist'], {+ignoreMissing, +verbose}
.join '\n'
-# task \dist 'Assemble a distribution package for deploy' ->
-# invoke \cleanup_tests
-# ...
-
-
var Backbone, op, AppView, _ref, _;
Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
/**
* @class Application view, automatically attaching to an existing element
* found at `appSelector`.
+++ /dev/null
-require.define('/node_modules/kraken/app.js.js', function(require, module, exports, __dirname, __filename, undefined){
-
-var Backbone, op, AppView, _ref, _;
-Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
-/**
- * @class Application view, automatically attaching to an existing element
- * found at `appSelector`.
- * @extends Backbone.View
- */
-AppView = exports.AppView = Backbone.View.extend({
- appSelector: '#content .inner'
- /**
- * @constructor
- */,
- constructor: (function(){
- function AppView(options){
- var that, _this = this;
- options == null && (options = {});
- if (typeof options === 'function') {
- this.initialize = options;
- options = {};
- } else {
- if (that = options.initialize) {
- this.initialize = that;
- }
- }
- if (that = options.appSelector) {
- this.appSelector = that;
- }
- options.el || (options.el = jQuery(this.appSelector)[0]);
- Backbone.View.call(this, options);
- jQuery(function(){
- return _this.render();
- });
- return this;
- }
- return AppView;
- }())
- /**
- * Override to set up your app. This method may be passed
- * as an option to the constructor.
- */,
- initialize: function(){}
- /**
- * Append subviews.
- */,
- render: function(){
- var _ref;
- if (this.view && !((_ref = this.view.$el.parent()) != null && _ref.length)) {
- return this.$el.append(this.view.el);
- }
- },
- getClassName: function(){
- return (this.constructor.name || this.constructor.displayName) + "";
- },
- toString: function(){
- return this.getClassName() + "()";
- }
-});
-
-});
var op, ReadyEmitter, AssetManager, _ref, _;
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
-ReadyEmitter = require('kraken/util/event').ReadyEmitter;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
+ReadyEmitter = require('limn/util/event').ReadyEmitter;
AssetManager = (function(superclass){
AssetManager.displayName = 'AssetManager';
var prototype = __extend(AssetManager, superclass).prototype, constructor = AssetManager;
var Backbone, op, BaseBackboneMixin, Mixin, mixinBase, _ref, _, __slice = [].slice;
Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
BaseBackboneMixin = exports.BaseBackboneMixin = {
initialize: function(){
return this.__apply_bind__();
-require.define('/node_modules/kraken/base/base-mixin.js.js', function(require, module, exports, __dirname, __filename, undefined){
+require.define('/node_modules/limn/base/base-mixin.js', function(require, module, exports, __dirname, __filename, undefined){
var Backbone, op, BaseBackboneMixin, Mixin, mixinBase, _ref, _, __slice = [].slice;
Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
BaseBackboneMixin = exports.BaseBackboneMixin = {
initialize: function(){
return this.__apply_bind__();
var Backbone, op, BaseBackboneMixin, mixinBase, BaseModel, BaseList, _ref, _, __slice = [].slice;
Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
-_ref = require('kraken/base/base-mixin'), BaseBackboneMixin = _ref.BaseBackboneMixin, mixinBase = _ref.mixinBase;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
+_ref = require('limn/base/base-mixin'), BaseBackboneMixin = _ref.BaseBackboneMixin, mixinBase = _ref.mixinBase;
/**
* @class Base model, extending Backbone.Model, used by scaffold and others.
* @extends Backbone.Model
return it.id || it.get('id') || it.cid;
});
},
+ url: function(){
+ var id;
+ id = this.get('id') || this.get('slug');
+ if (id) {
+ return this.urlRoot + "/" + id + ".json";
+ } else {
+ return this.urlRoot + ".json";
+ }
+ },
+ load: function(){
+ return this.loadCollection();
+ },
+ loadCollection: function(){
+ var _this = this;
+ this.wait();
+ this.trigger('load', this);
+ this.fetch({
+ success: function(){
+ _this.unwait();
+ return _this.trigger('load-success', _this);
+ },
+ error: function(){
+ _this.unwait();
+ return _this.trigger.apply(_this, ['load-error', _this].concat(__slice.call(arguments)));
+ }
+ });
+ return this;
+ },
toKVPairs: function(){
return _.collapseObject(this.toJSON());
},
-require.define('/node_modules/kraken/base/base-model.js.js', function(require, module, exports, __dirname, __filename, undefined){
+require.define('/node_modules/limn/base/base-model.js', function(require, module, exports, __dirname, __filename, undefined){
var Backbone, op, BaseBackboneMixin, mixinBase, BaseModel, BaseList, _ref, _, __slice = [].slice;
Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
-_ref = require('kraken/base/base-mixin'), BaseBackboneMixin = _ref.BaseBackboneMixin, mixinBase = _ref.mixinBase;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
+_ref = require('limn/base/base-mixin'), BaseBackboneMixin = _ref.BaseBackboneMixin, mixinBase = _ref.mixinBase;
/**
* @class Base model, extending Backbone.Model, used by scaffold and others.
* @extends Backbone.Model
return it.id || it.get('id') || it.cid;
});
},
+ url: function(){
+ var id;
+ id = this.get('id') || this.get('slug');
+ if (id) {
+ return this.urlRoot + "/" + id + ".json";
+ } else {
+ return this.urlRoot + ".json";
+ }
+ },
+ load: function(){
+ return this.loadCollection();
+ },
+ loadCollection: function(){
+ var _this = this;
+ this.wait();
+ this.trigger('load', this);
+ this.fetch({
+ success: function(){
+ _this.unwait();
+ return _this.trigger('load-success', _this);
+ },
+ error: function(){
+ _this.unwait();
+ return _this.trigger.apply(_this, ['load-error', _this].concat(__slice.call(arguments)));
+ }
+ });
+ return this;
+ },
toKVPairs: function(){
return _.collapseObject(this.toJSON());
},
var Backbone, op, BaseBackboneMixin, mixinBase, BaseModel, DataBinding, BaseView, ViewList, _ref, _, __slice = [].slice;
Backbone = require('backbone');
-_ref = require('kraken/util'), _ = _ref._, op = _ref.op;
-_ref = require('kraken/base/base-mixin'), BaseBackboneMixin = _ref.BaseBackboneMixin, mixinBase = _ref.mixinBase;
-BaseModel = require('kraken/base/base-mixin').BaseModel;
-DataBinding = require('kraken/base/data-binding').DataBinding;
+_ref = require('limn/util'), _ = _ref._, op = _ref.op;
+_ref = require('limn/base/base-mixin'), BaseBackboneMixin = _ref.BaseBackboneMixin, mixinBase = _ref.mixinBase;
+BaseModel = require('limn/base/base-mixin').BaseModel;
+DataBinding = require('limn/base/data-binding').DataBinding;
/**
* @class Base view, extending Backbone.View, used by scaffold and others.
* @extends Backbone.View
-require.define('/node_modules/kraken/base/base-view.js.js', function(require, module, exports, __dirname, __filename, undefined){
+require.define('/node_modules/limn/base/base-view.js', function(require, module, exports, __dirname, __filename, undefined){
var Backbone, op, BaseBackboneMixi