UNPKG

hem

Version:

stitches CommonJS, and ties up other lose ends of web-app development.

185 lines (163 loc) 4.78 kB
// Generated by CoffeeScript 1.12.7 (function() { var clean, extend, flatten, fs, isWin, path, tmplCache, utils, indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, slice = [].slice; path = require('path'); fs = require('fs-extra'); utils = {}; isWin = !!require('os').platform().match(/^win/); utils.flatten = flatten = function(array, results) { var i, item, len; if (results == null) { results = []; } for (i = 0, len = array.length; i < len; i++) { item = array[i]; if (Array.isArray(item)) { flatten(item, results); } else if (item) { results.push(item); } } return results; }; utils.arrayToString = function(value) { var i, len, line, result; if (Array.isArray(value)) { result = ""; for (i = 0, len = value.length; i < len; i++) { line = value[i]; result += line + "\n"; } return result; } else { return value; } }; utils.removeDuplicateValues = function(array) { var i, len, newArray, value; newArray = []; for (i = 0, len = array.length; i < len; i++) { value = array[i]; if (indexOf.call(newArray, value) < 0) { newArray.push(value); } } return newArray; }; utils.toArray = function(value) { if (value == null) { value = []; } if (Array.isArray(value)) { return value; } else { return [value]; } }; utils.startsWith = function(str, value) { return (str != null ? str.slice(0, value.length) : void 0) === value; }; utils.endsWith = function(str, value) { return (str != null ? str.slice(-value.length) : void 0) === value; }; utils.extend = extend = function(a, b) { var x; for (x in b) { if (typeof b[x] === 'object' && !Array.isArray(b[x])) { a[x] || (a[x] = {}); extend(a[x], b[x]); } else { a[x] = b[x]; } } return a; }; utils.loadAsset = function(asset) { return require("../assets/" + asset); }; utils.copyFile = function(from, to) { var BUF_LENGTH, _buff, bytesRead, fdr, fdw, pos; fs.createFileSync(to); BUF_LENGTH = 64 * 1024; _buff = new Buffer(BUF_LENGTH); fdr = fs.openSync(from, 'r'); fdw = fs.openSync(to, 'w'); bytesRead = 1; pos = 0; while (bytesRead > 0) { bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos); fs.writeSync(fdw, _buff, 0, bytesRead); pos += bytesRead; } fs.closeSync(fdr); return fs.closeSync(fdw); }; utils.isDirectory = function(dir) { var e, stats; try { stats = fs.lstatSync(dir); return stats.isDirectory(); } catch (error) { e = error; return false; } }; tmplCache = {}; utils.tmpl = function(str, data) { var fn, template; if (!/[\t\r\n% ]/.test(str)) { if (tmplCache[str]) { fn = tmplCache[str]; } else { template = utils.loadAsset(str + ".tmpl"); fn = utils.tmpl(template); } } else { str = str.split("'").join("\\'").split("\n").join("\\n").replace(/<%([\s\S]*?)%>/mg, function(m, t) { return '<%' + t.split("\\'").join("'").split("\\n").join("\n") + '%>'; }).replace(/<%=(.+?)%>/g, "',$1,'").split("<%").join("');").split("%>").join("p.push('"); fn = new Function("obj", "var p=[]\nvar print = function(){ p.push.apply(p,arguments); };\nwith(obj){\n p.push('" + str + "');\n}\nreturn p.join('');"); } return data && fn(data) || fn; }; clean = function(values, sep, trimStart) { var i, len, regexp, result, value; if (trimStart == null) { trimStart = false; } result = ""; for (i = 0, len = values.length; i < len; i++) { value = values[i]; if (value) { result = result + sep + value; } } regexp = new RegExp(sep + "+", "g"); result = result.replace(regexp, sep); if (trimStart && utils.startsWith(result, sep)) { result = result.slice(sep.length); } if (utils.endsWith(result, sep)) { result = result.slice(0, -sep.length); } return result; }; utils.cleanPath = function() { var cleanPath, paths, result; paths = 1 <= arguments.length ? slice.call(arguments, 0) : []; result = clean(paths, path.sep, true); if (isWin || true) { cleanPath = new RegExp(/\//g); result = result.replace(cleanPath, path.sep); } return result; }; utils.cleanRoute = function() { var routes; routes = 1 <= arguments.length ? slice.call(arguments, 0) : []; return clean(routes, "/"); }; module.exports = utils; }).call(this);