{"version":3,"sources":["src/scripts/libs/jquery.hypher.js"],"names":["module","exports","Hypher","language","exceptions","i","trie","createTrie","leftMin","rightMin","split","length","replace","toLowerCase","RegExp","join","TrieNode","prototype","patternObject","size","c","p","chars","points","codePoint","t","tree","_points","patterns","hasOwnProperty","match","charCodeAt","hyphenateText","str","minLength","words","indexOf","test","hyphenate","word","characters","characterPoints","originalCharacters","j","k","node","wordLength","lowerCaseWord","nodePoints","nodePointsLength","m","Math","max","result","slice","push","window","$","fn","each","len","childNodes","nodeType","nodeValue","jQuery"],"mappings":"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","file":"jquery.hypher.js","sourcesContent":["(function () {\n\nvar module = {\n exports: null\n};\n/**\n * @constructor\n * @param {!{patterns: !Object, leftmin: !number, rightmin: !number}} language The language pattern file. Compatible with Hyphenator.js.\n */\nfunction Hypher(language) {\n var exceptions = [],\n i = 0;\n /**\n * @type {!Hypher.TrieNode}\n */\n this.trie = this.createTrie(language['patterns']);\n\n /**\n * @type {!number}\n * @const\n */\n this.leftMin = language['leftmin'];\n\n /**\n * @type {!number}\n * @const\n */\n this.rightMin = language['rightmin'];\n\n /**\n * @type {!Object.>}\n */\n this.exceptions = {};\n\n if (language['exceptions']) {\n exceptions = language['exceptions'].split(/,\\s?/g);\n\n for (; i < exceptions.length; i += 1) {\n this.exceptions[exceptions[i].replace(/\\u2027/g, '').toLowerCase()] = new RegExp('(' + exceptions[i].split('\\u2027').join(')(') + ')', 'i');\n }\n }\n}\n\n/**\n * @typedef {{_points: !Array.}}\n */\nHypher.TrieNode;\n\n/**\n * Creates a trie from a language pattern.\n * @private\n * @param {!Object} patternObject An object with language patterns.\n * @return {!Hypher.TrieNode} An object trie.\n */\nHypher.prototype.createTrie = function (patternObject) {\n var size = 0,\n i = 0,\n c = 0,\n p = 0,\n chars = null,\n points = null,\n codePoint = null,\n t = null,\n tree = {\n _points: []\n },\n patterns;\n\n for (size in patternObject) {\n if (patternObject.hasOwnProperty(size)) {\n patterns = patternObject[size].match(new RegExp('.{1,' + (+size) + '}', 'g'));\n\n for (i = 0; i < patterns.length; i += 1) {\n chars = patterns[i].replace(/[0-9]/g, '').split('');\n points = patterns[i].split(/\\D/);\n t = tree;\n\n for (c = 0; c < chars.length; c += 1) {\n codePoint = chars[c].charCodeAt(0);\n\n if (!t[codePoint]) {\n t[codePoint] = {};\n }\n t = t[codePoint];\n }\n\n t._points = [];\n\n for (p = 0; p < points.length; p += 1) {\n t._points[p] = points[p] || 0;\n }\n }\n }\n }\n return tree;\n};\n\n/**\n * Hyphenates a text.\n *\n * @param {!string} str The text to hyphenate.\n * @return {!string} The same text with soft hyphens inserted in the right positions.\n */\nHypher.prototype.hyphenateText = function (str, minLength) {\n minLength = minLength || 4;\n\n // Regexp(\"\\b\", \"g\") splits on word boundaries,\n // compound separators and ZWNJ so we don't need\n // any special cases for those characters. Unfortunately\n // it does not support unicode word boundaries, so\n // we implement it manually.\n var words = str.split(/([a-zA-Z0-9_\\u0027\\u00DF-\\u00EA\\u00EC-\\u00EF\\u00F1-\\u00F6\\u00F8-\\u00FD\\u0101\\u0103\\u0105\\u0107\\u0109\\u010D\\u010F\\u0111\\u0113\\u0117\\u0119\\u011B\\u011D\\u011F\\u0123\\u0125\\u012B\\u012F\\u0131\\u0135\\u0137\\u013C\\u013E\\u0142\\u0144\\u0146\\u0148\\u0151\\u0153\\u0155\\u0159\\u015B\\u015D\\u015F\\u0161\\u0165\\u016B\\u016D\\u016F\\u0171\\u0173\\u017A\\u017C\\u017E\\u017F\\u0219\\u021B\\u02BC\\u0390\\u03AC-\\u03CE\\u03F2\\u0401\\u0410-\\u044F\\u0451\\u0454\\u0456\\u0457\\u045E\\u0491\\u0531-\\u0556\\u0561-\\u0587\\u0902\\u0903\\u0905-\\u090B\\u090E-\\u0910\\u0912\\u0914-\\u0928\\u092A-\\u0939\\u093E-\\u0943\\u0946-\\u0948\\u094A-\\u094D\\u0982\\u0983\\u0985-\\u098B\\u098F\\u0990\\u0994-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BE-\\u09C3\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u0A02\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A14-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A82\\u0A83\\u0A85-\\u0A8B\\u0A8F\\u0A90\\u0A94-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABE-\\u0AC3\\u0AC7\\u0AC8\\u0ACB-\\u0ACD\\u0B02\\u0B03\\u0B05-\\u0B0B\\u0B0F\\u0B10\\u0B14-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3E-\\u0B43\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B57\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB5\\u0BB7-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C02\\u0C03\\u0C05-\\u0C0B\\u0C0E-\\u0C10\\u0C12\\u0C14-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3E-\\u0C43\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C82\\u0C83\\u0C85-\\u0C8B\\u0C8E-\\u0C90\\u0C92\\u0C94-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBE-\\u0CC3\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0D02\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3E-\\u0D43\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u1F00-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB2-\\u1FB4\\u1FB6\\u1FB7\\u1FBD\\u1FBF\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD2\\u1FD3\\u1FD6\\u1FD7\\u1FE2-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u200D\\u2019]+)/g);\n\n for (var i = 0; i < words.length; i += 1) {\n if (words[i].indexOf('/') !== -1) {\n // Don't insert a zero width space if the slash is at the beginning or end\n // of the text, or right after or before a space.\n if (i !== 0 && i !== words.length - 1 && !(/\\s+\\/|\\/\\s+/.test(words[i]))) {\n words[i] += '\\u200B';\n }\n } else if (words[i].length > minLength) {\n words[i] = this.hyphenate(words[i]).join('\\u00AD');\n }\n }\n return words.join('');\n};\n\n/**\n * Hyphenates a word.\n *\n * @param {!string} word The word to hyphenate\n * @return {!Array.} An array of word fragments indicating valid hyphenation points.\n */\nHypher.prototype.hyphenate = function (word) {\n var characters,\n characterPoints = [],\n originalCharacters,\n i,\n j,\n k,\n node,\n points = [],\n wordLength,\n lowerCaseWord = word.toLowerCase(),\n nodePoints,\n nodePointsLength,\n m = Math.max,\n trie = this.trie,\n result = [''];\n\n if (this.exceptions.hasOwnProperty(lowerCaseWord)) {\n return word.match(this.exceptions[lowerCaseWord]).slice(1);\n }\n\n if (word.indexOf('\\u00AD') !== -1) {\n return [word];\n }\n\n word = '_' + word + '_';\n\n characters = word.toLowerCase().split('');\n originalCharacters = word.split('');\n wordLength = characters.length;\n\n for (i = 0; i < wordLength; i += 1) {\n points[i] = 0;\n characterPoints[i] = characters[i].charCodeAt(0);\n }\n\n for (i = 0; i < wordLength; i += 1) {\n node = trie;\n for (j = i; j < wordLength; j += 1) {\n node = node[characterPoints[j]];\n\n if (node) {\n nodePoints = node._points;\n if (nodePoints) {\n for (k = 0, nodePointsLength = nodePoints.length; k < nodePointsLength; k += 1) {\n points[i + k] = m(points[i + k], nodePoints[k]);\n }\n }\n } else {\n break;\n }\n }\n }\n\n for (i = 1; i < wordLength - 1; i += 1) {\n if (i > this.leftMin && i < (wordLength - this.rightMin) && points[i] % 2) {\n result.push(originalCharacters[i]);\n } else {\n result[result.length - 1] += originalCharacters[i];\n }\n }\n\n return result;\n};\n\nmodule.exports = Hypher;\nwindow['Hypher'] = module.exports;\n\nwindow['Hypher']['languages'] = {};\n}());(function ($) {\n $.fn.hyphenate = function (language) {\n if (window['Hypher']['languages'][language]) {\n return this.each(function () {\n var i = 0, len = this.childNodes.length;\n for (; i < len; i += 1) {\n if (this.childNodes[i].nodeType === 3) {\n this.childNodes[i].nodeValue = window['Hypher']['languages'][language].hyphenateText(this.childNodes[i].nodeValue);\n }\n }\n });\n }\n };\n}(jQuery));"]}