UNPKG

asset-rack

Version:

Static Web Framework for Nodejs

120 lines (104 loc) 3.98 kB
// Generated by CoffeeScript 1.6.3 (function() { var Asset, async, fs, pathutil, _ref, __hasProp = {}.hasOwnProperty, __extends = 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; }; fs = require('fs'); pathutil = require('path'); async = require('async'); Asset = require('../.').Asset; exports.JavascriptAsset = (function(_super) { __extends(JavascriptAsset, _super); function JavascriptAsset() { _ref = JavascriptAsset.__super__.constructor.apply(this, arguments); return _ref; } JavascriptAsset.prototype.mimetype = 'text/javascript'; JavascriptAsset.prototype.create = function(options) { var _this = this; this.options = options; this.code = options.code; this.dirname = options.dirname || '/'; this.compress = options.compress; if (this.compress == null) { this.compress = false; } this.contents = ''; if (this.compress) { } else { this.assets = []; } return async.eachSeries(this.code, function(path, next) { var asset, assetUrl, error, fileContent, jsContent; try { if (path instanceof Asset) { asset = path; return asset.on('complete', function() { if (_this.compress) { _this.contents += asset.contents; } else { _this.addAsset(asset); } return next(); }); } fileContent = fs.readFileSync(pathutil.join(_this.dirname, path), 'utf8'); assetUrl = '/' + path.replace('.coffee', '.js').replace(/\\/g, '\/'); jsContent = ''; switch (false) { case path.indexOf('.coffee') === -1: _this.setupCoffeescript(); try { jsContent = _this.coffeescript.compile(fileContent); } catch (_error) { error = _error; error.stack = ("Syntax Error: In " + (pathutil.join(_this.dirname, path)) + " on line " + error.location.first_line + "\n") + error.stack; throw error; } break; default: jsContent = fileContent; } if (_this.compress) { _this.contents += jsContent + '\n'; } else { _this.addAsset(new Asset({ url: assetUrl, contents: jsContent })); } return next(); } catch (_error) { error = _error; return _this.emit('error', error); } }, function() { return _this.emit('created'); }); }; JavascriptAsset.prototype.tag = function() { var asset, tag, _i, _len, _ref1; if (this.assets != null) { tag = ''; _ref1 = this.assets; for (_i = 0, _len = _ref1.length; _i < _len; _i++) { asset = _ref1[_i]; tag += "\n<script type=\"text/javascript\" "; tag += "src=\"" + asset.specificUrl + "\"></script>"; } return tag; } if ((this.contents != null) && this.contents !== '') { tag = "\n<script type=\"" + this.mimetype + "\" "; return tag += "src=\"" + this.specificUrl + "\"></script>"; } }; JavascriptAsset.prototype.setupCoffeescript = function() { return this.coffeescript != null ? this.coffeescript : this.coffeescript = this.options.coffeescript || require('coffee-script'); }; JavascriptAsset.prototype.setupTypescript = function() { return this.typescript != null ? this.typescript : this.typescript = this.options.typescript || require('node-typescript'); }; return JavascriptAsset; })(Asset); }).call(this);