UNPKG

viewbridge

Version:

Shares views or templates between the server and client, making client side template pre-compilation and/or server side view pre-rendering easy.

278 lines (240 loc) 7.05 kB
(function(e){if("function"==typeof bootstrap)bootstrap("jade",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeJade=e}else"undefined"!=typeof window?window.jade=e():global.jade=e()})(function(){var define,ses,bootstrap,module,exports; return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){ /*! * Jade - runtime * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca> * MIT Licensed */ /** * Lame Array.isArray() polyfill for now. */ if (!Array.isArray) { Array.isArray = function(arr){ return '[object Array]' == Object.prototype.toString.call(arr); }; } /** * Lame Object.keys() polyfill for now. */ if (!Object.keys) { Object.keys = function(obj){ var arr = []; for (var key in obj) { if (obj.hasOwnProperty(key)) { arr.push(key); } } return arr; } } /** * Merge two attribute objects giving precedence * to values in object `b`. Classes are special-cased * allowing for arrays and merging/joining appropriately * resulting in a string. * * @param {Object} a * @param {Object} b * @return {Object} a * @api private */ exports.merge = function merge(a, b) { var ac = a['class']; var bc = b['class']; if (ac || bc) { ac = ac || []; bc = bc || []; if (!Array.isArray(ac)) ac = [ac]; if (!Array.isArray(bc)) bc = [bc]; a['class'] = ac.concat(bc).filter(nulls); } for (var key in b) { if (key != 'class') { a[key] = b[key]; } } return a; }; /** * Filter null `val`s. * * @param {*} val * @return {Boolean} * @api private */ function nulls(val) { return val != null && val !== ''; } /** * join array as classes. * * @param {*} val * @return {String} * @api private */ function joinClasses(val) { return Array.isArray(val) ? val.map(joinClasses).filter(nulls).join(' ') : val; } /** * Render the given attributes object. * * @param {Object} obj * @param {Object} escaped * @return {String} * @api private */ exports.attrs = function attrs(obj, escaped){ var buf = [] , terse = obj.terse; delete obj.terse; var keys = Object.keys(obj) , len = keys.length; if (len) { buf.push(''); for (var i = 0; i < len; ++i) { var key = keys[i] , val = obj[key]; if ('boolean' == typeof val || null == val) { if (val) { terse ? buf.push(key) : buf.push(key + '="' + key + '"'); } } else if (0 == key.indexOf('data') && 'string' != typeof val) { buf.push(key + "='" + JSON.stringify(val) + "'"); } else if ('class' == key) { if (escaped && escaped[key]){ if (val = exports.escape(joinClasses(val))) { buf.push(key + '="' + val + '"'); } } else { if (val = joinClasses(val)) { buf.push(key + '="' + val + '"'); } } } else if (escaped && escaped[key]) { buf.push(key + '="' + exports.escape(val) + '"'); } else { buf.push(key + '="' + val + '"'); } } } return buf.join(' '); }; /** * Escape the given string of `html`. * * @param {String} html * @return {String} * @api private */ exports.escape = function escape(html){ return String(html) .replace(/&/g, '&amp;') .replace(/</g, '&lt;') .replace(/>/g, '&gt;') .replace(/"/g, '&quot;'); }; /** * Re-throw the given `err` in context to the * the jade in `filename` at the given `lineno`. * * @param {Error} err * @param {String} filename * @param {String} lineno * @api private */ exports.rethrow = function rethrow(err, filename, lineno, str){ if (!(err instanceof Error)) throw err; if ((typeof window != 'undefined' || !filename) && !str) { err.message += ' on line ' + lineno; throw err; } try { str = str || require('fs').readFileSync(filename, 'utf8') } catch (ex) { rethrow(err, null, lineno) } var context = 3 , lines = str.split('\n') , start = Math.max(lineno - context, 0) , end = Math.min(lines.length, lineno + context); // Error context var context = lines.slice(start, end).map(function(line, i){ var curr = i + start + 1; return (curr == lineno ? ' > ' : ' ') + curr + '| ' + line; }).join('\n'); // Alter exception message err.path = filename; err.message = (filename || 'Jade') + ':' + lineno + '\n' + context + '\n\n' + err.message; throw err; }; },{"fs":2}],2:[function(require,module,exports){ // nothing to see here... no file methods for the browser },{}]},{},[1])(1) }); ; /*! * @preserve * Viewbridge 0.4.1 * Template functions exported via Viewbridge * github.com/corymartin/viewbridge */ void function(undefined) { // Namespaces // ---------- void function() { function createNamespace(ns_string) { // Adapted from similar function in JavaScript Patterns by Stoyan Stefanov var parts = ns_string.split('.'); var parent = window; for (var i = 0; i < parts.length; i++) { if (parent[parts[i]] == null) { parent[parts[i]] = {}; } parent = parent[parts[i]]; } }; var namespaces = [ 'viewbridge.movies' ]; for (var i = 0; i < namespaces.length; i++) { createNamespace(namespaces[i]); } }(); // Template Functions // ------------------ /* * Template: viewbridge.movies.table_row() */ viewbridge.movies.table_row = function anonymous(locals) { var buf = []; var locals_ = (locals || {}),title = locals_.title,studio = locals_.studio,like = locals_.like;buf.push("<td>" + (jade.escape(null == (jade.interp = title) ? "" : jade.interp)) + "</td><td>" + (jade.escape(null == (jade.interp = studio) ? "" : jade.interp)) + "</td><td>"); if ( like) { buf.push("<button class=\"pure-button pure-button-success like\">Yes</button>"); } else { buf.push("<button class=\"pure-button like\">No</button>"); } buf.push("</td>");;return buf.join(""); }; // Exports // ------- // CommonJS/Node.js Support if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = viewbridge; } exports.viewbridge = viewbridge; } // AMD/RequireJS Support else if (typeof define === 'function' && define.amd) { define(function() { return viewbridge; }); } }();