diff --git a/ajax/libs/clientside-haml-js/5.4/haml.js b/ajax/libs/clientside-haml-js/5.4/haml.js new file mode 100644 index 000000000..87dab975e --- /dev/null +++ b/ajax/libs/clientside-haml-js/5.4/haml.js @@ -0,0 +1,2302 @@ +// Generated by CoffeeScript 1.6.2 +/* + clientside HAML compiler for Javascript and Coffeescript (Version 5) + + Copyright 2011-12, Ronald Holshausen (https://github.com/uglyog) + Released under the MIT License (http://www.opensource.org/licenses/MIT) +*/ + + +(function() { + var Buffer, CodeGenerator, CoffeeCodeGenerator, HamlRuntime, JsCodeGenerator, ProductionJsCodeGenerator, Tokeniser, filters, haml, root, _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; }; + + root = this; + + /* + Haml runtime functions. These are used both by the compiler and the generated template functions + */ + + + HamlRuntime = { + /* + Taken from underscore.string.js escapeHTML, and replace the apos entity with character 39 so that it renders + correctly in IE7 + */ + + escapeHTML: function(str) { + return String(str || '').replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, "'"); + }, + /* + Provides the implementation to preserve the whitespace as per the HAML reference + */ + + perserveWhitespace: function(str) { + var i, out, re, result; + + re = /<[a-zA-Z]+>[^<]*<\/[a-zA-Z]+>/g; + out = ''; + i = 0; + result = re.exec(str); + if (result) { + while (result) { + out += str.substring(i, result.index); + out += result[0].replace(/\n/g, ' '); + i = result.index + result[0].length; + result = re.exec(str); + } + out += str.substring(i); + } else { + out = str; + } + return out; + }, + /* + Generates a error message including the current line in the source where the error occurred + */ + + templateError: function(lineNumber, characterNumber, currentLine, error) { + var i, message; + + message = error + " at line " + lineNumber + " and character " + characterNumber + ":\n" + currentLine + '\n'; + i = 0; + while (i < characterNumber - 1) { + message += '-'; + i++; + } + message += '^'; + return message; + }, + /* + Generates the attributes for the element by combining all the various sources together + */ + + generateElementAttributes: function(context, id, classes, objRefFn, attrList, attrFunction, lineNumber, characterNumber, currentLine, handleError) { + var attr, attributes, className, e, ex, hash, html, object, objectId, value; + + if (handleError == null) { + handleError = this._raiseError; + } + attributes = {}; + attributes = this.combineAttributes(attributes, 'id', id); + if (classes.length > 0 && classes[0].length > 0) { + attributes = this.combineAttributes(attributes, 'class', classes); + } + if (attrList != null) { + for (attr in attrList) { + if (!__hasProp.call(attrList, attr)) continue; + value = attrList[attr]; + attributes = this.combineAttributes(attributes, attr, value); + } + } + if (objRefFn != null) { + try { + object = objRefFn.call(context, context); + if (object != null) { + objectId = null; + if (object.id != null) { + objectId = object.id; + } else if (object.get) { + objectId = object.get('id'); + } + attributes = this.combineAttributes(attributes, 'id', objectId); + className = null; + if (object['class']) { + className = object['class']; + } else if (object.get) { + className = object.get('class'); + } + attributes = this.combineAttributes(attributes, 'class', className); + } + } catch (_error) { + e = _error; + handleError(haml.HamlRuntime.templateError(lineNumber, characterNumber, currentLine, "Error evaluating object reference - " + e)); + } + } + if (attrFunction != null) { + try { + hash = attrFunction.call(context, context); + if (hash != null) { + hash = this._flattenHash(null, hash); + for (attr in hash) { + if (!__hasProp.call(hash, attr)) continue; + value = hash[attr]; + attributes = this.combineAttributes(attributes, attr, value); + } + } + } catch (_error) { + ex = _error; + handleError(haml.HamlRuntime.templateError(lineNumber, characterNumber, currentLine, "Error evaluating attribute hash - " + ex)); + } + } + html = ''; + if (attributes) { + for (attr in attributes) { + if (!__hasProp.call(attributes, attr)) continue; + if (haml.hasValue(attributes[attr])) { + if ((attr === 'id' || attr === 'for') && attributes[attr] instanceof Array) { + html += ' ' + attr + '="' + _(attributes[attr]).flatten().join('-') + '"'; + } else if (attr === 'class' && attributes[attr] instanceof Array) { + html += ' ' + attr + '="' + _(attributes[attr]).flatten().join(' ') + '"'; + } else { + html += ' ' + attr + '="' + haml.attrValue(attr, attributes[attr]) + '"'; + } + } + } + } + return html; + }, + /* + Returns a white space string with a length of indent * 2 + */ + + indentText: function(indent) { + var i, text; + + text = ''; + i = 0; + while (i < indent) { + text += ' '; + i++; + } + return text; + }, + /* + Combines the attributes in the attributres hash with the given attribute and value + ID, FOR and CLASS attributes will expand to arrays when multiple values are provided + */ + + combineAttributes: function(attributes, attrName, attrValue) { + var classes; + + if (haml.hasValue(attrValue)) { + if (attrName === 'id' && attrValue.toString().length > 0) { + if (attributes && attributes.id instanceof Array) { + attributes.id.unshift(attrValue); + } else if (attributes && attributes.id) { + attributes.id = [attributes.id, attrValue]; + } else if (attributes) { + attributes.id = attrValue; + } else { + attributes = { + id: attrValue + }; + } + } else if (attrName === 'for' && attrValue.toString().length > 0) { + if (attributes && attributes['for'] instanceof Array) { + attributes['for'].unshift(attrValue); + } else if (attributes && attributes['for']) { + attributes['for'] = [attributes['for'], attrValue]; + } else if (attributes) { + attributes['for'] = attrValue; + } else { + attributes = { + 'for': attrValue + }; + } + } else if (attrName === 'class') { + classes = []; + if (attrValue instanceof Array) { + classes = classes.concat(attrValue); + } else { + classes.push(attrValue); + } + if (attributes && attributes['class']) { + attributes['class'] = attributes['class'].concat(classes); + } else if (attributes) { + attributes['class'] = classes; + } else { + attributes = { + 'class': classes + }; + } + } else if (attrName !== 'id') { + attributes || (attributes = {}); + attributes[attrName] = attrValue; + } + } + return attributes; + }, + /* + Flattens a deeply nested hash into a single hash by combining the keys with a minus + */ + + _flattenHash: function(rootKey, object) { + var attr, flattenedValue, key, keys, newKey, newValue, result, value; + + result = {}; + if (this._isHash(object)) { + for (attr in object) { + if (!__hasProp.call(object, attr)) continue; + value = object[attr]; + keys = []; + if (rootKey != null) { + keys.push(rootKey); + } + keys.push(attr); + key = keys.join('-'); + flattenedValue = this._flattenHash(key, value); + if (this._isHash(flattenedValue)) { + for (newKey in flattenedValue) { + if (!__hasProp.call(flattenedValue, newKey)) continue; + newValue = flattenedValue[newKey]; + result[newKey] = newValue; + } + } else { + result[key] = flattenedValue; + } + } + } else if (rootKey != null) { + result[rootKey] = object; + } else { + result = object; + } + return result; + }, + _isHash: function(object) { + return (object != null) && typeof object === 'object' && !(object instanceof Array || object instanceof Date); + }, + _logError: function(message) { + return typeof console !== "undefined" && console !== null ? console.log(message) : void 0; + }, + _raiseError: function(message) { + throw new Error(message); + }, + /* + trims the first number of characters from a string + */ + + trim: function(str, chars) { + return str.substring(chars); + } + }; + + /* + HAML Tokiniser: This class is responsible for parsing the haml source into tokens + */ + + + Tokeniser = (function() { + Tokeniser.prototype.currentLineMatcher = /[^\n]*/g; + + Tokeniser.prototype.tokenMatchers = { + whitespace: /[ \t]+/g, + element: /%[a-zA-Z][a-zA-Z0-9]*/g, + idSelector: /#[a-zA-Z_\-][a-zA-Z0-9_\-]*/g, + classSelector: /\.[a-zA-Z0-9_\-]+/g, + identifier: /[a-zA-Z][a-zA-Z0-9\-]*/g, + quotedString: /[\'][^\'\n]*[\']/g, + quotedString2: /[\"][^\"\n]*[\"]/g, + comment: /\-#/g, + escapeHtml: /\&=/g, + unescapeHtml: /\!=/g, + objectReference: /\[[a-zA-Z_@][a-zA-Z0-9_]*\]/g, + doctype: /!!!/g, + continueLine: /\|\s*\n/g, + filter: /:\w+/g + }; + + function Tokeniser(options) { + var errorFn, successFn, template, + _this = this; + + this.buffer = null; + this.bufferIndex = null; + this.prevToken = null; + this.token = null; + if (options.templateId != null) { + template = document.getElementById(options.templateId); + if (template) { + this.buffer = template.text; + this.bufferIndex = 0; + } else { + throw "Did not find a template with ID '" + options.templateId + "'"; + } + } else if (options.template != null) { + this.buffer = options.template; + this.bufferIndex = 0; + } else if (options.templateUrl != null) { + errorFn = function(jqXHR, textStatus, errorThrown) { + throw "Failed to fetch haml template at URL " + options.templateUrl + ": " + textStatus + " " + errorThrown; + }; + successFn = function(data) { + _this.buffer = data; + return _this.bufferIndex = 0; + }; + jQuery.ajax({ + url: options.templateUrl, + success: successFn, + error: errorFn, + dataType: 'text', + async: false, + beforeSend: function(xhr) { + return xhr.withCredentials = true; + } + }); + } + } + + /* + Try to match a token with the given regexp + */ + + + Tokeniser.prototype.matchToken = function(matcher) { + var result; + + matcher.lastIndex = this.bufferIndex; + result = matcher.exec(this.buffer); + if ((result != null ? result.index : void 0) === this.bufferIndex) { + return result[0]; + } + }; + + /* + Match a multi-character token + */ + + + Tokeniser.prototype.matchMultiCharToken = function(matcher, token, tokenStr) { + var matched, _ref; + + if (!this.token) { + matched = this.matchToken(matcher); + if (matched) { + this.token = token; + this.token.tokenString = (_ref = typeof tokenStr === "function" ? tokenStr(matched) : void 0) != null ? _ref : matched; + this.token.matched = matched; + return this.advanceCharsInBuffer(matched.length); + } + } + }; + + /* + Match a single character token + */ + + + Tokeniser.prototype.matchSingleCharToken = function(ch, token) { + if (!this.token && this.buffer.charAt(this.bufferIndex) === ch) { + this.token = token; + this.token.tokenString = ch; + this.token.matched = ch; + return this.advanceCharsInBuffer(1); + } + }; + + /* + Match and return the next token in the input buffer + */ + + + Tokeniser.prototype.getNextToken = function() { + var ch, ch1, str; + + if (isNaN(this.bufferIndex)) { + throw haml.HamlRuntime.templateError(this.lineNumber, this.characterNumber, this.currentLine, "An internal parser error has occurred in the HAML parser"); + } + this.prevToken = this.token; + this.token = null; + if (this.buffer === null || this.buffer.length === this.bufferIndex) { + this.token = { + eof: true, + token: 'EOF' + }; + } else { + this.initLine(); + if (!this.token) { + ch = this.buffer.charCodeAt(this.bufferIndex); + ch1 = this.buffer.charCodeAt(this.bufferIndex + 1); + if (ch === 10 || (ch === 13 && ch1 === 10)) { + this.token = { + eol: true, + token: 'EOL' + }; + if (ch === 13 && ch1 === 10) { + this.advanceCharsInBuffer(2); + this.token.matched = String.fromCharCode(ch) + String.fromCharCode(ch1); + } else { + this.advanceCharsInBuffer(1); + this.token.matched = String.fromCharCode(ch); + } + this.characterNumber = 0; + this.currentLine = this.getCurrentLine(); + } + } + this.matchMultiCharToken(this.tokenMatchers.whitespace, { + ws: true, + token: 'WS' + }); + this.matchMultiCharToken(this.tokenMatchers.continueLine, { + continueLine: true, + token: 'CONTINUELINE' + }); + this.matchMultiCharToken(this.tokenMatchers.element, { + element: true, + token: 'ELEMENT' + }, function(matched) { + return matched.substring(1); + }); + this.matchMultiCharToken(this.tokenMatchers.idSelector, { + idSelector: true, + token: 'ID' + }, function(matched) { + return matched.substring(1); + }); + this.matchMultiCharToken(this.tokenMatchers.classSelector, { + classSelector: true, + token: 'CLASS' + }, function(matched) { + return matched.substring(1); + }); + this.matchMultiCharToken(this.tokenMatchers.identifier, { + identifier: true, + token: 'IDENTIFIER' + }); + this.matchMultiCharToken(this.tokenMatchers.doctype, { + doctype: true, + token: 'DOCTYPE' + }); + this.matchMultiCharToken(this.tokenMatchers.filter, { + filter: true, + token: 'FILTER' + }, function(matched) { + return matched.substring(1); + }); + if (!this.token) { + str = this.matchToken(this.tokenMatchers.quotedString); + if (!str) { + str = this.matchToken(this.tokenMatchers.quotedString2); + } + if (str) { + this.token = { + string: true, + token: 'STRING', + tokenString: str.substring(1, str.length - 1), + matched: str + }; + this.advanceCharsInBuffer(str.length); + } + } + this.matchMultiCharToken(this.tokenMatchers.comment, { + comment: true, + token: 'COMMENT' + }); + this.matchMultiCharToken(this.tokenMatchers.escapeHtml, { + escapeHtml: true, + token: 'ESCAPEHTML' + }); + this.matchMultiCharToken(this.tokenMatchers.unescapeHtml, { + unescapeHtml: true, + token: 'UNESCAPEHTML' + }); + this.matchMultiCharToken(this.tokenMatchers.objectReference, { + objectReference: true, + token: 'OBJECTREFERENCE' + }, function(matched) { + return matched.substring(1, matched.length - 1); + }); + if (!this.token && this.buffer && this.buffer.charAt(this.bufferIndex) === '{') { + this.matchJavascriptHash(); + } + this.matchSingleCharToken('(', { + openBracket: true, + token: 'OPENBRACKET' + }); + this.matchSingleCharToken(')', { + closeBracket: true, + token: 'CLOSEBRACKET' + }); + this.matchSingleCharToken('=', { + equal: true, + token: 'EQUAL' + }); + this.matchSingleCharToken('/', { + slash: true, + token: 'SLASH' + }); + this.matchSingleCharToken('!', { + exclamation: true, + token: 'EXCLAMATION' + }); + this.matchSingleCharToken('-', { + minus: true, + token: 'MINUS' + }); + this.matchSingleCharToken('&', { + amp: true, + token: 'AMP' + }); + this.matchSingleCharToken('<', { + lt: true, + token: 'LT' + }); + this.matchSingleCharToken('>', { + gt: true, + token: 'GT' + }); + this.matchSingleCharToken('~', { + tilde: true, + token: 'TILDE' + }); + if (this.token === null) { + this.token = { + unknown: true, + token: 'UNKNOWN', + matched: this.buffer.charAt(this.bufferIndex) + }; + this.advanceCharsInBuffer(1); + } + } + return this.token; + }; + + /* + Look ahead a number of tokens and return the token found + */ + + + Tokeniser.prototype.lookAhead = function(numberOfTokens) { + var bufferIndex, characterNumber, currentLine, currentToken, i, lineNumber, prevToken, token; + + token = null; + if (numberOfTokens > 0) { + currentToken = this.token; + prevToken = this.prevToken; + currentLine = this.currentLine; + lineNumber = this.lineNumber; + characterNumber = this.characterNumber; + bufferIndex = this.bufferIndex; + i = 0; + while (i++ < numberOfTokens) { + token = this.getNextToken(); + } + this.token = currentToken; + this.prevToken = prevToken; + this.currentLine = currentLine; + this.lineNumber = lineNumber; + this.characterNumber = characterNumber; + this.bufferIndex = bufferIndex; + } + return token; + }; + + /* + Initilise the line and character counters + */ + + + Tokeniser.prototype.initLine = function() { + if (!this.currentLine && this.currentLine !== "") { + this.currentLine = this.getCurrentLine(); + this.lineNumber = 1; + return this.characterNumber = 0; + } + }; + + /* + Returns the current line in the input buffer + */ + + + Tokeniser.prototype.getCurrentLine = function(index) { + var line; + + this.currentLineMatcher.lastIndex = this.bufferIndex + (index != null ? index : 0); + line = this.currentLineMatcher.exec(this.buffer); + if (line) { + return line[0]; + } else { + return ''; + } + }; + + /* + Returns an error string filled out with the line and character counters + */ + + + Tokeniser.prototype.parseError = function(error) { + return haml.HamlRuntime.templateError(this.lineNumber, this.characterNumber, this.currentLine, error); + }; + + /* + Skips to the end of the line and returns the string that was skipped + */ + + + Tokeniser.prototype.skipToEOLorEOF = function() { + var contents, line, text; + + text = ''; + if (!(this.token.eof || this.token.eol)) { + if (this.token.matched != null) { + text += this.token.matched; + } + this.currentLineMatcher.lastIndex = this.bufferIndex; + line = this.currentLineMatcher.exec(this.buffer); + if (line && line.index === this.bufferIndex) { + contents = (_.str || _).rtrim(line[0]); + if ((_.str || _).endsWith(contents, '|')) { + text += contents.substring(0, contents.length - 1); + this.advanceCharsInBuffer(contents.length - 1); + this.getNextToken(); + text += this.parseMultiLine(); + } else { + text += line[0]; + this.advanceCharsInBuffer(line[0].length); + this.getNextToken(); + } + } + } + return text; + }; + + /* + Parses a multiline code block and returns the parsed text + */ + + + Tokeniser.prototype.parseMultiLine = function() { + var contents, line, text; + + text = ''; + while (this.token.continueLine) { + this.currentLineMatcher.lastIndex = this.bufferIndex; + line = this.currentLineMatcher.exec(this.buffer); + if (line && line.index === this.bufferIndex) { + contents = (_.str || _).rtrim(line[0]); + if ((_.str || _).endsWith(contents, '|')) { + text += contents.substring(0, contents.length - 1); + this.advanceCharsInBuffer(contents.length - 1); + } + this.getNextToken(); + } + } + return text; + }; + + /* + Advances the input buffer pointer by a number of characters, updating the line and character counters + */ + + + Tokeniser.prototype.advanceCharsInBuffer = function(numChars) { + var ch, ch1, i; + + i = 0; + while (i < numChars) { + ch = this.buffer.charCodeAt(this.bufferIndex + i); + ch1 = this.buffer.charCodeAt(this.bufferIndex + i + 1); + if (ch === 13 && ch1 === 10) { + this.lineNumber++; + this.characterNumber = 0; + this.currentLine = this.getCurrentLine(i); + i++; + } else if (ch === 10) { + this.lineNumber++; + this.characterNumber = 0; + this.currentLine = this.getCurrentLine(i); + } else { + this.characterNumber++; + } + i++; + } + return this.bufferIndex += numChars; + }; + + /* + Returns the current line and character counters + */ + + + Tokeniser.prototype.currentParsePoint = function() { + return { + lineNumber: this.lineNumber, + characterNumber: this.characterNumber, + currentLine: this.currentLine + }; + }; + + /* + Pushes back the current token onto the front of the input buffer + */ + + + Tokeniser.prototype.pushBackToken = function() { + if (!this.token.eof) { + this.bufferIndex -= this.token.matched.length; + return this.token = this.prevToken; + } + }; + + /* + Is the current token an end of line or end of input buffer + */ + + + Tokeniser.prototype.isEolOrEof = function() { + return this.token.eol || this.token.eof; + }; + + /* + Match a Javascript Hash {...} + */ + + + Tokeniser.prototype.matchJavascriptHash = function() { + var braceCount, ch, chCode, characterNumberStart, currentIndent, i, lineNumberStart; + + currentIndent = this.calculateCurrentIndent(); + i = this.bufferIndex + 1; + characterNumberStart = this.characterNumber; + lineNumberStart = this.lineNumber; + braceCount = 1; + while (i < this.buffer.length && (braceCount > 1 || this.buffer.charAt(i) !== '}')) { + ch = this.buffer.charAt(i); + chCode = this.buffer.charCodeAt(i); + if (ch === '{') { + braceCount++; + i++; + } else if (ch === '}') { + braceCount--; + i++; + } else if (chCode === 10 || chCode === 13) { + i++; + } else { + i++; + } + } + if (i === this.buffer.length) { + this.characterNumber = characterNumberStart + 1; + this.lineNumber = lineNumberStart; + throw this.parseError('Error parsing attribute hash - Did not find a terminating "}"'); + } else { + this.token = { + attributeHash: true, + token: 'ATTRHASH', + tokenString: this.buffer.substring(this.bufferIndex, i + 1), + matched: this.buffer.substring(this.bufferIndex, i + 1) + }; + return this.advanceCharsInBuffer(i - this.bufferIndex + 1); + } + }; + + /* + Calculate the indent value of the current line + */ + + + Tokeniser.prototype.calculateCurrentIndent = function() { + var result; + + this.tokenMatchers.whitespace.lastIndex = 0; + result = this.tokenMatchers.whitespace.exec(this.currentLine); + if ((result != null ? result.index : void 0) === 0) { + return this.calculateIndent(result[0]); + } else { + return 0; + } + }; + + /* + Calculate the indent level of the provided whitespace + */ + + + Tokeniser.prototype.calculateIndent = function(whitespace) { + var i, indent; + + indent = 0; + i = 0; + while (i < whitespace.length) { + if (whitespace.charCodeAt(i) === 9) { + indent += 2; + } else { + indent++; + } + i++; + } + return Math.floor((indent + 1) / 2); + }; + + return Tokeniser; + + })(); + + /* + Provides buffering between the generated javascript and html contents + */ + + + Buffer = (function() { + function Buffer(generator) { + this.generator = generator; + this.buffer = ''; + this.outputBuffer = ''; + } + + Buffer.prototype.append = function(str) { + if ((this.generator != null) && this.buffer.length === 0) { + this.generator.mark(); + } + if ((str != null ? str.length : void 0) > 0) { + return this.buffer += str; + } + }; + + Buffer.prototype.appendToOutputBuffer = function(str) { + if ((str != null ? str.length : void 0) > 0) { + this.flush(); + return this.outputBuffer += str; + } + }; + + Buffer.prototype.flush = function() { + var _ref; + + if (((_ref = this.buffer) != null ? _ref.length : void 0) > 0) { + this.outputBuffer += this.generator.generateFlush(this.buffer); + } + return this.buffer = ''; + }; + + Buffer.prototype.output = function() { + return this.outputBuffer; + }; + + Buffer.prototype.trimWhitespace = function() { + var ch, i; + + if (this.buffer.length > 0) { + i = this.buffer.length - 1; + while (i > 0) { + ch = this.buffer.charAt(i); + if (this._isWhitespace(ch)) { + i--; + } else if (i > 1 && (ch === 'n' || ch === 't') && (this.buffer.charAt(i - 1) === '\\')) { + i -= 2; + } else { + break; + } + } + if (i > 0 && i < this.buffer.length - 1) { + return this.buffer = this.buffer.substring(0, i + 1); + } else if (i === 0 && this._isWhitespace(this.buffer.charAt(0))) { + return this.buffer = ''; + } + } + }; + + Buffer.prototype._isWhitespace = function(ch) { + return ch === ' ' || ch === '\t' || ch === '\n'; + }; + + return Buffer; + + })(); + + /* + Common code shared across all code generators + */ + + + CodeGenerator = (function() { + function CodeGenerator() {} + + CodeGenerator.prototype.embeddedCodeBlockMatcher = /#{([^}]*)}/g; + + return CodeGenerator; + + })(); + + /* + Code generator that generates a Javascript function body + */ + + + JsCodeGenerator = (function(_super) { + __extends(JsCodeGenerator, _super); + + function JsCodeGenerator(options) { + this.options = options; + this.outputBuffer = new haml.Buffer(this); + } + + /* + Append a line with embedded javascript code + */ + + + JsCodeGenerator.prototype.appendEmbeddedCode = function(indentText, expression, escapeContents, perserveWhitespace, currentParsePoint) { + this.outputBuffer.flush(); + this.outputBuffer.appendToOutputBuffer(indentText + 'try {\n'); + this.outputBuffer.appendToOutputBuffer(indentText + ' var value = eval("' + (_.str || _).trim(expression).replace(/"/g, '\\"').replace(/\\n/g, '\\\\n') + '");\n'); + this.outputBuffer.appendToOutputBuffer(indentText + ' value = value === null ? "" : value;'); + if (escapeContents) { + this.outputBuffer.appendToOutputBuffer(indentText + ' html.push(haml.HamlRuntime.escapeHTML(String(value)));\n'); + } else if (perserveWhitespace) { + this.outputBuffer.appendToOutputBuffer(indentText + ' html.push(haml.HamlRuntime.perserveWhitespace(String(value)));\n'); + } else { + this.outputBuffer.appendToOutputBuffer(indentText + ' html.push(String(value));\n'); + } + this.outputBuffer.appendToOutputBuffer(indentText + '} catch (e) {\n'); + this.outputBuffer.appendToOutputBuffer(indentText + ' handleError(haml.HamlRuntime.templateError(' + currentParsePoint.lineNumber + ', ' + currentParsePoint.characterNumber + ', "' + this.escapeCode(currentParsePoint.currentLine) + '",\n'); + this.outputBuffer.appendToOutputBuffer(indentText + ' "Error evaluating expression - " + e));\n'); + return this.outputBuffer.appendToOutputBuffer(indentText + '}\n'); + }; + + /* + Initilising the output buffer with any variables or code + */ + + + JsCodeGenerator.prototype.initOutput = function() { + var _ref; + + if ((_ref = this.options) != null ? _ref.tolerateFaults : void 0) { + this.outputBuffer.appendToOutputBuffer(' var handleError = haml.HamlRuntime._logError;'); + } else { + this.outputBuffer.appendToOutputBuffer(' var handleError = haml.HamlRuntime._raiseError;'); + } + return this.outputBuffer.appendToOutputBuffer('var html = [];\nvar hashFunction = null, hashObject = null, objRef = null, objRefFn = null;\nwith (context || {}) {'); + }; + + /* + Flush and close the output buffer and return the contents + */ + + + JsCodeGenerator.prototype.closeAndReturnOutput = function() { + this.outputBuffer.flush(); + return this.outputBuffer.output() + ' }\n return html.join("");\n'; + }; + + /* + Append a line of code to the output buffer + */ + + + JsCodeGenerator.prototype.appendCodeLine = function(line, eol) { + this.outputBuffer.flush(); + this.outputBuffer.appendToOutputBuffer(HamlRuntime.indentText(this.indent)); + this.outputBuffer.appendToOutputBuffer(line); + return this.outputBuffer.appendToOutputBuffer(eol); + }; + + /* + Does the current line end with a function declaration? + */ + + + JsCodeGenerator.prototype.lineMatchesStartFunctionBlock = function(line) { + return line.match(/function\s*\((,?\s*\w+)*\)\s*\{\s*$/); + }; + + /* + Does the current line end with a starting code block + */ + + + JsCodeGenerator.prototype.lineMatchesStartBlock = function(line) { + return line.match(/\{\s*$/); + }; + + /* + Generate the code to close off a code block + */ + + + JsCodeGenerator.prototype.closeOffCodeBlock = function(tokeniser) { + if (!(tokeniser.token.minus && tokeniser.matchToken(/\s*\}/g))) { + this.outputBuffer.flush(); + return this.outputBuffer.appendToOutputBuffer(HamlRuntime.indentText(this.indent) + '}\n'); + } + }; + + /* + Generate the code to close off a function parameter + */ + + + JsCodeGenerator.prototype.closeOffFunctionBlock = function(tokeniser) { + if (!(tokeniser.token.minus && tokeniser.matchToken(/\s*\}/g))) { + this.outputBuffer.flush(); + return this.outputBuffer.appendToOutputBuffer(HamlRuntime.indentText(this.indent) + '});\n'); + } + }; + + /* + Generate the code for dynamic attributes ({} form) + */ + + + JsCodeGenerator.prototype.generateCodeForDynamicAttributes = function(id, classes, attributeList, attributeHash, objectRef, currentParsePoint) { + this.outputBuffer.flush(); + if (attributeHash.length > 0) { + attributeHash = this.replaceReservedWordsInHash(attributeHash); + this.outputBuffer.appendToOutputBuffer(' hashFunction = function () { return eval("hashObject = ' + attributeHash.replace(/"/g, '\\"').replace(/\n/g, '\\n') + '"); };\n'); + } else { + this.outputBuffer.appendToOutputBuffer(' hashFunction = null;\n'); + } + if (objectRef.length > 0) { + this.outputBuffer.appendToOutputBuffer(' objRefFn = function () { return eval("objRef = ' + objectRef.replace(/"/g, '\\"') + '"); };\n'); + } else { + this.outputBuffer.appendToOutputBuffer(' objRefFn = null;\n'); + } + return this.outputBuffer.appendToOutputBuffer(' html.push(haml.HamlRuntime.generateElementAttributes(context, "' + id + '", ["' + classes.join('","') + '"], objRefFn, ' + JSON.stringify(attributeList) + ', hashFunction, ' + currentParsePoint.lineNumber + ', ' + currentParsePoint.characterNumber + ', "' + this.escapeCode(currentParsePoint.currentLine) + '", handleError));\n'); + }; + + /* + Clean any reserved words in the given hash + */ + + + JsCodeGenerator.prototype.replaceReservedWordsInHash = function(hash) { + var reservedWord, resultHash, _i, _len, _ref; + + resultHash = hash; + _ref = ['class', 'for']; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + reservedWord = _ref[_i]; + resultHash = resultHash.replace(reservedWord + ':', '"' + reservedWord + '":'); + } + return resultHash; + }; + + /* + Escape the line so it is safe to put into a javascript string + */ + + + JsCodeGenerator.prototype.escapeCode = function(jsStr) { + return jsStr.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r'); + }; + + /* + Generate a function from the function body + */ + + + JsCodeGenerator.prototype.generateJsFunction = function(functionBody) { + var e; + + try { + return new Function('context', functionBody); + } catch (_error) { + e = _error; + throw "Incorrect embedded code has resulted in an invalid Haml function - " + e + "\nGenerated Function:\n" + functionBody; + } + }; + + /* + Generate the code required to support a buffer flush + */ + + + JsCodeGenerator.prototype.generateFlush = function(bufferStr) { + return ' html.push("' + this.escapeCode(bufferStr) + '");\n'; + }; + + /* + Set the current indent level + */ + + + JsCodeGenerator.prototype.setIndent = function(indent) { + return this.indent = indent; + }; + + /* + Save the current indent level if required + */ + + + JsCodeGenerator.prototype.mark = function() {}; + + /* + Append the text contents to the buffer, expanding any embedded code + */ + + + JsCodeGenerator.prototype.appendTextContents = function(text, shouldInterpolate, currentParsePoint, options) { + if (options == null) { + options = {}; + } + if (shouldInterpolate && text.match(/#{[^}]*}/)) { + return this.interpolateString(text, currentParsePoint, options); + } else { + return this.outputBuffer.append(this.processText(text, options)); + } + }; + + /* + Interpolate any embedded code in the text + */ + + + JsCodeGenerator.prototype.interpolateString = function(text, currentParsePoint, options) { + var index, precheedingChar, precheedingChar2, result; + + index = 0; + result = this.embeddedCodeBlockMatcher.exec(text); + while (result) { + if (result.index > 0) { + precheedingChar = text.charAt(result.index - 1); + } + if (result.index > 1) { + precheedingChar2 = text.charAt(result.index - 2); + } + if (precheedingChar === '\\' && precheedingChar2 !== '\\') { + if (result.index !== 0) { + this.outputBuffer.append(this.processText(text.substring(index, result.index - 1), options)); + } + this.outputBuffer.append(this.processText(result[0]), options); + } else { + this.outputBuffer.append(this.processText(text.substring(index, result.index)), options); + this.appendEmbeddedCode(HamlRuntime.indentText(this.indent + 1), result[1], options.escapeHTML, options.perserveWhitespace, currentParsePoint); + } + index = this.embeddedCodeBlockMatcher.lastIndex; + result = this.embeddedCodeBlockMatcher.exec(text); + } + if (index < text.length) { + return this.outputBuffer.append(this.processText(text.substring(index), options)); + } + }; + + /* + process text based on escape and preserve flags + */ + + + JsCodeGenerator.prototype.processText = function(text, options) { + if (options != null ? options.escapeHTML : void 0) { + return haml.HamlRuntime.escapeHTML(text); + } else if (options != null ? options.perserveWhitespace : void 0) { + return haml.HamlRuntime.perserveWhitespace(text); + } else { + return text; + } + }; + + return JsCodeGenerator; + + })(CodeGenerator); + + /* + Code generator that generates javascript code without runtime evaluation + */ + + + ProductionJsCodeGenerator = (function(_super) { + __extends(ProductionJsCodeGenerator, _super); + + function ProductionJsCodeGenerator() { + _ref = ProductionJsCodeGenerator.__super__.constructor.apply(this, arguments); + return _ref; + } + + /* + Append a line with embedded javascript code + */ + + + ProductionJsCodeGenerator.prototype.appendEmbeddedCode = function(indentText, expression, escapeContents, perserveWhitespace, currentParsePoint) { + this.outputBuffer.flush(); + this.outputBuffer.appendToOutputBuffer(indentText + ' value = ' + (_.str || _).trim(expression) + ';\n'); + this.outputBuffer.appendToOutputBuffer(indentText + ' value = value === null ? "" : value;'); + if (escapeContents) { + return this.outputBuffer.appendToOutputBuffer(indentText + ' html.push(haml.HamlRuntime.escapeHTML(String(value)));\n'); + } else if (perserveWhitespace) { + return this.outputBuffer.appendToOutputBuffer(indentText + ' html.push(haml.HamlRuntime.perserveWhitespace(String(value)));\n'); + } else { + return this.outputBuffer.appendToOutputBuffer(indentText + ' html.push(String(value));\n'); + } + }; + + /* + Generate the code for dynamic attributes ({} form) + */ + + + ProductionJsCodeGenerator.prototype.generateCodeForDynamicAttributes = function(id, classes, attributeList, attributeHash, objectRef, currentParsePoint) { + this.outputBuffer.flush(); + if (attributeHash.length > 0) { + attributeHash = this.replaceReservedWordsInHash(attributeHash); + this.outputBuffer.appendToOutputBuffer(' hashFunction = function () { return ' + attributeHash + '; };\n'); + } else { + this.outputBuffer.appendToOutputBuffer(' hashFunction = null;\n'); + } + if (objectRef.length > 0) { + this.outputBuffer.appendToOutputBuffer(' objRefFn = function () { return ' + objectRef + '; };\n'); + } else { + this.outputBuffer.appendToOutputBuffer(' objRefFn = null;\n'); + } + return this.outputBuffer.appendToOutputBuffer(' html.push(haml.HamlRuntime.generateElementAttributes(context, "' + id + '", ["' + classes.join('","') + '"], objRefFn, ' + JSON.stringify(attributeList) + ', hashFunction, ' + currentParsePoint.lineNumber + ', ' + currentParsePoint.characterNumber + ', "' + this.escapeCode(currentParsePoint.currentLine) + '"));\n'); + }; + + /* + Initilising the output buffer with any variables or code + */ + + + ProductionJsCodeGenerator.prototype.initOutput = function() { + return this.outputBuffer.appendToOutputBuffer(' var html = [];\n' + ' var hashFunction = null, hashObject = null, objRef = null, objRefFn = null, value= null;\n with (context || {}) {\n'); + }; + + return ProductionJsCodeGenerator; + + })(JsCodeGenerator); + + /* + Code generator that generates a coffeescript function body + */ + + + CoffeeCodeGenerator = (function(_super) { + __extends(CoffeeCodeGenerator, _super); + + function CoffeeCodeGenerator(options) { + this.options = options; + this.outputBuffer = new haml.Buffer(this); + } + + CoffeeCodeGenerator.prototype.appendEmbeddedCode = function(indentText, expression, escapeContents, perserveWhitespace, currentParsePoint) { + var indent; + + this.outputBuffer.flush(); + indent = this.calcCodeIndent(); + this.outputBuffer.appendToOutputBuffer(indent + "try\n"); + this.outputBuffer.appendToOutputBuffer(indent + " exp = CoffeeScript.compile('" + expression.replace(/'/g, "\\'").replace(/\\n/g, '\\\\n') + "', bare: true)\n"); + this.outputBuffer.appendToOutputBuffer(indent + " value = eval(exp)\n"); + this.outputBuffer.appendToOutputBuffer(indent + " value ?= ''\n"); + if (escapeContents) { + this.outputBuffer.appendToOutputBuffer(indent + " html.push(haml.HamlRuntime.escapeHTML(String(value)))\n"); + } else if (perserveWhitespace) { + this.outputBuffer.appendToOutputBuffer(indent + " html.push(haml.HamlRuntime.perserveWhitespace(String(value)))\n"); + } else { + this.outputBuffer.appendToOutputBuffer(indent + " html.push(String(value))\n"); + } + this.outputBuffer.appendToOutputBuffer(indent + "catch e \n"); + this.outputBuffer.appendToOutputBuffer(indent + " handleError new Error(haml.HamlRuntime.templateError(" + currentParsePoint.lineNumber + ", " + currentParsePoint.characterNumber + ", '" + this.escapeCode(currentParsePoint.currentLine) + "',\n"); + return this.outputBuffer.appendToOutputBuffer(indent + " 'Error evaluating expression - ' + e))\n"); + }; + + CoffeeCodeGenerator.prototype.initOutput = function() { + var _ref1; + + if ((_ref1 = this.options) != null ? _ref1.tolerateFaults : void 0) { + this.outputBuffer.appendToOutputBuffer('handleError = haml.HamlRuntime._logError\n'); + } else { + this.outputBuffer.appendToOutputBuffer('handleError = haml.HamlRuntime._raiseError\n'); + } + return this.outputBuffer.appendToOutputBuffer('html = []\n'); + }; + + CoffeeCodeGenerator.prototype.closeAndReturnOutput = function() { + this.outputBuffer.flush(); + return this.outputBuffer.output() + 'return html.join("")\n'; + }; + + CoffeeCodeGenerator.prototype.appendCodeLine = function(line, eol) { + this.outputBuffer.flush(); + this.outputBuffer.appendToOutputBuffer(this.calcCodeIndent()); + this.outputBuffer.appendToOutputBuffer((_.str || _).trim(line)); + this.outputBuffer.appendToOutputBuffer(eol); + return this.prevCodeIndent = this.indent; + }; + + CoffeeCodeGenerator.prototype.lineMatchesStartFunctionBlock = function(line) { + return line.match(/\) [\-=]>\s*$/); + }; + + CoffeeCodeGenerator.prototype.lineMatchesStartBlock = function(line) { + return true; + }; + + CoffeeCodeGenerator.prototype.closeOffCodeBlock = function(tokeniser) { + return this.outputBuffer.flush(); + }; + + CoffeeCodeGenerator.prototype.closeOffFunctionBlock = function(tokeniser) { + return this.outputBuffer.flush(); + }; + + CoffeeCodeGenerator.prototype.generateCodeForDynamicAttributes = function(id, classes, attributeList, attributeHash, objectRef, currentParsePoint) { + var indent; + + this.outputBuffer.flush(); + indent = this.calcCodeIndent(); + if (attributeHash.length > 0) { + attributeHash = this.replaceReservedWordsInHash(attributeHash); + this.outputBuffer.appendToOutputBuffer(indent + "hashFunction = () -> s = CoffeeScript.compile('" + attributeHash.replace(/'/g, "\\'").replace(/\n/g, '\\n') + "', bare: true); eval 'hashObject = ' + s\n"); + } else { + this.outputBuffer.appendToOutputBuffer(indent + "hashFunction = null\n"); + } + if (objectRef.length > 0) { + this.outputBuffer.appendToOutputBuffer(indent + "objRefFn = () -> s = CoffeeScript.compile('" + objectRef.replace(/'/g, "\\'") + "', bare: true); eval 'objRef = ' + s\n"); + } else { + this.outputBuffer.appendToOutputBuffer(indent + "objRefFn = null\n"); + } + return this.outputBuffer.appendToOutputBuffer(indent + "html.push(haml.HamlRuntime.generateElementAttributes(this, '" + id + "', ['" + classes.join("','") + "'], objRefFn ? null, " + JSON.stringify(attributeList) + ", hashFunction ? null, " + currentParsePoint.lineNumber + ", " + currentParsePoint.characterNumber + ", '" + this.escapeCode(currentParsePoint.currentLine) + "', handleError))\n"); + }; + + CoffeeCodeGenerator.prototype.replaceReservedWordsInHash = function(hash) { + var reservedWord, resultHash, _i, _len, _ref1; + + resultHash = hash; + _ref1 = ['class', 'for']; + for (_i = 0, _len = _ref1.length; _i < _len; _i++) { + reservedWord = _ref1[_i]; + resultHash = resultHash.replace(reservedWord + ':', "'" + reservedWord + "':"); + } + return resultHash; + }; + + /* + Escapes the string for insertion into the generated code. Embedded code blocks in strings must not be escaped + */ + + + CoffeeCodeGenerator.prototype.escapeCode = function(str) { + var index, outString, precheedingChar, precheedingChar2, result; + + outString = ''; + index = 0; + result = this.embeddedCodeBlockMatcher.exec(str); + while (result) { + if (result.index > 0) { + precheedingChar = str.charAt(result.index - 1); + } + if (result.index > 1) { + precheedingChar2 = str.charAt(result.index - 2); + } + if (precheedingChar === '\\' && precheedingChar2 !== '\\') { + if (result.index !== 0) { + outString += this._escapeText(str.substring(index, result.index - 1)); + } + outString += this._escapeText('\\' + result[0]); + } else { + outString += this._escapeText(str.substring(index, result.index)); + outString += result[0]; + } + index = this.embeddedCodeBlockMatcher.lastIndex; + result = this.embeddedCodeBlockMatcher.exec(str); + } + if (index < str.length) { + outString += this._escapeText(str.substring(index)); + } + return outString; + }; + + CoffeeCodeGenerator.prototype._escapeText = function(text) { + return text.replace(/\\/g, '\\\\').replace(/'/g, '\\\'').replace(/"/g, '\\\"').replace(/\n/g, '\\n').replace(/(^|[^\\]{2})\\\\#{/g, '$1\\#{'); + }; + + /* + Generates the javascript function by compiling the given code with coffeescript compiler + */ + + + CoffeeCodeGenerator.prototype.generateJsFunction = function(functionBody) { + var e, fn; + + try { + fn = CoffeeScript.compile(functionBody, { + bare: true + }); + return new Function(fn); + } catch (_error) { + e = _error; + throw "Incorrect embedded code has resulted in an invalid Haml function - " + e + "\nGenerated Function:\n" + fn; + } + }; + + CoffeeCodeGenerator.prototype.generateFlush = function(bufferStr) { + return this.calcCodeIndent() + "html.push('" + this.escapeCode(bufferStr) + "')\n"; + }; + + CoffeeCodeGenerator.prototype.setIndent = function(indent) { + return this.indent = indent; + }; + + CoffeeCodeGenerator.prototype.mark = function() { + return this.prevIndent = this.indent; + }; + + CoffeeCodeGenerator.prototype.calcCodeIndent = function() { + var codeIndent, i, _i, _ref1, _ref2, _ref3; + + codeIndent = 0; + for (i = _i = 0, _ref1 = this.indent; 0 <= _ref1 ? _i <= _ref1 : _i >= _ref1; i = 0 <= _ref1 ? ++_i : --_i) { + if (((_ref2 = this.elementStack[i]) != null ? _ref2.block : void 0) || ((_ref3 = this.elementStack[i]) != null ? _ref3.fnBlock : void 0)) { + codeIndent += 1; + } + } + return HamlRuntime.indentText(codeIndent); + }; + + /* + Append the text contents to the buffer (interpolating embedded code not required for coffeescript) + */ + + + CoffeeCodeGenerator.prototype.appendTextContents = function(text, shouldInterpolate, currentParsePoint, options) { + var prefix, suffix; + + if (shouldInterpolate && text.match(/#{[^}]*}/)) { + this.outputBuffer.flush(); + prefix = suffix = ''; + if (options != null ? options.escapeHTML : void 0) { + prefix = 'haml.HamlRuntime.escapeHTML('; + suffix = ')'; + } else if (options != null ? options.perserveWhitespace : void 0) { + prefix = 'haml.HamlRuntime.perserveWhitespace('; + suffix = ')'; + } + return this.outputBuffer.appendToOutputBuffer(this.calcCodeIndent() + 'html.push(' + prefix + '"' + this.escapeCode(text) + '"' + suffix + ')\n'); + } else { + if (options != null ? options.escapeHTML : void 0) { + text = haml.HamlRuntime.escapeHTML(text); + } + if (options != null ? options.perserveWhitespace : void 0) { + text = haml.HamlRuntime.perserveWhitespace(text); + } + return this.outputBuffer.append(text); + } + }; + + return CoffeeCodeGenerator; + + })(CodeGenerator); + + /* + HAML filters are functions that take 3 parameters + contents: The contents block for the filter an array of lines of text + generator: The current generator for the compiled function + indent: The current indent level + currentParsePoint: line and character counters for the current parse point in the input buffer + */ + + + filters = { + /* + Plain filter, just renders the text in the block + */ + + plain: function(contents, generator, indent, currentParsePoint) { + var line, _i, _len; + + for (_i = 0, _len = contents.length; _i < _len; _i++) { + line = contents[_i]; + generator.appendTextContents(haml.HamlRuntime.indentText(indent - 1) + line + '\n', true, currentParsePoint); + } + return true; + }, + /* + Wraps the filter block in a javascript tag + */ + + javascript: function(contents, generator, indent, currentParsePoint) { + var line, _i, _len; + + generator.outputBuffer.append(haml.HamlRuntime.indentText(indent) + "\n"); + }, + /* + Wraps the filter block in a style tag + */ + + css: function(contents, generator, indent, currentParsePoint) { + var line, _i, _len; + + generator.outputBuffer.append(haml.HamlRuntime.indentText(indent) + "\n"); + }, + /* + Wraps the filter block in a CDATA tag + */ + + cdata: function(contents, generator, indent, currentParsePoint) { + var line, _i, _len; + + generator.outputBuffer.append(haml.HamlRuntime.indentText(indent) + "\n"); + }, + /* + Preserve filter, preserved blocks of text aren't indented, and newlines are replaced with the HTML escape code for newlines + */ + + preserve: function(contents, generator, indent, currentParsePoint) { + var line; + + generator.appendTextContents(haml.HamlRuntime.indentText(indent), false, currentParsePoint); + return generator.appendTextContents(((function() { + var _i, _len, _results; + + _results = []; + for (_i = 0, _len = contents.length; _i < _len; _i++) { + line = contents[_i]; + _results.push(haml.HamlRuntime.trim(line, 2)); + } + return _results; + })()).join(' ') + '\n', true, currentParsePoint); + }, + /* + Escape filter, renders the text in the block with html escaped + */ + + escaped: function(contents, generator, indent, currentParsePoint) { + var line, _i, _len; + + for (_i = 0, _len = contents.length; _i < _len; _i++) { + line = contents[_i]; + generator.appendTextContents(haml.HamlRuntime.indentText(indent - 1) + line + '\n', true, currentParsePoint, { + escapeHTML: true + }); + } + return true; + } + }; + + /* + Main haml compiler implemtation + */ + + + haml = { + /* + Compiles the haml provided in the parameters to a Javascipt function + + Parameter: + String: Looks for a haml template in dom with this ID + Option Hash: The following options determines how haml sources and compiles the template + source - This contains the template in string form + sourceId - This contains the element ID in the dom which contains the haml source + sourceUrl - This contains the URL where the template can be fetched from + outputFormat - This determines what is returned, and has the following values: + string - The javascript source code + function - A javascript function (default) + generator - Which code generator to use + javascript (default) + coffeescript + productionjavascript + tolerateErrors - switch the compiler into fault tolerant mode (defaults to false) + + Returns a javascript function + */ + + compileHaml: function(options) { + var codeGenerator, result, tokinser; + + if (typeof options === 'string') { + return this._compileHamlTemplate(options, new haml.JsCodeGenerator()); + } else { + codeGenerator = (function() { + switch (options.generator) { + case 'coffeescript': + return new haml.CoffeeCodeGenerator(options); + case 'productionjavascript': + return new haml.ProductionJsCodeGenerator(options); + default: + return new haml.JsCodeGenerator(options); + } + })(); + if (options.source != null) { + tokinser = new haml.Tokeniser({ + template: options.source + }); + } else if (options.sourceId != null) { + tokinser = new haml.Tokeniser({ + templateId: options.sourceId + }); + } else if (options.sourceUrl != null) { + tokinser = new haml.Tokeniser({ + templateUrl: options.sourceUrl + }); + } else { + throw "No template source specified for compileHaml. You need to provide a source, sourceId or sourceUrl option"; + } + result = this._compileHamlToJs(tokinser, codeGenerator, options); + if (options.outputFormat !== 'string') { + return codeGenerator.generateJsFunction(result); + } else { + return "function (context) {\n" + result + "}\n"; + } + } + }, + /* + Compiles the haml in the script block with ID templateId using the coffeescript generator + Returns a javascript function + */ + + compileCoffeeHaml: function(templateId) { + return this._compileHamlTemplate(templateId, new haml.CoffeeCodeGenerator()); + }, + /* + Compiles the haml in the passed in string + Returns a javascript function + */ + + compileStringToJs: function(string) { + var codeGenerator, result; + + codeGenerator = new haml.JsCodeGenerator(); + result = this._compileHamlToJs(new haml.Tokeniser({ + template: string + }), codeGenerator); + return codeGenerator.generateJsFunction(result); + }, + /* + Compiles the haml in the passed in string using the coffeescript generator + Returns a javascript function + */ + + compileCoffeeHamlFromString: function(string) { + var codeGenerator, result; + + codeGenerator = new haml.CoffeeCodeGenerator(); + result = this._compileHamlToJs(new haml.Tokeniser({ + template: string + }), codeGenerator); + return codeGenerator.generateJsFunction(result); + }, + /* + Compiles the haml in the passed in string + Returns the javascript function source + + This is mainly used for precompiling the haml templates so they can be packaged. + */ + + compileHamlToJsString: function(string) { + var result; + + result = 'function (context) {\n'; + result += this._compileHamlToJs(new haml.Tokeniser({ + template: string + }), new haml.JsCodeGenerator()); + return result += '}\n'; + }, + _compileHamlTemplate: function(templateId, codeGenerator) { + var fn, result; + + haml.cache || (haml.cache = {}); + if (haml.cache[templateId]) { + return haml.cache[templateId]; + } + result = this._compileHamlToJs(new haml.Tokeniser({ + templateId: templateId + }), codeGenerator); + fn = codeGenerator.generateJsFunction(result); + haml.cache[templateId] = fn; + return fn; + }, + _compileHamlToJs: function(tokeniser, generator, options) { + var e, indent; + + if (options == null) { + options = {}; + } + generator.elementStack = []; + generator.initOutput(); + tokeniser.getNextToken(); + while (!tokeniser.token.eof) { + if (!tokeniser.token.eol) { + try { + indent = this._whitespace(tokeniser); + generator.setIndent(indent); + if (tokeniser.token.eol) { + generator.outputBuffer.append(HamlRuntime.indentText(indent) + tokeniser.token.matched); + tokeniser.getNextToken(); + } else if (tokeniser.token.doctype) { + this._doctype(tokeniser, indent, generator); + } else if (tokeniser.token.exclamation) { + this._ignoredLine(tokeniser, indent, generator.elementStack, generator); + } else if (tokeniser.token.equal || tokeniser.token.escapeHtml || tokeniser.token.unescapeHtml || tokeniser.token.tilde) { + this._embeddedJs(tokeniser, indent, generator.elementStack, { + innerWhitespace: true + }, generator); + } else if (tokeniser.token.minus) { + this._jsLine(tokeniser, indent, generator.elementStack, generator); + } else if (tokeniser.token.comment || tokeniser.token.slash) { + this._commentLine(tokeniser, indent, generator.elementStack, generator); + } else if (tokeniser.token.amp) { + this._escapedLine(tokeniser, indent, generator.elementStack, generator); + } else if (tokeniser.token.filter) { + this._filter(tokeniser, indent, generator, options); + } else { + this._templateLine(tokeniser, generator.elementStack, indent, generator, options); + } + } catch (_error) { + e = _error; + this._handleError(options, { + skipTo: true + }, tokeniser, e); + } + } else { + generator.outputBuffer.append(tokeniser.token.matched); + tokeniser.getNextToken(); + } + } + this._closeElements(0, generator.elementStack, tokeniser, generator); + return generator.closeAndReturnOutput(); + }, + _doctype: function(tokeniser, indent, generator) { + var contents, params; + + if (tokeniser.token.doctype) { + generator.outputBuffer.append(HamlRuntime.indentText(indent)); + tokeniser.getNextToken(); + if (tokeniser.token.ws) { + tokeniser.getNextToken(); + } + contents = tokeniser.skipToEOLorEOF(); + if (contents && contents.length > 0) { + params = contents.split(/\s+/); + switch (params[0]) { + case 'XML': + if (params.length > 1) { + generator.outputBuffer.append(""); + } else { + generator.outputBuffer.append(""); + } + break; + case 'Strict': + generator.outputBuffer.append(''); + break; + case 'Frameset': + generator.outputBuffer.append(''); + break; + case '5': + generator.outputBuffer.append(''); + break; + case '1.1': + generator.outputBuffer.append(''); + break; + case 'Basic': + generator.outputBuffer.append(''); + break; + case 'Mobile': + generator.outputBuffer.append(''); + break; + case 'RDFa': + generator.outputBuffer.append(''); + } + } else { + generator.outputBuffer.append(''); + } + generator.outputBuffer.append(this._newline(tokeniser)); + return tokeniser.getNextToken(); + } + }, + _filter: function(tokeniser, indent, generator, options) { + var filter, filterBlock, i, line; + + if (tokeniser.token.filter) { + filter = tokeniser.token.tokenString; + if (!haml.filters[filter]) { + this._handleError(options, { + skipTo: indent + }, tokeniser, tokeniser.parseError("Filter '" + filter + "' not registered. Filter functions need to be added to 'haml.filters'.")); + return; + } + tokeniser.skipToEOLorEOF(); + tokeniser.getNextToken(); + i = haml._whitespace(tokeniser); + filterBlock = []; + while (!tokeniser.token.eof && i > indent) { + tokeniser.pushBackToken(); + line = tokeniser.skipToEOLorEOF(); + filterBlock.push(HamlRuntime.trim(line, 2 * indent)); + tokeniser.getNextToken(); + i = haml._whitespace(tokeniser); + } + haml.filters[filter](filterBlock, generator, indent, tokeniser.currentParsePoint()); + return tokeniser.pushBackToken(); + } + }, + _commentLine: function(tokeniser, indent, elementStack, generator) { + var contents, i; + + if (tokeniser.token.comment) { + tokeniser.skipToEOLorEOF(); + tokeniser.getNextToken(); + i = this._whitespace(tokeniser); + while (!tokeniser.token.eof && i > indent) { + tokeniser.skipToEOLorEOF(); + tokeniser.getNextToken(); + i = this._whitespace(tokeniser); + } + if (i > 0) { + return tokeniser.pushBackToken(); + } + } else if (tokeniser.token.slash) { + haml._closeElements(indent, elementStack, tokeniser, generator); + generator.outputBuffer.append(HamlRuntime.indentText(indent)); + generator.outputBuffer.append("' + elementStack[indent].eol); + } else if (elementStack[indent].htmlConditionalComment) { + generator.outputBuffer.append(HamlRuntime.indentText(indent) + '' + elementStack[indent].eol); + } else if (elementStack[indent].block) { + generator.closeOffCodeBlock(tokeniser); + } else if (elementStack[indent].fnBlock) { + generator.closeOffFunctionBlock(tokeniser); + } else { + innerWhitespace = !elementStack[indent].tagOptions || elementStack[indent].tagOptions.innerWhitespace; + if (innerWhitespace) { + generator.outputBuffer.append(HamlRuntime.indentText(indent)); + } else { + generator.outputBuffer.trimWhitespace(); + } + generator.outputBuffer.append(''); + outerWhitespace = !elementStack[indent].tagOptions || elementStack[indent].tagOptions.outerWhitespace; + if (haml._parentInnerWhitespace(elementStack, indent) && outerWhitespace) { + generator.outputBuffer.append('\n'); + } + } + elementStack[indent] = null; + return generator.mark(); + } + }, + _closeElements: function(indent, elementStack, tokeniser, generator) { + var i, _results; + + i = elementStack.length - 1; + _results = []; + while (i >= indent) { + _results.push(this._closeElement(i--, elementStack, tokeniser, generator)); + } + return _results; + }, + _openElement: function(currentParsePoint, indent, identifier, id, classes, objectRef, attributeList, attributeHash, elementStack, tagOptions, generator) { + var element, parentInnerWhitespace, tagOuterWhitespace; + + element = identifier.length === 0 ? "div" : identifier; + parentInnerWhitespace = this._parentInnerWhitespace(elementStack, indent); + tagOuterWhitespace = !tagOptions || tagOptions.outerWhitespace; + if (!tagOuterWhitespace) { + generator.outputBuffer.trimWhitespace(); + } + if (indent > 0 && parentInnerWhitespace && tagOuterWhitespace) { + generator.outputBuffer.append(HamlRuntime.indentText(indent)); + } + generator.outputBuffer.append('<' + element); + if (attributeHash.length > 0 || objectRef.length > 0) { + generator.generateCodeForDynamicAttributes(id, classes, attributeList, attributeHash, objectRef, currentParsePoint); + } else { + generator.outputBuffer.append(HamlRuntime.generateElementAttributes(null, id, classes, null, attributeList, null, currentParsePoint.lineNumber, currentParsePoint.characterNumber, currentParsePoint.currentLine)); + } + if (tagOptions.selfClosingTag) { + generator.outputBuffer.append("/>"); + if (tagOptions.outerWhitespace) { + return generator.outputBuffer.append("\n"); + } + } else { + generator.outputBuffer.append(">"); + elementStack[indent] = { + tag: element, + tagOptions: tagOptions + }; + if (tagOptions.innerWhitespace) { + return generator.outputBuffer.append("\n"); + } + } + }, + _isSelfClosingTag: function(tag) { + return tag === 'meta' || tag === 'img' || tag === 'link' || tag === 'script' || tag === 'br' || tag === 'hr'; + }, + _tagHasContents: function(indent, tokeniser) { + var nextToken; + + if (!tokeniser.isEolOrEof()) { + return true; + } else { + nextToken = tokeniser.lookAhead(1); + return nextToken.ws && nextToken.tokenString.length / 2 > indent; + } + }, + _parentInnerWhitespace: function(elementStack, indent) { + return indent === 0 || (!elementStack[indent - 1] || !elementStack[indent - 1].tagOptions || elementStack[indent - 1].tagOptions.innerWhitespace); + }, + _lineHasElement: function(identifier, id, classes) { + return identifier.length > 0 || id.length > 0 || classes.length > 0; + }, + hasValue: function(value) { + return (value != null) && value !== false; + }, + attrValue: function(attr, value) { + if (attr === 'selected' || attr === 'checked' || attr === 'disabled') { + return attr; + } else { + return value; + } + }, + _whitespace: function(tokeniser) { + var indent; + + indent = 0; + if (tokeniser.token.ws) { + indent = tokeniser.calculateIndent(tokeniser.token.tokenString); + tokeniser.getNextToken(); + } + return indent; + }, + _element: function(tokeniser) { + var identifier; + + identifier = ''; + if (tokeniser.token.element) { + identifier = tokeniser.token.tokenString; + tokeniser.getNextToken(); + } + return identifier; + }, + _eolOrEof: function(tokeniser) { + if (tokeniser.token.eol || tokeniser.token.continueLine) { + return tokeniser.getNextToken(); + } else if (!tokeniser.token.eof) { + throw tokeniser.parseError("Expected EOL or EOF"); + } + }, + _idSelector: function(tokeniser) { + var id; + + id = ''; + if (tokeniser.token.idSelector) { + id = tokeniser.token.tokenString; + tokeniser.getNextToken(); + } + return id; + }, + _classSelector: function(tokeniser) { + var classes; + + classes = []; + while (tokeniser.token.classSelector) { + classes.push(tokeniser.token.tokenString); + tokeniser.getNextToken(); + } + return classes; + }, + _newline: function(tokeniser) { + if (tokeniser.token.eol) { + return tokeniser.token.matched; + } else if (tokeniser.token.continueLine) { + return tokeniser.token.matched.substring(1); + } else { + return "\n"; + } + }, + _handleError: function(options, action, tokeniser, error) { + if (options != null ? options.tolerateFaults : void 0) { + console.log(error); + if (action != null ? action.skipTo : void 0) { + return this._skipToNextLineWithIndent(tokeniser, action.skipTo); + } + } else { + throw error; + } + }, + _skipToNextLineWithIndent: function(tokeniser, indent) { + var lineIndent; + + tokeniser.skipToEOLorEOF(); + tokeniser.getNextToken(); + lineIndent = this._whitespace(tokeniser); + while (lineIndent > indent) { + tokeniser.skipToEOLorEOF(); + tokeniser.getNextToken(); + lineIndent = this._whitespace(tokeniser); + } + return tokeniser.pushBackToken(); + } + }; + + haml.Tokeniser = Tokeniser; + + haml.Buffer = Buffer; + + haml.JsCodeGenerator = JsCodeGenerator; + + haml.ProductionJsCodeGenerator = ProductionJsCodeGenerator; + + haml.CoffeeCodeGenerator = CoffeeCodeGenerator; + + haml.HamlRuntime = HamlRuntime; + + haml.filters = filters; + + if ((typeof module !== "undefined" && module !== null ? module.exports : void 0) != null) { + module.exports = haml; + } else { + root.haml = haml; + } + +}).call(this); + +/* +//@ sourceMappingURL=haml.map +*/ diff --git a/ajax/libs/clientside-haml-js/5.4/haml.map b/ajax/libs/clientside-haml-js/5.4/haml.map new file mode 100644 index 000000000..5543196c7 --- /dev/null +++ b/ajax/libs/clientside-haml-js/5.4/haml.map @@ -0,0 +1,10 @@ +{ + "version": 3, + "file": "haml.js", + "sourceRoot": "..", + "sources": [ + "lib/haml.js" + ], + "names": [], + "mappings": "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" +} \ No newline at end of file diff --git a/ajax/libs/clientside-haml-js/5.4/haml.min.js b/ajax/libs/clientside-haml-js/5.4/haml.min.js new file mode 100644 index 000000000..43610f0f8 --- /dev/null +++ b/ajax/libs/clientside-haml-js/5.4/haml.min.js @@ -0,0 +1,8 @@ +// Generated by CoffeeScript 1.6.2 +/* + clientside HAML compiler for Javascript and Coffeescript (Version 5) + + Copyright 2011-12, Ronald Holshausen (https://github.com/uglyog) + Released under the MIT License (http://www.opensource.org/licenses/MIT) +*/(function(){var e,t,n,r,i,s,o,u,a,f,l,c={}.hasOwnProperty,h=function(e,t){function r(){this.constructor=e}for(var n in t)c.call(t,n)&&(e[n]=t[n]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e};f=this,r={escapeHTML:function(e){return String(e||"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},perserveWhitespace:function(e){var t,n,r,i;r=/<[a-zA-Z]+>[^<]*<\/[a-zA-Z]+>/g,n="",t=0,i=r.exec(e);if(i){while(i)n+=e.substring(t,i.index),n+=i[0].replace(/\n/g," "),t=i.index+i[0].length,i=r.exec(e);n+=e.substring(t)}else n=e;return n},templateError:function(e,t,n,r){var i,s;s=r+" at line "+e+" and character "+t+":\n"+n+"\n",i=0;while(i0&&n[0].length>0&&(p=this.combineAttributes(p,"class",n));if(i!=null)for(h in i){if(!c.call(i,h))continue;E=i[h],p=this.combineAttributes(p,h,E)}if(r!=null)try{b=r.call(e,e),b!=null&&(w=null,b.id!=null?w=b.id:b.get&&(w=b.get("id")),p=this.combineAttributes(p,"id",w),d=null,b["class"]?d=b["class"]:b.get&&(d=b.get("class")),p=this.combineAttributes(p,"class",d))}catch(S){v=S,l(a.HamlRuntime.templateError(o,u,f,"Error evaluating object reference - "+v))}if(s!=null)try{g=s.call(e,e);if(g!=null){g=this._flattenHash(null,g);for(h in g){if(!c.call(g,h))continue;E=g[h],p=this.combineAttributes(p,h,E)}}}catch(S){m=S,l(a.HamlRuntime.templateError(o,u,f,"Error evaluating attribute hash - "+m))}y="";if(p)for(h in p){if(!c.call(p,h))continue;a.hasValue(p[h])&&((h==="id"||h==="for")&&p[h]instanceof Array?y+=" "+h+'="'+_(p[h]).flatten().join("-")+'"':h==="class"&&p[h]instanceof Array?y+=" "+h+'="'+_(p[h]).flatten().join(" ")+'"':y+=" "+h+'="'+a.attrValue(h,p[h])+'"')}return y},indentText:function(e){var t,n;n="",t=0;while(t0?e&&e.id instanceof Array?e.id.unshift(n):e&&e.id?e.id=[e.id,n]:e?e.id=n:e={id:n}:t==="for"&&n.toString().length>0?e&&e["for"]instanceof Array?e["for"].unshift(n):e&&e["for"]?e["for"]=[e["for"],n]:e?e["for"]=n:e={"for":n}:t==="class"?(r=[],n instanceof Array?r=r.concat(n):r.push(n),e&&e["class"]?e["class"]=e["class"].concat(r):e?e["class"]=r:e={"class":r}):t!=="id"&&(e||(e={}),e[t]=n)),e},_flattenHash:function(e,t){var n,r,i,s,o,u,a,f;a={};if(this._isHash(t))for(n in t){if(!c.call(t,n))continue;f=t[n],s=[],e!=null&&s.push(e),s.push(n),i=s.join("-"),r=this._flattenHash(i,f);if(this._isHash(r))for(o in r){if(!c.call(r,o))continue;u=r[o],a[o]=u}else a[i]=r}else e!=null?a[e]=t:a=t;return a},_isHash:function(e){return e!=null&&typeof e=="object"&&!(e instanceof Array||e instanceof Date)},_logError:function(e){return typeof console!="undefined"&&console!==null?console.log(e):void 0},_raiseError:function(e){throw new Error(e)},trim:function(e,t){return e.substring(t)}},o=function(){function e(e){var t,n,r,i=this;this.buffer=null,this.bufferIndex=null,this.prevToken=null,this.token=null;if(e.templateId!=null){r=document.getElementById(e.templateId);if(!r)throw"Did not find a template with ID '"+e.templateId+"'";this.buffer=r.text,this.bufferIndex=0}else e.template!=null?(this.buffer=e.template,this.bufferIndex=0):e.templateUrl!=null&&(t=function(t,n,r){throw"Failed to fetch haml template at URL "+e.templateUrl+": "+n+" "+r},n=function(e){return i.buffer=e,i.bufferIndex=0},jQuery.ajax({url:e.templateUrl,success:n,error:t,dataType:"text",async:!1,beforeSend:function(e){return e.withCredentials=!0}}))}return e.prototype.currentLineMatcher=/[^\n]*/g,e.prototype.tokenMatchers={whitespace:/[ \t]+/g,element:/%[a-zA-Z][a-zA-Z0-9]*/g,idSelector:/#[a-zA-Z_\-][a-zA-Z0-9_\-]*/g,classSelector:/\.[a-zA-Z0-9_\-]+/g,identifier:/[a-zA-Z][a-zA-Z0-9\-]*/g,quotedString:/[\'][^\'\n]*[\']/g,quotedString2:/[\"][^\"\n]*[\"]/g,comment:/\-#/g,escapeHtml:/\&=/g,unescapeHtml:/\!=/g,objectReference:/\[[a-zA-Z_@][a-zA-Z0-9_]*\]/g,doctype:/!!!/g,continueLine:/\|\s*\n/g,filter:/:\w+/g},e.prototype.matchToken=function(e){var t;e.lastIndex=this.bufferIndex,t=e.exec(this.buffer);if((t!=null?t.index:void 0)===this.bufferIndex)return t[0]},e.prototype.matchMultiCharToken=function(e,t,n){var r,i;if(!this.token){r=this.matchToken(e);if(r)return this.token=t,this.token.tokenString=(i=typeof n==="function"?n(r):void 0)!=null?i:r,this.token.matched=r,this.advanceCharsInBuffer(r.length)}},e.prototype.matchSingleCharToken=function(e,t){if(!this.token&&this.buffer.charAt(this.bufferIndex)===e)return this.token=t,this.token.tokenString=e,this.token.matched=e,this.advanceCharsInBuffer(1)},e.prototype.getNextToken=function(){var e,t,n;if(isNaN(this.bufferIndex))throw a.HamlRuntime.templateError(this.lineNumber,this.characterNumber,this.currentLine,"An internal parser error has occurred in the HAML parser");this.prevToken=this.token,this.token=null;if(this.buffer===null||this.buffer.length===this.bufferIndex)this.token={eof:!0,token:"EOF"};else{this.initLine();if(!this.token){e=this.buffer.charCodeAt(this.bufferIndex),t=this.buffer.charCodeAt(this.bufferIndex+1);if(e===10||e===13&&t===10)this.token={eol:!0,token:"EOL"},e===13&&t===10?(this.advanceCharsInBuffer(2),this.token.matched=String.fromCharCode(e)+String.fromCharCode(t)):(this.advanceCharsInBuffer(1),this.token.matched=String.fromCharCode(e)),this.characterNumber=0,this.currentLine=this.getCurrentLine()}this.matchMultiCharToken(this.tokenMatchers.whitespace,{ws:!0,token:"WS"}),this.matchMultiCharToken(this.tokenMatchers.continueLine,{continueLine:!0,token:"CONTINUELINE"}),this.matchMultiCharToken(this.tokenMatchers.element,{element:!0,token:"ELEMENT"},function(e){return e.substring(1)}),this.matchMultiCharToken(this.tokenMatchers.idSelector,{idSelector:!0,token:"ID"},function(e){return e.substring(1)}),this.matchMultiCharToken(this.tokenMatchers.classSelector,{classSelector:!0,token:"CLASS"},function(e){return e.substring(1)}),this.matchMultiCharToken(this.tokenMatchers.identifier,{identifier:!0,token:"IDENTIFIER"}),this.matchMultiCharToken(this.tokenMatchers.doctype,{doctype:!0,token:"DOCTYPE"}),this.matchMultiCharToken(this.tokenMatchers.filter,{filter:!0,token:"FILTER"},function(e){return e.substring(1)}),this.token||(n=this.matchToken(this.tokenMatchers.quotedString),n||(n=this.matchToken(this.tokenMatchers.quotedString2)),n&&(this.token={string:!0,token:"STRING",tokenString:n.substring(1,n.length-1),matched:n},this.advanceCharsInBuffer(n.length))),this.matchMultiCharToken(this.tokenMatchers.comment,{comment:!0,token:"COMMENT"}),this.matchMultiCharToken(this.tokenMatchers.escapeHtml,{escapeHtml:!0,token:"ESCAPEHTML"}),this.matchMultiCharToken(this.tokenMatchers.unescapeHtml,{unescapeHtml:!0,token:"UNESCAPEHTML"}),this.matchMultiCharToken(this.tokenMatchers.objectReference,{objectReference:!0,token:"OBJECTREFERENCE"},function(e){return e.substring(1,e.length-1)}),!this.token&&this.buffer&&this.buffer.charAt(this.bufferIndex)==="{"&&this.matchJavascriptHash(),this.matchSingleCharToken("(",{openBracket:!0,token:"OPENBRACKET"}),this.matchSingleCharToken(")",{closeBracket:!0,token:"CLOSEBRACKET"}),this.matchSingleCharToken("=",{equal:!0,token:"EQUAL"}),this.matchSingleCharToken("/",{slash:!0,token:"SLASH"}),this.matchSingleCharToken("!",{exclamation:!0,token:"EXCLAMATION"}),this.matchSingleCharToken("-",{minus:!0,token:"MINUS"}),this.matchSingleCharToken("&",{amp:!0,token:"AMP"}),this.matchSingleCharToken("<",{lt:!0,token:"LT"}),this.matchSingleCharToken(">",{gt:!0,token:"GT"}),this.matchSingleCharToken("~",{tilde:!0,token:"TILDE"}),this.token===null&&(this.token={unknown:!0,token:"UNKNOWN",matched:this.buffer.charAt(this.bufferIndex)},this.advanceCharsInBuffer(1))}return this.token},e.prototype.lookAhead=function(e){var t,n,r,i,s,o,u,a;a=null;if(e>0){i=this.token,u=this.prevToken,r=this.currentLine,o=this.lineNumber,n=this.characterNumber,t=this.bufferIndex,s=0;while(s++1||this.buffer.charAt(s)!=="}"))t=this.buffer.charAt(s),n=this.buffer.charCodeAt(s),t==="{"?(e++,s++):t==="}"?(e--,s++):n===10||n===13?s++:s++;if(s===this.buffer.length)throw this.characterNumber=r+1,this.lineNumber=o,this.parseError('Error parsing attribute hash - Did not find a terminating "}"');return this.token={attributeHash:!0,token:"ATTRHASH",tokenString:this.buffer.substring(this.bufferIndex,s+1),matched:this.buffer.substring(this.bufferIndex,s+1)},this.advanceCharsInBuffer(s-this.bufferIndex+1)},e.prototype.calculateCurrentIndent=function(){var e;return this.tokenMatchers.whitespace.lastIndex=0,e=this.tokenMatchers.whitespace.exec(this.currentLine),(e!=null?e.index:void 0)===0?this.calculateIndent(e[0]):0},e.prototype.calculateIndent=function(e){var t,n;n=0,t=0;while(t0)return this.buffer+=e},e.prototype.appendToOutputBuffer=function(e){if((e!=null?e.length:void 0)>0)return this.flush(),this.outputBuffer+=e},e.prototype.flush=function(){var e;return((e=this.buffer)!=null?e.length:void 0)>0&&(this.outputBuffer+=this.generator.generateFlush(this.buffer)),this.buffer=""},e.prototype.output=function(){return this.outputBuffer},e.prototype.trimWhitespace=function(){var e,t;if(this.buffer.length>0){t=this.buffer.length-1;while(t>0){e=this.buffer.charAt(t);if(this._isWhitespace(e))t--;else{if(!(t>1)||e!=="n"&&e!=="t"||this.buffer.charAt(t-1)!=="\\")break;t-=2}}if(t>0&&t0?(r=this.replaceReservedWordsInHash(r),this.outputBuffer.appendToOutputBuffer(' hashFunction = function () { return eval("hashObject = '+r.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"); };\n')):this.outputBuffer.appendToOutputBuffer(" hashFunction = null;\n"),i.length>0?this.outputBuffer.appendToOutputBuffer(' objRefFn = function () { return eval("objRef = '+i.replace(/"/g,'\\"')+'"); };\n'):this.outputBuffer.appendToOutputBuffer(" objRefFn = null;\n"),this.outputBuffer.appendToOutputBuffer(' html.push(haml.HamlRuntime.generateElementAttributes(context, "'+e+'", ["'+t.join('","')+'"], objRefFn, '+JSON.stringify(n)+", hashFunction, "+s.lineNumber+", "+s.characterNumber+', "'+this.escapeCode(s.currentLine)+'", handleError));\n')},t.prototype.replaceReservedWordsInHash=function(e){var t,n,r,i,s;n=e,s=["class","for"];for(r=0,i=s.length;r0&&(s=e.charAt(u.index-1)),u.index>1&&(o=e.charAt(u.index-2)),s==="\\"&&o!=="\\"?(u.index!==0&&this.outputBuffer.append(this.processText(e.substring(i,u.index-1),n)),this.outputBuffer.append(this.processText(u[0]),n)):(this.outputBuffer.append(this.processText(e.substring(i,u.index)),n),this.appendEmbeddedCode(r.indentText(this.indent+1),u[1],n.escapeHTML,n.perserveWhitespace,t)),i=this.embeddedCodeBlockMatcher.lastIndex,u=this.embeddedCodeBlockMatcher.exec(e);if(i0?(r=this.replaceReservedWordsInHash(r),this.outputBuffer.appendToOutputBuffer(" hashFunction = function () { return "+r+"; };\n")):this.outputBuffer.appendToOutputBuffer(" hashFunction = null;\n"),i.length>0?this.outputBuffer.appendToOutputBuffer(" objRefFn = function () { return "+i+"; };\n"):this.outputBuffer.appendToOutputBuffer(" objRefFn = null;\n"),this.outputBuffer.appendToOutputBuffer(' html.push(haml.HamlRuntime.generateElementAttributes(context, "'+e+'", ["'+t.join('","')+'"], objRefFn, '+JSON.stringify(n)+", hashFunction, "+s.lineNumber+", "+s.characterNumber+', "'+this.escapeCode(s.currentLine)+'"));\n')},t.prototype.initOutput=function(){return this.outputBuffer.appendToOutputBuffer(" var html = [];\n var hashFunction = null, hashObject = null, objRef = null, objRefFn = null, value= null;\n with (context || {}) {\n")},t}(i),n=function(e){function t(e){this.options=e,this.outputBuffer=new a.Buffer(this)}return h(t,e),t.prototype.appendEmbeddedCode=function(e,t,n,r,i){var s;return this.outputBuffer.flush(),s=this.calcCodeIndent(),this.outputBuffer.appendToOutputBuffer(s+"try\n"),this.outputBuffer.appendToOutputBuffer(s+" exp = CoffeeScript.compile('"+t.replace(/'/g,"\\'").replace(/\\n/g,"\\\\n")+"', bare: true)\n"),this.outputBuffer.appendToOutputBuffer(s+" value = eval(exp)\n"),this.outputBuffer.appendToOutputBuffer(s+" value ?= ''\n"),n?this.outputBuffer.appendToOutputBuffer(s+" html.push(haml.HamlRuntime.escapeHTML(String(value)))\n"):r?this.outputBuffer.appendToOutputBuffer(s+" html.push(haml.HamlRuntime.perserveWhitespace(String(value)))\n"):this.outputBuffer.appendToOutputBuffer(s+" html.push(String(value))\n"),this.outputBuffer.appendToOutputBuffer(s+"catch e \n"),this.outputBuffer.appendToOutputBuffer(s+" handleError new Error(haml.HamlRuntime.templateError("+i.lineNumber+", "+i.characterNumber+", '"+this.escapeCode(i.currentLine)+"',\n"),this.outputBuffer.appendToOutputBuffer(s+" 'Error evaluating expression - ' + e))\n")},t.prototype.initOutput=function(){var e;return((e=this.options)!=null?e.tolerateFaults:void 0)?this.outputBuffer.appendToOutputBuffer("handleError = haml.HamlRuntime._logError\n"):this.outputBuffer.appendToOutputBuffer("handleError = haml.HamlRuntime._raiseError\n"),this.outputBuffer.appendToOutputBuffer("html = []\n")},t.prototype.closeAndReturnOutput=function(){return this.outputBuffer.flush(),this.outputBuffer.output()+'return html.join("")\n'},t.prototype.appendCodeLine=function(e,t){return this.outputBuffer.flush(),this.outputBuffer.appendToOutputBuffer(this.calcCodeIndent()),this.outputBuffer.appendToOutputBuffer((_.str||_).trim(e)),this.outputBuffer.appendToOutputBuffer(t),this.prevCodeIndent=this.indent},t.prototype.lineMatchesStartFunctionBlock=function(e){return e.match(/\) [\-=]>\s*$/)},t.prototype.lineMatchesStartBlock=function(e){return!0},t.prototype.closeOffCodeBlock=function(e){return this.outputBuffer.flush()},t.prototype.closeOffFunctionBlock=function(e){return this.outputBuffer.flush()},t.prototype.generateCodeForDynamicAttributes=function(e,t,n,r,i,s){var o;return this.outputBuffer.flush(),o=this.calcCodeIndent(),r.length>0?(r=this.replaceReservedWordsInHash(r),this.outputBuffer.appendToOutputBuffer(o+"hashFunction = () -> s = CoffeeScript.compile('"+r.replace(/'/g,"\\'").replace(/\n/g,"\\n")+"', bare: true); eval 'hashObject = ' + s\n")):this.outputBuffer.appendToOutputBuffer(o+"hashFunction = null\n"),i.length>0?this.outputBuffer.appendToOutputBuffer(o+"objRefFn = () -> s = CoffeeScript.compile('"+i.replace(/'/g,"\\'")+"', bare: true); eval 'objRef = ' + s\n"):this.outputBuffer.appendToOutputBuffer(o+"objRefFn = null\n"),this.outputBuffer.appendToOutputBuffer(o+"html.push(haml.HamlRuntime.generateElementAttributes(this, '"+e+"', ['"+t.join("','")+"'], objRefFn ? null, "+JSON.stringify(n)+", hashFunction ? null, "+s.lineNumber+", "+s.characterNumber+", '"+this.escapeCode(s.currentLine)+"', handleError))\n")},t.prototype.replaceReservedWordsInHash=function(e){var t,n,r,i,s;n=e,s=["class","for"];for(r=0,i=s.length;r0&&(r=e.charAt(s.index-1)),s.index>1&&(i=e.charAt(s.index-2)),r==="\\"&&i!=="\\"?(s.index!==0&&(n+=this._escapeText(e.substring(t,s.index-1))),n+=this._escapeText("\\"+s[0])):(n+=this._escapeText(e.substring(t,s.index)),n+=s[0]),t=this.embeddedCodeBlockMatcher.lastIndex,s=this.embeddedCodeBlockMatcher.exec(e);return t=i;t=0<=i?++n:--n)if(((s=this.elementStack[t])!=null?s.block:void 0)||((o=this.elementStack[t])!=null?o.fnBlock:void 0))e+=1;return r.indentText(e)},t.prototype.appendTextContents=function(e,t,n,r){var i,s;if(t&&e.match(/#{[^}]*}/)){this.outputBuffer.flush(),i=s="";if(r!=null?r.escapeHTML:void 0)i="haml.HamlRuntime.escapeHTML(",s=")";else if(r!=null?r.perserveWhitespace:void 0)i="haml.HamlRuntime.perserveWhitespace(",s=")";return this.outputBuffer.appendToOutputBuffer(this.calcCodeIndent()+"html.push("+i+'"'+this.escapeCode(e)+'"'+s+")\n")}if(r!=null?r.escapeHTML:void 0)e=a.HamlRuntime.escapeHTML(e);if(r!=null?r.perserveWhitespace:void 0)e=a.HamlRuntime.perserveWhitespace(e);return this.outputBuffer.append(e)},t}(t),u={plain:function(e,t,n,r){var i,s,o;for(s=0,o=e.length;s\n'),t.outputBuffer.append(a.HamlRuntime.indentText(n+1)+"//\n"),t.outputBuffer.append(a.HamlRuntime.indentText(n)+"\n")},css:function(e,t,n,r){var i,s,o;t.outputBuffer.append(a.HamlRuntime.indentText(n)+'\n")},cdata:function(e,t,n,r){var i,s,o;t.outputBuffer.append(a.HamlRuntime.indentText(n)+"\n")},preserve:function(e,t,n,r){var i;return t.appendTextContents(a.HamlRuntime.indentText(n),!1,r),t.appendTextContents(function(){var t,n,r;r=[];for(t=0,n=e.length;t0){s=i.split(/\s+/);switch(s[0]){case"XML":s.length>1?n.outputBuffer.append(""):n.outputBuffer.append("");break;case"Strict":n.outputBuffer.append('');break;case"Frameset":n.outputBuffer.append('');break;case"5":n.outputBuffer.append("");break;case"1.1":n.outputBuffer.append('');break;case"Basic":n.outputBuffer.append('');break;case"Mobile":n.outputBuffer.append('');break;case"RDFa":n.outputBuffer.append('')}}else n.outputBuffer.append("");return n.outputBuffer.append(this._newline(e)),e.getNextToken()}},_filter:function(e,t,n,i){var s,o,u,f;if(e.token.filter){s=e.token.tokenString;if(!a.filters[s]){this._handleError(i,{skipTo:t},e,e.parseError("Filter '"+s+"' not registered. Filter functions need to be added to 'haml.filters'."));return}e.skipToEOLorEOF(),e.getNextToken(),u=a._whitespace(e),o=[];while(!e.token.eof&&u>t)e.pushBackToken(),f=e.skipToEOLorEOF(),o.push(r.trim(f,2*t)),e.getNextToken(),u=a._whitespace(e);return a.filters[s](o,n,t,e.currentParsePoint()),e.pushBackToken()}},_commentLine:function(e,t,n,i){var s,o;if(e.token.comment){e.skipToEOLorEOF(),e.getNextToken(),o=this._whitespace(e);while(!e.token.eof&&o>t)e.skipToEOLorEOF(),e.getNextToken(),o=this._whitespace(e);if(o>0)return e.pushBackToken()}else if(e.token.slash)return a._closeElements(t,n,e,i),i.outputBuffer.append(r.indentText(t)),i.outputBuffer.append(""+t[e].eol):t[e].htmlConditionalComment?i.outputBuffer.append(r.indentText(e)+""+t[e].eol):t[e].block?i.closeOffCodeBlock(n):t[e].fnBlock?i.closeOffFunctionBlock(n):(s=!t[e].tagOptions||t[e].tagOptions.innerWhitespace,s?i.outputBuffer.append(r.indentText(e)):i.outputBuffer.trimWhitespace(),i.outputBuffer.append(""),o=!t[e].tagOptions||t[e].tagOptions.outerWhitespace,a._parentInnerWhitespace(t,e)&&o&&i.outputBuffer.append("\n")),t[e]=null,i.mark()},_closeElements:function(e,t,n,r){var i,s;i=t.length-1,s=[];while(i>=e)s.push(this._closeElement(i--,t,n,r));return s},_openElement:function(e,t,n,i,s,o,u,a,f,l,c){var h,p,d;h=n.length===0?"div":n,p=this._parentInnerWhitespace(f,t),d=!l||l.outerWhitespace,d||c.outputBuffer.trimWhitespace(),t>0&&p&&d&&c.outputBuffer.append(r.indentText(t)),c.outputBuffer.append("<"+h),a.length>0||o.length>0?c.generateCodeForDynamicAttributes(i,s,u,a,o,e):c.outputBuffer.append(r.generateElementAttributes(null,i,s,null,u,null,e.lineNumber,e.characterNumber,e.currentLine));if(l.selfClosingTag){c.outputBuffer.append("/>");if(l.outerWhitespace)return c.outputBuffer.append("\n")}else{c.outputBuffer.append(">"),f[t]={tag:h,tagOptions:l};if(l.innerWhitespace)return c.outputBuffer.append("\n")}},_isSelfClosingTag:function(e){return e==="meta"||e==="img"||e==="link"||e==="script"||e==="br"||e==="hr"},_tagHasContents:function(e,t){var n;return t.isEolOrEof()?(n=t.lookAhead(1),n.ws&&n.tokenString.length/2>e):!0},_parentInnerWhitespace:function(e,t){return t===0||!e[t-1]||!e[t-1].tagOptions||e[t-1].tagOptions.innerWhitespace},_lineHasElement:function(e,t,n){return e.length>0||t.length>0||n.length>0},hasValue:function(e){return e!=null&&e!==!1},attrValue:function(e,t){return e==="selected"||e==="checked"||e==="disabled"?e:t},_whitespace:function(e){var t;return t=0,e.token.ws&&(t=e.calculateIndent(e.token.tokenString),e.getNextToken()),t},_element:function(e){var t;return t="",e.token.element&&(t=e.token.tokenString,e.getNextToken()),t},_eolOrEof:function(e){if(e.token.eol||e.token.continueLine)return e.getNextToken();if(!e.token.eof)throw e.parseError("Expected EOL or EOF")},_idSelector:function(e){var t;return t="",e.token.idSelector&&(t=e.token.tokenString,e.getNextToken()),t},_classSelector:function(e){var t;t=[];while(e.token.classSelector)t.push(e.token.tokenString),e.getNextToken();return t},_newline:function(e){return e.token.eol?e.token.matched:e.token.continueLine?e.token.matched.substring(1):"\n"},_handleError:function(e,t,n,r){if(e!=null?!e.tolerateFaults:!void 0)throw r;console.log(r);if(t!=null?t.skipTo:void 0)return this._skipToNextLineWithIndent(n,t.skipTo)},_skipToNextLineWithIndent:function(e,t){var n;e.skipToEOLorEOF(),e.getNextToken(),n=this._whitespace(e);while(n>t)e.skipToEOLorEOF(),e.getNextToken(),n=this._whitespace(e);return e.pushBackToken()}},a.Tokeniser=o,a.Buffer=e,a.JsCodeGenerator=i,a.ProductionJsCodeGenerator=s,a.CoffeeCodeGenerator=n,a.HamlRuntime=r,a.filters=u,(typeof module!=="undefined"&&module!==null?module.exports:void 0)!=null?module.exports=a:f.haml=a}).call(this); \ No newline at end of file diff --git a/ajax/libs/clientside-haml-js/package.json b/ajax/libs/clientside-haml-js/package.json index 5866cd11c..2c2428dfd 100644 --- a/ajax/libs/clientside-haml-js/package.json +++ b/ajax/libs/clientside-haml-js/package.json @@ -1,7 +1,7 @@ { "name": "clientside-haml-js", "filename": "haml.min.js", - "version": "5.1", + "version": "5.4", "description": "Haml compiler for client side javascript and coffeescript view templates", "homepage": "https://github.com/uglyog/clientside-haml-js", "keywords": [