// Enclose abbreviations in tags // 'use strict'; var PUNCT_CHARS = ' \n()[]\'".,!?-'; // from Google closure library // http://closure-library.googlecode.com/git-history/docs/local_closure_goog_string_string.js.source.html#line1021 function regEscape(s) { return s.replace(/([-()\[\]{}+?*.$\^|,:#= 0; i--) { token = tokens[i]; if (token.type !== 'text') { continue; } pos = 0; text = token.content; reg.lastIndex = 0; level = token.level; nodes = []; while ((m = reg.exec(text))) { if (reg.lastIndex > pos) { nodes.push({ type: 'text', content: text.slice(pos, m.index + m[1].length), level: level }); } nodes.push({ type: 'abbr_open', title: state.env.abbreviations[':' + m[2]], level: level++ }); nodes.push({ type: 'text', content: m[2], level: level }); nodes.push({ type: 'abbr_close', level: --level }); pos = reg.lastIndex - m[3].length; } if (!nodes.length) { continue; } if (pos < text.length) { nodes.push({ type: 'text', content: text.slice(pos), level: level }); } // replace current node blockTokens[j].children = tokens = [].concat(tokens.slice(0, i), nodes, tokens.slice(i + 1)); } } };