New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

typograf

Package Overview
Dependencies
Maintainers
1
Versions
101
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typograf - npm Package Compare versions

Comparing version 1.2.4 to 1.2.5

test/test.api.js

4

bower.json
{
"name": "typograf",
"version": "1.2.4",
"version": "1.2.5",
"description": "The client and server typographer",

@@ -11,3 +11,3 @@ "bugs": "https://github.com/hcodes/typograf/issues/new",

"typograf"
],
],
"main": [

@@ -14,0 +14,0 @@ "dist/typograf.js",

@@ -70,11 +70,11 @@ /*! Typograf | (c) 2014 Denis Seleznev | https://github.com/hcodes/typograf/ */

text = '' + text;
if(!text) {
return '';
}
text = text
.replace(/\r\n/g, '\n') // Windows
.replace(/\r/g, '\n'); // MacOS
var isHTML = text.search(/<|>/) !== -1;

@@ -112,3 +112,3 @@

if(arguments.length <= 2) {
return this._settings[rule] ? this._settings[rule][name] : undefined;
return this._settings[rule] && this._settings[rule][name];
} else {

@@ -230,4 +230,3 @@ this._settings[rule] = this._settings[rule] || {};

this.entities.forEach(function(entity) {
var re = new RegExp(entity[2], 'g');
text = text.replace(re, entity[index]);
text = text.replace(new RegExp(entity[2], 'g'), entity[index]);
}, this);

@@ -244,255 +243,261 @@ }

Typograf.prototype.entities = [
['\\&nbsp;', '\\&\\#160;', '\u00A0'],
['\\&iexcl;', '\\&\\#161;', '\u00A1'],
['\\&cent;', '\\&\\#162;', '\u00A2'],
['\\&pound;', '\\&\\#163;', '\u00A3'],
['\\&curren;', '\\&\\#164;', '\u00A4'],
['\\&yen;', '\\&\\#165;', '\u00A5'],
['\\&brvbar;', '\\&\\#166;', '\u00A6'],
['\\&sect;', '\\&\\#167;', '\u00A7'],
['\\&uml;', '\\&\\#168;', '\u00A8'],
['\\&copy;', '\\&\\#169;', '\u00A9'],
['\\&ordf;', '\\&\\#170;', '\u00AA'],
['\\&laquo;', '\\&\\#171;', '\u00AB'],
['\\&not;', '\\&\\#172;', '\u00AC'],
['\\&shy;', '\\&\\#173;', '\u00AD'],
['\\&reg;', '\\&\\#174;', '\u00AE'],
['\\&macr;', '\\&\\#175;', '\u00AF'],
['\\&deg;', '\\&\\#176;', '\u00B0'],
['\\&plusmn;', '\\&\\#177;', '\u00B1'],
['\\&sup2;', '\\&\\#178;', '\u00B2'],
['\\&sup3;', '\\&\\#179;', '\u00B3'],
['\\&acute;', '\\&\\#180;', '\u00B4'],
['\\&micro;', '\\&\\#181;', '\u00B5'],
['\\&para;', '\\&\\#182;', '\u00B6'],
['\\&middot;', '\\&\\#183;', '\u00B7'],
['\\&cedil;', '\\&\\#184;', '\u00B8'],
['\\&sup1;', '\\&\\#185;', '\u00B9'],
['\\&ordm;', '\\&\\#186;', '\u00BA'],
['\\&raquo;', '\\&\\#187;', '\u00BB'],
['\\&frac14;', '\\&\\#188;', '\u00BC'],
['\\&frac12;', '\\&\\#189;', '\u00BD'],
['\\&frac34;', '\\&\\#190;', '\u00BE'],
['\\&iquest;', '\\&\\#191;', '\u00BF'],
['\\&Agrave;', '\\&\\#192;', '\u00C0'],
['\\&Aacute;', '\\&\\#193;', '\u00C1'],
['\\&Acirc;', '\\&\\#194;', '\u00C2'],
['\\&Atilde;', '\\&\\#195;', '\u00C3'],
['\\&Auml;', '\\&\\#196;', '\u00C4'],
['\\&Aring;', '\\&\\#197;', '\u00C5'],
['\\&AElig;', '\\&\\#198;', '\u00C6'],
['\\&Ccedil;', '\\&\\#199;', '\u00C7'],
['\\&Egrave;', '\\&\\#200;', '\u00C8'],
['\\&Eacute;', '\\&\\#201;', '\u00C9'],
['\\&Ecirc;', '\\&\\#202;', '\u00CA'],
['\\&Euml;', '\\&\\#203;', '\u00CB'],
['\\&Igrave;', '\\&\\#204;', '\u00CC'],
['\\&Iacute;', '\\&\\#205;', '\u00CD'],
['\\&Icirc;', '\\&\\#206;', '\u00CE'],
['\\&Iuml;', '\\&\\#207;', '\u00CF'],
['\\&ETH;', '\\&\\#208;', '\u00D0'],
['\\&Ntilde;', '\\&\\#209;', '\u00D1'],
['\\&Ograve;', '\\&\\#210;', '\u00D2'],
['\\&Oacute;', '\\&\\#211;', '\u00D3'],
['\\&Ocirc;', '\\&\\#212;', '\u00D4'],
['\\&Otilde;', '\\&\\#213;', '\u00D5'],
['\\&Ouml;', '\\&\\#214;', '\u00D6'],
['\\&times;', '\\&\\#215;', '\u00D7'],
['\\&Oslash;', '\\&\\#216;', '\u00D8'],
['\\&Ugrave;', '\\&\\#217;', '\u00D9'],
['\\&Uacute;', '\\&\\#218;', '\u00DA'],
['\\&Ucirc;', '\\&\\#219;', '\u00DB'],
['\\&Uuml;', '\\&\\#220;', '\u00DC'],
['\\&Yacute;', '\\&\\#221;', '\u00DD'],
['\\&THORN;', '\\&\\#222;', '\u00DE'],
['\\&szlig;', '\\&\\#223;', '\u00DF'],
['\\&agrave;', '\\&\\#224;', '\u00E0'],
['\\&aacute;', '\\&\\#225;', '\u00E1'],
['\\&acirc;', '\\&\\#226;', '\u00E2'],
['\\&atilde;', '\\&\\#227;', '\u00E3'],
['\\&auml;', '\\&\\#228;', '\u00E4'],
['\\&aring;', '\\&\\#229;', '\u00E5'],
['\\&aelig;', '\\&\\#230;', '\u00E6'],
['\\&ccedil;', '\\&\\#231;', '\u00E7'],
['\\&egrave;', '\\&\\#232;', '\u00E8'],
['\\&eacute;', '\\&\\#233;', '\u00E9'],
['\\&ecirc;', '\\&\\#234;', '\u00EA'],
['\\&euml;', '\\&\\#235;', '\u00EB'],
['\\&igrave;', '\\&\\#236;', '\u00EC'],
['\\&iacute;', '\\&\\#237;', '\u00ED'],
['\\&icirc;', '\\&\\#238;', '\u00EE'],
['\\&iuml;', '\\&\\#239;', '\u00EF'],
['\\&eth;', '\\&\\#240;', '\u00F0'],
['\\&ntilde;', '\\&\\#241;', '\u00F1'],
['\\&ograve;', '\\&\\#242;', '\u00F2'],
['\\&oacute;', '\\&\\#243;', '\u00F3'],
['\\&ocirc;', '\\&\\#244;', '\u00F4'],
['\\&otilde;', '\\&\\#245;', '\u00F5'],
['\\&ouml;', '\\&\\#246;', '\u00F6'],
['\\&divide;', '\\&\\#247;', '\u00F7'],
['\\&oslash;', '\\&\\#248;', '\u00F8'],
['\\&ugrave;', '\\&\\#249;', '\u00F9'],
['\\&uacute;', '\\&\\#250;', '\u00FA'],
['\\&ucirc;', '\\&\\#251;', '\u00FB'],
['\\&uuml;', '\\&\\#252;', '\u00FC'],
['\\&yacute;', '\\&\\#253;', '\u00FD'],
['\\&thorn;', '\\&\\#254;', '\u00FE'],
['\\&yuml;', '\\&\\#255;', '\u00FF'],
['\\&fnof;', '\\&\\#402;', '\u0192'],
['\\&Alpha;', '\\&\\#913;', '\u0391'],
['\\&Beta;', '\\&\\#914;', '\u0392'],
['\\&Gamma;', '\\&\\#915;', '\u0393'],
['\\&Delta;', '\\&\\#916;', '\u0394'],
['\\&Epsilon;', '\\&\\#917;', '\u0395'],
['\\&Zeta;', '\\&\\#918;', '\u0396'],
['\\&Eta;', '\\&\\#919;', '\u0397'],
['\\&Theta;', '\\&\\#920;', '\u0398'],
['\\&Iota;', '\\&\\#921;', '\u0399'],
['\\&Kappa;', '\\&\\#922;', '\u039A'],
['\\&Lambda;', '\\&\\#923;', '\u039B'],
['\\&Mu;', '\\&\\#924;', '\u039C'],
['\\&Nu;', '\\&\\#925;', '\u039D'],
['\\&Xi;', '\\&\\#926;', '\u039E'],
['\\&Omicron;', '\\&\\#927;', '\u039F'],
['\\&Pi;', '\\&\\#928;', '\u03A0'],
['\\&Rho;', '\\&\\#929;', '\u03A1'],
['\\&Sigma;', '\\&\\#931;', '\u03A3'],
['\\&Tau;', '\\&\\#932;', '\u03A4'],
['\\&Upsilon;', '\\&\\#933;', '\u03A5'],
['\\&Phi;', '\\&\\#934;', '\u03A6'],
['\\&Chi;', '\\&\\#935;', '\u03A7'],
['\\&Psi;', '\\&\\#936;', '\u03A8'],
['\\&Omega;', '\\&\\#937;', '\u03A9'],
['\\&alpha;', '\\&\\#945;', '\u03B1'],
['\\&beta;', '\\&\\#946;', '\u03B2'],
['\\&gamma;', '\\&\\#947;', '\u03B3'],
['\\&delta;', '\\&\\#948;', '\u03B4'],
['\\&epsilon;', '\\&\\#949;', '\u03B5'],
['\\&zeta;', '\\&\\#950;', '\u03B6'],
['\\&eta;', '\\&\\#951;', '\u03B7'],
['\\&theta;', '\\&\\#952;', '\u03B8'],
['\\&iota;', '\\&\\#953;', '\u03B9'],
['\\&kappa;', '\\&\\#954;', '\u03BA'],
['\\&lambda;', '\\&\\#955;', '\u03BB'],
['\\&mu;', '\\&\\#956;', '\u03BC'],
['\\&nu;', '\\&\\#957;', '\u03BD'],
['\\&xi;', '\\&\\#958;', '\u03BE'],
['\\&omicron;', '\\&\\#959;', '\u03BF'],
['\\&pi;', '\\&\\#960;', '\u03C0'],
['\\&rho;', '\\&\\#961;', '\u03C1'],
['\\&sigmaf;', '\\&\\#962;', '\u03C2'],
['\\&sigma;', '\\&\\#963;', '\u03C3'],
['\\&tau;', '\\&\\#964;', '\u03C4'],
['\\&upsilon;', '\\&\\#965;', '\u03C5'],
['\\&phi;', '\\&\\#966;', '\u03C6'],
['\\&chi;', '\\&\\#967;', '\u03C7'],
['\\&psi;', '\\&\\#968;', '\u03C8'],
['\\&omega;', '\\&\\#969;', '\u03C9'],
['\\&thetasym;', '\\&\\#977;', '\u03D1'],
['\\&upsih;', '\\&\\#978;', '\u03D2'],
['\\&piv;', '\\&\\#982;', '\u03D6'],
['\\&bull;', '\\&\\#8226;', '\u2022'],
['\\&hellip;', '\\&\\#8230;', '\u2026'],
['\\&prime;', '\\&\\#8242;', '\u2032'],
['\\&Prime;', '\\&\\#8243;', '\u2033'],
['\\&oline;', '\\&\\#8254;', '\u203E'],
['\\&frasl;', '\\&\\#8260;', '\u2044'],
['\\&weierp;', '\\&\\#8472;', '\u2118'],
['\\&image;', '\\&\\#8465;', '\u2111'],
['\\&real;', '\\&\\#8476;', '\u211C'],
['\\&trade;', '\\&\\#8482;', '\u2122'],
['\\&alefsym;', '\\&\\#8501;', '\u2135'],
['\\&larr;', '\\&\\#8592;', '\u2190'],
['\\&uarr;', '\\&\\#8593;', '\u2191'],
['\\&rarr;', '\\&\\#8594;', '\u2192'],
['\\&darr;', '\\&\\#8595;', '\u2193'],
['\\&harr;', '\\&\\#8596;', '\u2194'],
['\\&crarr;', '\\&\\#8629;', '\u21B5'],
['\\&lArr;', '\\&\\#8656;', '\u21D0'],
['\\&uArr;', '\\&\\#8657;', '\u21D1'],
['\\&rArr;', '\\&\\#8658;', '\u21D2'],
['\\&dArr;', '\\&\\#8659;', '\u21D3'],
['\\&hArr;', '\\&\\#8660;', '\u21D4'],
['\\&forall;', '\\&\\#8704;', '\u2200'],
['\\&part;', '\\&\\#8706;', '\u2202'],
['\\&exist;', '\\&\\#8707;', '\u2203'],
['\\&empty;', '\\&\\#8709;', '\u2205'],
['\\&nabla;', '\\&\\#8711;', '\u2207'],
['\\&isin;', '\\&\\#8712;', '\u2208'],
['\\&notin;', '\\&\\#8713;', '\u2209'],
['\\&ni;', '\\&\\#8715;', '\u220B'],
['\\&prod;', '\\&\\#8719;', '\u220F'],
['\\&sum;', '\\&\\#8721;', '\u2211'],
['\\&minus;', '\\&\\#8722;', '\u2212'],
['\\&lowast;', '\\&\\#8727;', '\u2217'],
['\\&radic;', '\\&\\#8730;', '\u221A'],
['\\&prop;', '\\&\\#8733;', '\u221D'],
['\\&infin;', '\\&\\#8734;', '\u221E'],
['\\&ang;', '\\&\\#8736;', '\u2220'],
['\\&and;', '\\&\\#8743;', '\u2227'],
['\\&or;', '\\&\\#8744;', '\u2228'],
['\\&cap;', '\\&\\#8745;', '\u2229'],
['\\&cup;', '\\&\\#8746;', '\u222A'],
['\\&int;', '\\&\\#8747;', '\u222B'],
['\\&there4;', '\\&\\#8756;', '\u2234'],
['\\&sim;', '\\&\\#8764;', '\u223C'],
['\\&cong;', '\\&\\#8773;', '\u2245'],
['\\&asymp;', '\\&\\#8776;', '\u2248'],
['\\&ne;', '\\&\\#8800;', '\u2260'],
['\\&equiv;', '\\&\\#8801;', '\u2261'],
['\\&le;', '\\&\\#8804;', '\u2264'],
['\\&ge;', '\\&\\#8805;', '\u2265'],
['\\&sub;', '\\&\\#8834;', '\u2282'],
['\\&sup;', '\\&\\#8835;', '\u2283'],
['\\&nsub;', '\\&\\#8836;', '\u2284'],
['\\&sube;', '\\&\\#8838;', '\u2286'],
['\\&supe;', '\\&\\#8839;', '\u2287'],
['\\&oplus;', '\\&\\#8853;', '\u2295'],
['\\&otimes;', '\\&\\#8855;', '\u2297'],
['\\&perp;', '\\&\\#8869;', '\u22A5'],
['\\&sdot;', '\\&\\#8901;', '\u22C5'],
['\\&lceil;', '\\&\\#8968;', '\u2308'],
['\\&rceil;', '\\&\\#8969;', '\u2309'],
['\\&lfloor;', '\\&\\#8970;', '\u230A'],
['\\&rfloor;', '\\&\\#8971;', '\u230B'],
['\\&lang;', '\\&\\#9001;', '\u2329'],
['\\&rang;', '\\&\\#9002;', '\u232A'],
['\\&spades;', '\\&\\#9824;', '\u2660'],
['\\&clubs;', '\\&\\#9827;', '\u2663'],
['\\&hearts;', '\\&\\#9829;', '\u2665'],
['\\&diams;', '\\&\\#9830;', '\u2666'],
['\\&loz;', '\\&\\#9674;', '\u25CA'],
['\\&OElig;', '\\&\\#338;', '\u0152'],
['\\&oelig;', '\\&\\#339;', '\u0153'],
['\\&Scaron;', '\\&\\#352;', '\u0160'],
['\\&scaron;', '\\&\\#353;', '\u0161'],
['\\&Yuml;', '\\&\\#376;', '\u0178'],
['\\&circ;', '\\&\\#710;', '\u02C6'],
['\\&tilde;', '\\&\\#732;', '\u02DC'],
['\\&ensp;', '\\&\\#8194;', '\u2002'],
['\\&emsp;', '\\&\\#8195;', '\u2003'],
['\\&thinsp;', '\\&\\#8201;', '\u2009'],
['\\&zwnj;', '\\&\\#8204;', '\u200C'],
['\\&zwj;', '\\&\\#8205;', '\u200D'],
['\\&lrm;', '\\&\\#8206;', '\u200E'],
['\\&rlm;', '\\&\\#8207;', '\u200F'],
['\\&ndash;', '\\&\\#8211;', '\u2013'],
['\\&mdash;', '\\&\\#8212;', '\u2014'],
['\\&lsquo;', '\\&\\#8216;', '\u2018'],
['\\&rsquo;', '\\&\\#8217;', '\u2019'],
['\\&sbquo;', '\\&\\#8218;', '\u201A'],
['\\&ldquo;', '\\&\\#8220;', '\u201C'],
['\\&rdquo;', '\\&\\#8221;', '\u201D'],
['\\&bdquo;', '\\&\\#8222;', '\u201E'],
['\\&dagger;', '\\&\\#8224;', '\u2020'],
['\\&Dagger;', '\\&\\#8225;', '\u2021'],
['\\&permil;', '\\&\\#8240;', '\u2030'],
['\\&lsaquo;', '\\&\\#8249;', '\u2039'],
['\\&rsaquo;', '\\&\\#8250;', '\u203A'],
['\\&euro;', '\\&\\#8364;', '\u20AC']
];
Typograf.prototype.entities = [];
Typograf.prototype.entities.forEach(function(en) {
en[3] = new RegExp('(' + en[0] + '|' + en[1] + ')', 'g');
[
['nbsp', 160],
['iexcl', 161],
['cent', 162],
['pound', 163],
['curren', 164],
['yen', 165],
['brvbar', 166],
['sect', 167],
['uml', 168],
['copy', 169],
['ordf', 170],
['laquo', 171],
['not', 172],
['shy', 173],
['reg', 174],
['macr', 175],
['deg', 176],
['plusmn', 177],
['sup2', 178],
['sup3', 179],
['acute', 180],
['micro', 181],
['para', 182],
['middot', 183],
['cedil', 184],
['sup1', 185],
['ordm', 186],
['raquo', 187],
['frac14', 188],
['frac12', 189],
['frac34', 190],
['iquest', 191],
['Agrave', 192],
['Aacute', 193],
['Acirc', 194],
['Atilde', 195],
['Auml', 196],
['Aring', 197],
['AElig', 198],
['Ccedil', 199],
['Egrave', 200],
['Eacute', 201],
['Ecirc', 202],
['Euml', 203],
['Igrave', 204],
['Iacute', 205],
['Icirc', 206],
['Iuml', 207],
['ETH', 208],
['Ntilde', 209],
['Ograve', 210],
['Oacute', 211],
['Ocirc', 212],
['Otilde', 213],
['Ouml', 214],
['times', 215],
['Oslash', 216],
['Ugrave', 217],
['Uacute', 218],
['Ucirc', 219],
['Uuml', 220],
['Yacute', 221],
['THORN', 222],
['szlig', 223],
['agrave', 224],
['aacute', 225],
['acirc', 226],
['atilde', 227],
['auml', 228],
['aring', 229],
['aelig', 230],
['ccedil', 231],
['egrave', 232],
['eacute', 233],
['ecirc', 234],
['euml', 235],
['igrave', 236],
['iacute', 237],
['icirc', 238],
['iuml', 239],
['eth', 240],
['ntilde', 241],
['ograve', 242],
['oacute', 243],
['ocirc', 244],
['otilde', 245],
['ouml', 246],
['divide', 247],
['oslash', 248],
['ugrave', 249],
['uacute', 250],
['ucirc', 251],
['uuml', 252],
['yacute', 253],
['thorn', 254],
['yuml', 255],
['fnof', 402],
['Alpha', 913],
['Beta', 914],
['Gamma', 915],
['Delta', 916],
['Epsilon', 917],
['Zeta', 918],
['Eta', 919],
['Theta', 920],
['Iota', 921],
['Kappa', 922],
['Lambda', 923],
['Mu', 924],
['Nu', 925],
['Xi', 926],
['Omicron', 927],
['Pi', 928],
['Rho', 929],
['Sigma', 931],
['Tau', 932],
['Upsilon', 933],
['Phi', 934],
['Chi', 935],
['Psi', 936],
['Omega', 937],
['alpha', 945],
['beta', 946],
['gamma', 947],
['delta', 948],
['epsilon', 949],
['zeta', 950],
['eta', 951],
['theta', 952],
['iota', 953],
['kappa', 954],
['lambda', 955],
['mu', 956],
['nu', 957],
['xi', 958],
['omicron', 959],
['pi', 960],
['rho', 961],
['sigmaf', 962],
['sigma', 963],
['tau', 964],
['upsilon', 965],
['phi', 966],
['chi', 967],
['psi', 968],
['omega', 969],
['thetasym', 977],
['upsih', 978],
['piv', 982],
['bull', 8226],
['hellip', 8230],
['prime', 8242],
['Prime', 8243],
['oline', 8254],
['frasl', 8260],
['weierp', 8472],
['image', 8465],
['real', 8476],
['trade', 8482],
['alefsym', 8501],
['larr', 8592],
['uarr', 8593],
['rarr', 8594],
['darr', 8595],
['harr', 8596],
['crarr', 8629],
['lArr', 8656],
['uArr', 8657],
['rArr', 8658],
['dArr', 8659],
['hArr', 8660],
['forall', 8704],
['part', 8706],
['exist', 8707],
['empty', 8709],
['nabla', 8711],
['isin', 8712],
['notin', 8713],
['ni', 8715],
['prod', 8719],
['sum', 8721],
['minus', 8722],
['lowast', 8727],
['radic', 8730],
['prop', 8733],
['infin', 8734],
['ang', 8736],
['and', 8743],
['or', 8744],
['cap', 8745],
['cup', 8746],
['int', 8747],
['there4', 8756],
['sim', 8764],
['cong', 8773],
['asymp', 8776],
['ne', 8800],
['equiv', 8801],
['le', 8804],
['ge', 8805],
['sub', 8834],
['sup', 8835],
['nsub', 8836],
['sube', 8838],
['supe', 8839],
['oplus', 8853],
['otimes', 8855],
['perp', 8869],
['sdot', 8901],
['lceil', 8968],
['rceil', 8969],
['lfloor', 8970],
['rfloor', 8971],
['lang', 9001],
['rang', 9002],
['spades', 9824],
['clubs', 9827],
['hearts', 9829],
['diams', 9830],
['loz', 9674],
['OElig', 338],
['oelig', 339],
['Scaron', 352],
['scaron', 353],
['Yuml', 376],
['circ', 710],
['tilde', 732],
['ensp', 8194],
['emsp', 8195],
['thinsp', 8201],
['zwnj', 8204],
['zwj', 8205],
['lrm', 8206],
['rlm', 8207],
['ndash', 8211],
['mdash', 8212],
['lsquo', 8216],
['rsquo', 8217],
['sbquo', 8218],
['ldquo', 8220],
['rdquo', 8221],
['bdquo', 8222],
['dagger', 8224],
['Dagger', 8225],
['permil', 8240],
['lsaquo', 8249],
['rsaquo', 8250],
['euro', 8364]
].forEach(function(en) {
var name = en[0] + ';',
num = en[1] + ';',
buf = ['&' + name, '&#' + num, String.fromCharCode(en[1])];
buf.push(new RegExp('(\\&\\#' + num + (name ? '|\\&' + name : '') + ')', 'g'));
Typograf.prototype.entities.push(buf);
}, this);

@@ -601,2 +606,18 @@

Typograf.rule({
title: 'Преобразование дат к виду DD.MM.YYYY',
name: 'date/main',
sortIndex: 1300,
func: function(text) {
var sp1 = '(-|\\.|\\/)',
sp2 = '(-|\\/)',
re1 = new RegExp('(^|\\D)(\\d{4})' + sp1 + '(\\d{2})' + sp1 + '(\\d{2})(\\D|$)', 'gi'),
re2 = new RegExp('(^|\\D)(\\d{2})' + sp2 + '(\\d{2})' + sp2 + '(\\d{4})(\\D|$)', 'gi');
return text
.replace(re1, '$1$6.$4.$2$7')
.replace(re2, '$1$4.$2.$6$7');
}
});
(function() {

@@ -704,18 +725,2 @@

Typograf.rule({
title: 'Преобразование дат к виду DD.MM.YYYY',
name: 'date/main',
sortIndex: 1300,
func: function(text) {
var sp1 = '(-|\\.|\\/)',
sp2 = '(-|\\/)',
re1 = new RegExp('(^|\\D)(\\d{4})' + sp1 + '(\\d{2})' + sp1 + '(\\d{2})(\\D|$)', 'gi'),
re2 = new RegExp('(^|\\D)(\\d{2})' + sp2 + '(\\d{2})' + sp2 + '(\\d{4})(\\D|$)', 'gi');
return text
.replace(re1, '$1$6.$4.$2$7')
.replace(re2, '$1$4.$2.$6$7');
}
});
Typograf.rule({
title: 'Замена перевода строки на <br/>',

@@ -825,3 +830,3 @@ name: 'html/nbr',

title: 'Неразрывный пробел после короткого слова',
name: 'nbsp/afterShortWord',
name: 'nbsp/afterShortWord',
sortIndex: 590,

@@ -832,3 +837,3 @@ func: function(text, settings) {

return len > 0 ? text.replace(re, '$1\u00A0') : text;
return text.replace(re, '$1\u00A0');
},

@@ -857,3 +862,3 @@ settings: {

return len > 0 ? text.replace(re, '\u00A0$1$2') : text;
return text.replace(re, '\u00A0$1$2');
},

@@ -918,80 +923,2 @@ settings: {

Typograf.rule({
title: 'Пробел после знаков пунктуации',
name: 'space/afterPunctuation',
sortIndex: 560,
func: function(text) {
return text
.replace(/(\!|;|\?)([^ \n\t\!;\?])/g, '$1 $2')
.replace(/(\D)(,|\:)([^ \/\d\n\t\!;,\?\.\:])/g, '$1$2 $3');
}
});
Typograf.rule({
title: 'Удаление пробела перед %',
name: 'space/delBeforePercent',
sortIndex: 600,
func: function(text) {
return text.replace(/(\d)( |\u00A0)%/g, '$1%');
}
});
Typograf.rule({
title: 'Удаление пробелов перед знаками пунктуации',
name: 'space/delBeforePunctuation',
sortIndex: 550,
func: function(text) {
return text.replace(/ (\!|;|,|\?|\.|\:)/g, '$1')
.replace(/\( /g, '(')
.replace(/([^ ])\(/g, '$1 (')
.replace(/ \)/g, ')')
.replace(/\)([^\!;,\?\.\:])/g, ') $1');
}
});
Typograf.rule({
title: 'Удаление повторяющихся переносов строки (не более двух)',
name: 'space/delRepeatN',
sortIndex: 545,
func: function(text) {
return text.replace(/\n{3,}/g, '\n\n');
}
});
Typograf.rule({
title: 'Удаление повторяющихся пробелов',
name: 'space/delRepeatSpace',
sortIndex: 540,
func: function(text) {
return text.replace(/( |\t){2,}/g, '$1');
}
});
Typograf.rule({
title: 'Удаление пробелов в конце строк',
name: 'space/delTrailingBlanks',
sortIndex: 505,
func: function(text) {
return text.replace(/( |\t)+\n/g, '\n');
}
});
Typograf.rule({
title: 'Замена табов на пробелы',
name: 'space/replaceTab',
sortIndex: 510,
func: function(text) {
return text.replace(/\t/g, ' ');
}
});
Typograf.rule({
title: 'Удаление пробелов в начале и в конце текста',
name: 'space/trim',
sortIndex: 530,
func: function(text) {
return text.trim();
}
});
Typograf.rule({
title: '-> → →, <- → ←',

@@ -1077,3 +1004,81 @@ name: 'sym/arrow',

Typograf.rule({
title: 'Пробел после знаков пунктуации',
name: 'space/afterPunctuation',
sortIndex: 560,
func: function(text) {
return text
.replace(/(\!|;|\?)([^ \n\t\!;\?])/g, '$1 $2')
.replace(/(\D)(,|\:)([^ \/\d\n\t\!;,\?\.\:])/g, '$1$2 $3');
}
});
Typograf.rule({
title: 'Удаление пробела перед %',
name: 'space/delBeforePercent',
sortIndex: 600,
func: function(text) {
return text.replace(/(\d)( |\u00A0)%/g, '$1%');
}
});
Typograf.rule({
title: 'Удаление пробелов перед знаками пунктуации',
name: 'space/delBeforePunctuation',
sortIndex: 550,
func: function(text) {
return text.replace(/ (\!|;|,|\?|\.|\:)/g, '$1')
.replace(/\( /g, '(')
.replace(/([^ ])\(/g, '$1 (')
.replace(/ \)/g, ')')
.replace(/\)([^\!;,\?\.\:])/g, ') $1');
}
});
Typograf.rule({
title: 'Удаление повторяющихся переносов строки (не более двух)',
name: 'space/delRepeatN',
sortIndex: 545,
func: function(text) {
return text.replace(/\n{3,}/g, '\n\n');
}
});
Typograf.rule({
title: 'Удаление повторяющихся пробелов',
name: 'space/delRepeatSpace',
sortIndex: 540,
func: function(text) {
return text.replace(/( |\t){2,}/g, '$1');
}
});
Typograf.rule({
title: 'Удаление пробелов в конце строк',
name: 'space/delTrailingBlanks',
sortIndex: 505,
func: function(text) {
return text.replace(/( |\t)+\n/g, '\n');
}
});
Typograf.rule({
title: 'Замена табов на пробелы',
name: 'space/replaceTab',
sortIndex: 510,
func: function(text) {
return text.replace(/\t/g, ' ');
}
});
Typograf.rule({
title: 'Удаление пробелов в начале и в конце текста',
name: 'space/trim',
sortIndex: 530,
func: function(text) {
return text.trim();
}
});
Typograf._sortRules();
Typograf._needSortRules = true;

@@ -1,1 +0,1 @@

function Typograf(e){this._prefs="object"==typeof e?e:{},this._settings={},this._enabledRules={},this._rules.forEach(function(e){this._settings[e.name]=e.settings||{},this._enabledRules[e.name]=e.enabled},this)}Typograf.rule=function(e){return e.enabled=e.enabled===!1?!1:!0,Typograf.prototype._rules.push(e),Typograf._needSortRules&&this._sortRules(),this},Typograf.data=function(e,r){Typograf.prototype.data[e]=r},Typograf._sortRules=function(){Typograf.prototype._rules.sort(function(e,r){return e.sortIndex>r.sortIndex?1:-1})},Typograf.prototype={constructor:Typograf,execute:function(e){if(e=""+e,!e)return"";e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");var r=-1!==e.search(/<|>/);return r&&(e=this._hideSafeTags(e)),e=this._utfication(e),this._rules.forEach(function(r){this.enabled(r.name)&&(e=r.func.call(this,e,this._settings[r.name]))},this),e=this._modification(e),r&&(e=this._showSafeTags(e)),e},setting:function(e,r,n){return arguments.length<=2?this._settings[e]?this._settings[e][r]:void 0:(this._settings[e]=this._settings[e]||{},this._settings[e][r]=n,this)},enabled:function(e){return this._enabledRules[e]},disabled:function(e){return!this._enabledRules[e]},enable:function(e){return this._enable(e,!0)},disable:function(e){return this._enable(e,!1)},data:{},_enable:function(e,r){return Array.isArray(e)?e.forEach(function(e){this._enabledRules[e]=r},this):this._enabledRules[e]=r,this},_rules:[],_hideSafeTags:function(e){this._hiddenSafeTags={};var r=this,n="",t=[["<!--","-->"],["<pre[^>]*>","<\\/pre>"],["<code[^>]*>","<\\/code>"],["<style[^>]*>","<\\/style>"],["<script[^>]*>","<\\/script>"],["<object>","<\\/object>"]];t.forEach(function(e){n+="("+e[0]+"(.|\\n)*?"+e[1]+")|"},this);var a=0;return e=e.replace(new RegExp("("+n+"<[^>]*[\\s][^>]*>)","gim"),function(e){var n="__typograf"+a+"__";return r._hiddenSafeTags[n]=e,a++,n})},_showSafeTags:function(e){return Object.keys(this._hiddenSafeTags).forEach(function(r){e=e.replace(new RegExp(r,"gim"),this._hiddenSafeTags[r])},this),delete this._hiddenSafeTags,e},_utfication:function(e){return-1===e.search("&")?e:(this.entities.forEach(function(r){e=e.replace(r[3],r[2])},this),e)},_modification:function(e){var r,n=this._prefs.mode;return("name"===n||"digit"===n)&&(r="name"===n?0:1,this.entities.forEach(function(n){var t=new RegExp(n[2],"g");e=e.replace(t,n[r])},this)),e}},"object"==typeof exports&&(module.exports=Typograf),Typograf.prototype.entities=[["\\&nbsp;","\\&\\#160;"," "],["\\&iexcl;","\\&\\#161;","¡"],["\\&cent;","\\&\\#162;","¢"],["\\&pound;","\\&\\#163;","£"],["\\&curren;","\\&\\#164;","¤"],["\\&yen;","\\&\\#165;","¥"],["\\&brvbar;","\\&\\#166;","¦"],["\\&sect;","\\&\\#167;","§"],["\\&uml;","\\&\\#168;","¨"],["\\&copy;","\\&\\#169;","©"],["\\&ordf;","\\&\\#170;","ª"],["\\&laquo;","\\&\\#171;","«"],["\\&not;","\\&\\#172;","¬"],["\\&shy;","\\&\\#173;","­"],["\\&reg;","\\&\\#174;","®"],["\\&macr;","\\&\\#175;","¯"],["\\&deg;","\\&\\#176;","°"],["\\&plusmn;","\\&\\#177;","±"],["\\&sup2;","\\&\\#178;","²"],["\\&sup3;","\\&\\#179;","³"],["\\&acute;","\\&\\#180;","´"],["\\&micro;","\\&\\#181;","µ"],["\\&para;","\\&\\#182;","¶"],["\\&middot;","\\&\\#183;","·"],["\\&cedil;","\\&\\#184;","¸"],["\\&sup1;","\\&\\#185;","¹"],["\\&ordm;","\\&\\#186;","º"],["\\&raquo;","\\&\\#187;","»"],["\\&frac14;","\\&\\#188;","¼"],["\\&frac12;","\\&\\#189;","½"],["\\&frac34;","\\&\\#190;","¾"],["\\&iquest;","\\&\\#191;","¿"],["\\&Agrave;","\\&\\#192;","À"],["\\&Aacute;","\\&\\#193;","Á"],["\\&Acirc;","\\&\\#194;","Â"],["\\&Atilde;","\\&\\#195;","Ã"],["\\&Auml;","\\&\\#196;","Ä"],["\\&Aring;","\\&\\#197;","Å"],["\\&AElig;","\\&\\#198;","Æ"],["\\&Ccedil;","\\&\\#199;","Ç"],["\\&Egrave;","\\&\\#200;","È"],["\\&Eacute;","\\&\\#201;","É"],["\\&Ecirc;","\\&\\#202;","Ê"],["\\&Euml;","\\&\\#203;","Ë"],["\\&Igrave;","\\&\\#204;","Ì"],["\\&Iacute;","\\&\\#205;","Í"],["\\&Icirc;","\\&\\#206;","Î"],["\\&Iuml;","\\&\\#207;","Ï"],["\\&ETH;","\\&\\#208;","Ð"],["\\&Ntilde;","\\&\\#209;","Ñ"],["\\&Ograve;","\\&\\#210;","Ò"],["\\&Oacute;","\\&\\#211;","Ó"],["\\&Ocirc;","\\&\\#212;","Ô"],["\\&Otilde;","\\&\\#213;","Õ"],["\\&Ouml;","\\&\\#214;","Ö"],["\\&times;","\\&\\#215;","×"],["\\&Oslash;","\\&\\#216;","Ø"],["\\&Ugrave;","\\&\\#217;","Ù"],["\\&Uacute;","\\&\\#218;","Ú"],["\\&Ucirc;","\\&\\#219;","Û"],["\\&Uuml;","\\&\\#220;","Ü"],["\\&Yacute;","\\&\\#221;","Ý"],["\\&THORN;","\\&\\#222;","Þ"],["\\&szlig;","\\&\\#223;","ß"],["\\&agrave;","\\&\\#224;","à"],["\\&aacute;","\\&\\#225;","á"],["\\&acirc;","\\&\\#226;","â"],["\\&atilde;","\\&\\#227;","ã"],["\\&auml;","\\&\\#228;","ä"],["\\&aring;","\\&\\#229;","å"],["\\&aelig;","\\&\\#230;","æ"],["\\&ccedil;","\\&\\#231;","ç"],["\\&egrave;","\\&\\#232;","è"],["\\&eacute;","\\&\\#233;","é"],["\\&ecirc;","\\&\\#234;","ê"],["\\&euml;","\\&\\#235;","ë"],["\\&igrave;","\\&\\#236;","ì"],["\\&iacute;","\\&\\#237;","í"],["\\&icirc;","\\&\\#238;","î"],["\\&iuml;","\\&\\#239;","ï"],["\\&eth;","\\&\\#240;","ð"],["\\&ntilde;","\\&\\#241;","ñ"],["\\&ograve;","\\&\\#242;","ò"],["\\&oacute;","\\&\\#243;","ó"],["\\&ocirc;","\\&\\#244;","ô"],["\\&otilde;","\\&\\#245;","õ"],["\\&ouml;","\\&\\#246;","ö"],["\\&divide;","\\&\\#247;","÷"],["\\&oslash;","\\&\\#248;","ø"],["\\&ugrave;","\\&\\#249;","ù"],["\\&uacute;","\\&\\#250;","ú"],["\\&ucirc;","\\&\\#251;","û"],["\\&uuml;","\\&\\#252;","ü"],["\\&yacute;","\\&\\#253;","ý"],["\\&thorn;","\\&\\#254;","þ"],["\\&yuml;","\\&\\#255;","ÿ"],["\\&fnof;","\\&\\#402;","ƒ"],["\\&Alpha;","\\&\\#913;","Α"],["\\&Beta;","\\&\\#914;","Β"],["\\&Gamma;","\\&\\#915;","Γ"],["\\&Delta;","\\&\\#916;","Δ"],["\\&Epsilon;","\\&\\#917;","Ε"],["\\&Zeta;","\\&\\#918;","Ζ"],["\\&Eta;","\\&\\#919;","Η"],["\\&Theta;","\\&\\#920;","Θ"],["\\&Iota;","\\&\\#921;","Ι"],["\\&Kappa;","\\&\\#922;","Κ"],["\\&Lambda;","\\&\\#923;","Λ"],["\\&Mu;","\\&\\#924;","Μ"],["\\&Nu;","\\&\\#925;","Ν"],["\\&Xi;","\\&\\#926;","Ξ"],["\\&Omicron;","\\&\\#927;","Ο"],["\\&Pi;","\\&\\#928;","Π"],["\\&Rho;","\\&\\#929;","Ρ"],["\\&Sigma;","\\&\\#931;","Σ"],["\\&Tau;","\\&\\#932;","Τ"],["\\&Upsilon;","\\&\\#933;","Υ"],["\\&Phi;","\\&\\#934;","Φ"],["\\&Chi;","\\&\\#935;","Χ"],["\\&Psi;","\\&\\#936;","Ψ"],["\\&Omega;","\\&\\#937;","Ω"],["\\&alpha;","\\&\\#945;","α"],["\\&beta;","\\&\\#946;","β"],["\\&gamma;","\\&\\#947;","γ"],["\\&delta;","\\&\\#948;","δ"],["\\&epsilon;","\\&\\#949;","ε"],["\\&zeta;","\\&\\#950;","ζ"],["\\&eta;","\\&\\#951;","η"],["\\&theta;","\\&\\#952;","θ"],["\\&iota;","\\&\\#953;","ι"],["\\&kappa;","\\&\\#954;","κ"],["\\&lambda;","\\&\\#955;","λ"],["\\&mu;","\\&\\#956;","μ"],["\\&nu;","\\&\\#957;","ν"],["\\&xi;","\\&\\#958;","ξ"],["\\&omicron;","\\&\\#959;","ο"],["\\&pi;","\\&\\#960;","π"],["\\&rho;","\\&\\#961;","ρ"],["\\&sigmaf;","\\&\\#962;","ς"],["\\&sigma;","\\&\\#963;","σ"],["\\&tau;","\\&\\#964;","τ"],["\\&upsilon;","\\&\\#965;","υ"],["\\&phi;","\\&\\#966;","φ"],["\\&chi;","\\&\\#967;","χ"],["\\&psi;","\\&\\#968;","ψ"],["\\&omega;","\\&\\#969;","ω"],["\\&thetasym;","\\&\\#977;","ϑ"],["\\&upsih;","\\&\\#978;","ϒ"],["\\&piv;","\\&\\#982;","ϖ"],["\\&bull;","\\&\\#8226;","•"],["\\&hellip;","\\&\\#8230;","…"],["\\&prime;","\\&\\#8242;","′"],["\\&Prime;","\\&\\#8243;","″"],["\\&oline;","\\&\\#8254;","‾"],["\\&frasl;","\\&\\#8260;","⁄"],["\\&weierp;","\\&\\#8472;","℘"],["\\&image;","\\&\\#8465;","ℑ"],["\\&real;","\\&\\#8476;","ℜ"],["\\&trade;","\\&\\#8482;","™"],["\\&alefsym;","\\&\\#8501;","ℵ"],["\\&larr;","\\&\\#8592;","←"],["\\&uarr;","\\&\\#8593;","↑"],["\\&rarr;","\\&\\#8594;","→"],["\\&darr;","\\&\\#8595;","↓"],["\\&harr;","\\&\\#8596;","↔"],["\\&crarr;","\\&\\#8629;","↵"],["\\&lArr;","\\&\\#8656;","⇐"],["\\&uArr;","\\&\\#8657;","⇑"],["\\&rArr;","\\&\\#8658;","⇒"],["\\&dArr;","\\&\\#8659;","⇓"],["\\&hArr;","\\&\\#8660;","⇔"],["\\&forall;","\\&\\#8704;","∀"],["\\&part;","\\&\\#8706;","∂"],["\\&exist;","\\&\\#8707;","∃"],["\\&empty;","\\&\\#8709;","∅"],["\\&nabla;","\\&\\#8711;","∇"],["\\&isin;","\\&\\#8712;","∈"],["\\&notin;","\\&\\#8713;","∉"],["\\&ni;","\\&\\#8715;","∋"],["\\&prod;","\\&\\#8719;","∏"],["\\&sum;","\\&\\#8721;","∑"],["\\&minus;","\\&\\#8722;","−"],["\\&lowast;","\\&\\#8727;","∗"],["\\&radic;","\\&\\#8730;","√"],["\\&prop;","\\&\\#8733;","∝"],["\\&infin;","\\&\\#8734;","∞"],["\\&ang;","\\&\\#8736;","∠"],["\\&and;","\\&\\#8743;","∧"],["\\&or;","\\&\\#8744;","∨"],["\\&cap;","\\&\\#8745;","∩"],["\\&cup;","\\&\\#8746;","∪"],["\\&int;","\\&\\#8747;","∫"],["\\&there4;","\\&\\#8756;","∴"],["\\&sim;","\\&\\#8764;","∼"],["\\&cong;","\\&\\#8773;","≅"],["\\&asymp;","\\&\\#8776;","≈"],["\\&ne;","\\&\\#8800;","≠"],["\\&equiv;","\\&\\#8801;","≡"],["\\&le;","\\&\\#8804;","≤"],["\\&ge;","\\&\\#8805;","≥"],["\\&sub;","\\&\\#8834;","⊂"],["\\&sup;","\\&\\#8835;","⊃"],["\\&nsub;","\\&\\#8836;","⊄"],["\\&sube;","\\&\\#8838;","⊆"],["\\&supe;","\\&\\#8839;","⊇"],["\\&oplus;","\\&\\#8853;","⊕"],["\\&otimes;","\\&\\#8855;","⊗"],["\\&perp;","\\&\\#8869;","⊥"],["\\&sdot;","\\&\\#8901;","⋅"],["\\&lceil;","\\&\\#8968;","⌈"],["\\&rceil;","\\&\\#8969;","⌉"],["\\&lfloor;","\\&\\#8970;","⌊"],["\\&rfloor;","\\&\\#8971;","⌋"],["\\&lang;","\\&\\#9001;","〈"],["\\&rang;","\\&\\#9002;","〉"],["\\&spades;","\\&\\#9824;","♠"],["\\&clubs;","\\&\\#9827;","♣"],["\\&hearts;","\\&\\#9829;","♥"],["\\&diams;","\\&\\#9830;","♦"],["\\&loz;","\\&\\#9674;","◊"],["\\&OElig;","\\&\\#338;","Œ"],["\\&oelig;","\\&\\#339;","œ"],["\\&Scaron;","\\&\\#352;","Š"],["\\&scaron;","\\&\\#353;","š"],["\\&Yuml;","\\&\\#376;","Ÿ"],["\\&circ;","\\&\\#710;","ˆ"],["\\&tilde;","\\&\\#732;","˜"],["\\&ensp;","\\&\\#8194;"," "],["\\&emsp;","\\&\\#8195;"," "],["\\&thinsp;","\\&\\#8201;"," "],["\\&zwnj;","\\&\\#8204;","‌"],["\\&zwj;","\\&\\#8205;","‍"],["\\&lrm;","\\&\\#8206;","‎"],["\\&rlm;","\\&\\#8207;","‏"],["\\&ndash;","\\&\\#8211;","–"],["\\&mdash;","\\&\\#8212;","—"],["\\&lsquo;","\\&\\#8216;","‘"],["\\&rsquo;","\\&\\#8217;","’"],["\\&sbquo;","\\&\\#8218;","‚"],["\\&ldquo;","\\&\\#8220;","“"],["\\&rdquo;","\\&\\#8221;","”"],["\\&bdquo;","\\&\\#8222;","„"],["\\&dagger;","\\&\\#8224;","†"],["\\&Dagger;","\\&\\#8225;","‡"],["\\&permil;","\\&\\#8240;","‰"],["\\&lsaquo;","\\&\\#8249;","‹"],["\\&rsaquo;","\\&\\#8250;","›"],["\\&euro;","\\&\\#8364;","€"]],Typograf.prototype.entities.forEach(function(e){e[3]=new RegExp("("+e[0]+"|"+e[1]+")","g")},this),Typograf.data("month",["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]),Typograf.data("weekday",["понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"]),Typograf.rule({title:"Удаление двойной пунктуации",name:"delDoublePunctiation",sortIndex:580,func:function(e){return e.replace(/(,|:|;|\?){2,}/g,"$1")}}),Typograf.rule({title:"!! → !",name:"exclamation",sortIndex:1150,func:function(e){return e.replace(/(^|[^!])\!{2}($|[^!])/,"$1!$2").replace(/(^|[^!])\!{4}?($|[^!])/,"$1!!!$2")}}),Typograf.rule({title:"!? → ?!",name:"exclamationQuestion",sortIndex:1140,func:function(e){var r=new RegExp("(^|[^!])!\\?([^?]|$)","g");return e.replace(r,"$1?!$2")}}),Typograf.rule({title:"Расстановка кавычек",name:"quot",sortIndex:700,func:function(e,r){var n="[\\w\\dа-яёА-ЯЁ]",t=r.lquot,a=r.rquot,u=r.lquot2,i=r.rquot2,o="(?:^|<\\w.*?>)*",l="(?:…|"+n+"|\\n)",c="(?:"+[n,"[)!?.:;#*]"].join("|")+")*",s='(«|»|„|“|”|‘|’|&quot;|")',p='(»|“|&quot;|")',g=new RegExp("("+o+")?"+s+"("+o+l+o+")","g"),f=new RegExp("("+o+c+o+")"+p+"("+c+")","g"),d=new RegExp("("+t+")(.*?)"+t+"(.*?)("+a+")","g"),$=new RegExp("("+t+")(.*?)"+a+"(.*?)("+a+")","g"),m=new RegExp(t+t,"g"),h=new RegExp(a+a,"g");return e=e.replace(g,"$1"+t+"$3").replace(f,"$1"+a+"$3"),e=t===u&&a===i?e.replace(m,"$1$2"+t+"$3$4").replace(h,"$1$2"+a+"$3$4"):e.replace(d,"$1$2"+u+"$3$4").replace($,"$1$2"+i+"$3$4")},settings:{lquot:"«",rquot:"»",lquot2:"„",rquot2:"“"}}),function(){var e="(^| |\\n)",r="( |,|\\.|\\?|\\:|\\!|$)";Typograf.rule({title:"Дефис перед то, либо, нибудь, ка, де, кась",name:"dash/to",sortIndex:30,func:function(e){var n=new RegExp("( | ?- ?)(то|либо|нибудь|ка|де|кась)"+r,"g");return e.replace(n,"-$2$3")}}),Typograf.rule({title:"Дефис между из-за",name:"dash/izza",sortIndex:33,func:function(n){var t=new RegExp(e+"(И|и)з за"+r,"g");return n.replace(t,"$1$2з-за$3")}}),Typograf.rule({title:"Дефис между из-под",name:"dash/izpod",sortIndex:35,func:function(n){var t=new RegExp(e+"(И|и)з под"+r,"g");return n.replace(t,"$1$2з-под$3")}}),Typograf.rule({title:"Дефис после кое и кой",name:"dash/koe",sortIndex:38,func:function(n){var t=new RegExp(e+"(К|к)ое\\s([а-яё]{3,})"+r,"g");n=n.replace(t,"$1$2ое-$3$4");var a=new RegExp(e+"(К|к)ой\\s([а-я]{3,})"+r,"g");return n.replace(a,"$1$2ой-$3$4")}}),Typograf.rule({title:"Дефис между верно-таки и т.д.",name:"dash/taki",sortIndex:39,func:function(e){var n=new RegExp("(верно|довольно|опять|прямо|так|всё|действительно|неужели)\\s(таки)"+r,"g");return e.replace(n,"$1-$2$3")}})}(),Typograf.rule({title:"Дефис на тире",name:"dash/main",sortIndex:620,func:function(e){var r=new RegExp("(\\s| )(-|—)(\\s|\\n)","g");return e.replace(r," —$3").replace(/(X|I|V)(?: |\u00A0)?(-|—)(?: |\u00A0)?(X|I|V)/g,"$1—$3")},settings:{dash:"—",dashInterval:"—"}}),Typograf.rule({title:"Дефис между месяцами",name:"dash/month",sortIndex:610,func:function(e){var r="("+this.data.month.join("|")+")",n=new RegExp(r+" ?(-|—) ?"+r,"gi");return e.replace(n,"$1"+this.setting("dash/main","dashInterval")+"$3")}}),Typograf.rule({title:"Дефис между днями недели",name:"dash/weekday",sortIndex:600,func:function(e){var r="("+this.data.weekday.join("|")+")",n=new RegExp(r+" ?(-|—) ?"+r,"gi");return e.replace(n,"$1"+this.setting("dash/main","dashInterval")+"$3")}}),Typograf.rule({title:"Преобразование дат к виду DD.MM.YYYY",name:"date/main",sortIndex:1300,func:function(e){var r="(-|\\.|\\/)",n="(-|\\/)",t=new RegExp("(^|\\D)(\\d{4})"+r+"(\\d{2})"+r+"(\\d{2})(\\D|$)","gi"),a=new RegExp("(^|\\D)(\\d{2})"+n+"(\\d{2})"+n+"(\\d{4})(\\D|$)","gi");return e.replace(t,"$1$6.$4.$2$7").replace(a,"$1$4.$2.$6$7")}}),Typograf.rule({title:"Замена перевода строки на <br/>",name:"html/nbr",sortIndex:710,func:function(e){return e.replace(/\n/g,"<br/>")},enabled:!1}),Typograf.rule({title:"Расстановка <p> и <br/>",name:"html/pbr",sortIndex:700,func:function(e){return-1===e.search(/\n/)?e="<p>"+e+"</p>":(e="<p>"+e.replace(/\n\n/g,"</p>\n<p>")+"</p>",e=e.replace(/([^>])\n/g,"$1<br/>\n")),e},enabled:!1}),Typograf.rule({title:"Удаление HTML-тегов",name:"html/stripTags",sortIndex:5,func:function(e){return e.replace(/<\/?[^>]+>/g,"")},enabled:!1}),Typograf.rule({title:"Расстановка ссылок",name:"html/url",sortIndex:200,func:function(e){var r="(http|https|ftp|telnet|news|gopher|file|wais)://",n="([a-zA-Z0-9/\\n+-=%&:_.~?]+[a-zA-Z0-9#+]*)",t=new RegExp(r+n,"g");return e.replace(t,function(e,r,n){var t=n,a=r+"://"+n,u='<a href="'+a+'">';return"http"===r?(t=t.replace(/^www\./,"").replace(/^([^\/]+)\/$/,"$1"),u+t+"</a>"):u+a+"</a>"})}}),Typograf.rule({title:"$100 → 100 $",name:"money/dollar",sortIndex:1140,func:function(e){var r=new RegExp("(^|[\\D]{2,})\\$ ?([\\d.,]+)","g"),n=new RegExp("(^|[\\D])([\\d.,]+) ?\\$"),t="$1$2 $";return e.replace(r,t).replace(n,t)}}),Typograf.rule({title:"€100 → 100 €",name:"money/euro",sortIndex:1140,func:function(e){var r=new RegExp("(^|[\\D]{2,})€ ?([\\d.]+)","g"),n=new RegExp("(^|[\\D])([\\d.,]+) ?€"),t="$1$2 €";return e.replace(r,t).replace(n,t)}}),Typograf.rule({title:"Неразрывный пробел после № и §",name:"nbsp/afterNum",sortIndex:610,func:function(e){return e.replace(/№ ?(\d)/g,"№ $1").replace(/§ ?(\d|I|V|X)/g,"§ $1")}}),Typograf.rule({title:"Неразрывный пробел после короткого слова",name:"nbsp/afterShortWord",sortIndex:590,func:function(e,r){var n=r.lengthShortWord,t=new RegExp("( [а-яёА-ЯЁ\\w]{1,"+n+"}) ","g");return n>0?e.replace(t,"$1 "):e},settings:{lengthShortWord:2}}),Typograf.rule({title:"Неразрывный пробел перед ли, ль, же, бы, б",name:"nbsp/beforeParticle",sortIndex:570,func:function(e){return e.replace(/ (ли|ль|же|ж|бы|б)([^а-яёА-ЯЁ])/g," $1$2")}}),Typograf.rule({title:"Неразрывный пробел перед последним коротким словом в предложении",name:"nbsp/beforeShortLastWord",sortIndex:620,func:function(e,r){var n=r.lengthLastWord,t=new RegExp(" ([а-яёА-ЯЁ\\w]{1,"+n+"})(\\.|\\?|:|!|,)","g");return n>0?e.replace(t," $1$2"):e},settings:{lengthLastWord:3}}),Typograf.rule({title:"Расстановка запятых и неразрывного пробела перед а и но",name:"nbsp/but",sortIndex:1110,func:function(e){var r=new RegExp("([,])?( | |\n)(а|но)( | |\n)","g");return e.replace(r,",$2$3$4")}}),Typograf.rule({title:"m2 → м², m3 → м³ и неразрывный пробел",name:"nbsp/m",sortIndex:1030,func:function(e){var r="(км|м|дм|см|мм)",n=new RegExp("(^|\\D)(\\d+) ?"+r+"2(\\D|$)","g"),t=new RegExp("(^|\\D)(\\d+) ?"+r+"3(\\D|$)","g");return e=e.replace(n,"$1$2 $3²$4"),e.replace(t,"$1$2 $3³$4")}}),Typograf.rule({title:"Неразрывный пробел после OOO или ОАО",name:"nbsp/ooo",sortIndex:1100,func:function(e){return e.replace(/(ООО|ОАО) /g,"$1 ")}}),Typograf.rule({title:"Неразрывный пробел после XXXX",name:"nbsp/xxxx",sortIndex:1060,func:function(e){return e.replace(/(^|\D)(\d{4}) ?г( |,|;|\.|\n|$)/g,"$1$2 г$3")}}),Typograf.rule({title:"г.г. → гг. и неразрывный пробел",name:"nbsp/yy",sortIndex:1080,func:function(e){return e.replace(/(^|\d) ?г\. ?г\./g,"$1 гг.")}}),Typograf.rule({title:"Пробел после знаков пунктуации",name:"space/afterPunctuation",sortIndex:560,func:function(e){return e.replace(/(\!|;|\?)([^ \n\t\!;\?])/g,"$1 $2").replace(/(\D)(,|\:)([^ \/\d\n\t\!;,\?\.\:])/g,"$1$2 $3")}}),Typograf.rule({title:"Удаление пробела перед %",name:"space/delBeforePercent",sortIndex:600,func:function(e){return e.replace(/(\d)( |\u00A0)%/g,"$1%")}}),Typograf.rule({title:"Удаление пробелов перед знаками пунктуации",name:"space/delBeforePunctuation",sortIndex:550,func:function(e){return e.replace(/ (\!|;|,|\?|\.|\:)/g,"$1").replace(/\( /g,"(").replace(/([^ ])\(/g,"$1 (").replace(/ \)/g,")").replace(/\)([^\!;,\?\.\:])/g,") $1")}}),Typograf.rule({title:"Удаление повторяющихся переносов строки (не более двух)",name:"space/delRepeatN",sortIndex:545,func:function(e){return e.replace(/\n{3,}/g,"\n\n")}}),Typograf.rule({title:"Удаление повторяющихся пробелов",name:"space/delRepeatSpace",sortIndex:540,func:function(e){return e.replace(/( |\t){2,}/g,"$1")}}),Typograf.rule({title:"Удаление пробелов в конце строк",name:"space/delTrailingBlanks",sortIndex:505,func:function(e){return e.replace(/( |\t)+\n/g,"\n")}}),Typograf.rule({title:"Замена табов на пробелы",name:"space/replaceTab",sortIndex:510,func:function(e){return e.replace(/\t/g," ")}}),Typograf.rule({title:"Удаление пробелов в начале и в конце текста",name:"space/trim",sortIndex:530,func:function(e){return e.trim()}}),Typograf.rule({title:"-> → →, <- → ←",name:"sym/arrow",sortIndex:1130,func:function(e){return e.replace(/(^|[^-])->(?!>)/g,"$1→").replace(/(^|[^<])<-(?!-)/g,"$1←")}}),Typograf.rule({title:"Удаление лишних точек и пробелов в вв.",name:"sym/cc",sortIndex:1090,func:function(e){return e=e.replace(/(^|\d|V|I|X) ?в(в)?( |,|;|\n|$)/g,"$1 в$2.$3"),e.replace(/(^|\d|[IVX]) ?в\.? ?в\./g,"$1 вв.")}}),Typograf.rule({title:"Добавление ° к C и F",name:"sym/cf",sortIndex:1020,func:function(e){var r=new RegExp('(\\d+)( | )?(C|F)([\\W \\.,:\\!\\?"\\]\\)]|$)',"g");return e.replace(r,"$1 °$3$4")}}),Typograf.rule({title:"(c) → ©, (tm) → ©, (r) → ™",name:"sym/copy",sortIndex:10,func:function(e){return e.replace(/\(r\)/gi,"®").replace(/\((c|с)\)/gi,"©").replace(/\(tm\)/gi,"™")}}),Typograf.rule({title:"1/2 → ½, 1/4 → ¼, 3/3 → ¾",name:"sym/fraction",sortIndex:1120,func:function(e){return e.replace(/(^|\D)1\/2(\D|$)/g,"$1½$2").replace(/(^|\D)1\/4(\D|$)/g,"$1¼$2").replace(/(^|\D)3\/4(\D|$)/g,"$1¾$2")}}),Typograf.rule({title:"... → …",name:"sym/hellip",sortIndex:20,func:function(e){return e.replace(/(^|[^.])\.{3,4}([^.]|$)/g,"$1…$2")}}),Typograf.rule({title:"+- → ±",name:"sym/plusMinus",sortIndex:1010,func:function(e){var r=new RegExp("(^| |\\>| )\\+-(\\d)","g");return e.replace(r,"$1±$2").replace(/(^\s*)\+-(\s*$)/g,"$1±$2")}}),Typograf.rule({title:"x → ×",name:"sym/times",sortIndex:1050,func:function(e){return e.replace(/(\d) ?(x|х) ?(\d)/g,"$1×$3")}}),Typograf._sortRules(),Typograf._needSortRules=!0;
function Typograf(e){this._prefs="object"==typeof e?e:{},this._settings={},this._enabledRules={},this._rules.forEach(function(e){this._settings[e.name]=e.settings||{},this._enabledRules[e.name]=e.enabled},this)}Typograf.rule=function(e){return e.enabled=e.enabled===!1?!1:!0,Typograf.prototype._rules.push(e),Typograf._needSortRules&&this._sortRules(),this},Typograf.data=function(e,r){Typograf.prototype.data[e]=r},Typograf._sortRules=function(){Typograf.prototype._rules.sort(function(e,r){return e.sortIndex>r.sortIndex?1:-1})},Typograf.prototype={constructor:Typograf,execute:function(e){if(e=""+e,!e)return"";e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");var r=-1!==e.search(/<|>/);return r&&(e=this._hideSafeTags(e)),e=this._utfication(e),this._rules.forEach(function(r){this.enabled(r.name)&&(e=r.func.call(this,e,this._settings[r.name]))},this),e=this._modification(e),r&&(e=this._showSafeTags(e)),e},setting:function(e,r,n){return arguments.length<=2?this._settings[e]&&this._settings[e][r]:(this._settings[e]=this._settings[e]||{},this._settings[e][r]=n,this)},enabled:function(e){return this._enabledRules[e]},disabled:function(e){return!this._enabledRules[e]},enable:function(e){return this._enable(e,!0)},disable:function(e){return this._enable(e,!1)},data:{},_enable:function(e,r){return Array.isArray(e)?e.forEach(function(e){this._enabledRules[e]=r},this):this._enabledRules[e]=r,this},_rules:[],_hideSafeTags:function(e){this._hiddenSafeTags={};var r=this,n="",t=[["<!--","-->"],["<pre[^>]*>","<\\/pre>"],["<code[^>]*>","<\\/code>"],["<style[^>]*>","<\\/style>"],["<script[^>]*>","<\\/script>"],["<object>","<\\/object>"]];t.forEach(function(e){n+="("+e[0]+"(.|\\n)*?"+e[1]+")|"},this);var a=0;return e=e.replace(new RegExp("("+n+"<[^>]*[\\s][^>]*>)","gim"),function(e){var n="__typograf"+a+"__";return r._hiddenSafeTags[n]=e,a++,n})},_showSafeTags:function(e){return Object.keys(this._hiddenSafeTags).forEach(function(r){e=e.replace(new RegExp(r,"gim"),this._hiddenSafeTags[r])},this),delete this._hiddenSafeTags,e},_utfication:function(e){return-1===e.search("&")?e:(this.entities.forEach(function(r){e=e.replace(r[3],r[2])},this),e)},_modification:function(e){var r,n=this._prefs.mode;return("name"===n||"digit"===n)&&(r="name"===n?0:1,this.entities.forEach(function(n){e=e.replace(new RegExp(n[2],"g"),n[r])},this)),e}},"object"==typeof exports&&(module.exports=Typograf),Typograf.prototype.entities=[],[["nbsp",160],["iexcl",161],["cent",162],["pound",163],["curren",164],["yen",165],["brvbar",166],["sect",167],["uml",168],["copy",169],["ordf",170],["laquo",171],["not",172],["shy",173],["reg",174],["macr",175],["deg",176],["plusmn",177],["sup2",178],["sup3",179],["acute",180],["micro",181],["para",182],["middot",183],["cedil",184],["sup1",185],["ordm",186],["raquo",187],["frac14",188],["frac12",189],["frac34",190],["iquest",191],["Agrave",192],["Aacute",193],["Acirc",194],["Atilde",195],["Auml",196],["Aring",197],["AElig",198],["Ccedil",199],["Egrave",200],["Eacute",201],["Ecirc",202],["Euml",203],["Igrave",204],["Iacute",205],["Icirc",206],["Iuml",207],["ETH",208],["Ntilde",209],["Ograve",210],["Oacute",211],["Ocirc",212],["Otilde",213],["Ouml",214],["times",215],["Oslash",216],["Ugrave",217],["Uacute",218],["Ucirc",219],["Uuml",220],["Yacute",221],["THORN",222],["szlig",223],["agrave",224],["aacute",225],["acirc",226],["atilde",227],["auml",228],["aring",229],["aelig",230],["ccedil",231],["egrave",232],["eacute",233],["ecirc",234],["euml",235],["igrave",236],["iacute",237],["icirc",238],["iuml",239],["eth",240],["ntilde",241],["ograve",242],["oacute",243],["ocirc",244],["otilde",245],["ouml",246],["divide",247],["oslash",248],["ugrave",249],["uacute",250],["ucirc",251],["uuml",252],["yacute",253],["thorn",254],["yuml",255],["fnof",402],["Alpha",913],["Beta",914],["Gamma",915],["Delta",916],["Epsilon",917],["Zeta",918],["Eta",919],["Theta",920],["Iota",921],["Kappa",922],["Lambda",923],["Mu",924],["Nu",925],["Xi",926],["Omicron",927],["Pi",928],["Rho",929],["Sigma",931],["Tau",932],["Upsilon",933],["Phi",934],["Chi",935],["Psi",936],["Omega",937],["alpha",945],["beta",946],["gamma",947],["delta",948],["epsilon",949],["zeta",950],["eta",951],["theta",952],["iota",953],["kappa",954],["lambda",955],["mu",956],["nu",957],["xi",958],["omicron",959],["pi",960],["rho",961],["sigmaf",962],["sigma",963],["tau",964],["upsilon",965],["phi",966],["chi",967],["psi",968],["omega",969],["thetasym",977],["upsih",978],["piv",982],["bull",8226],["hellip",8230],["prime",8242],["Prime",8243],["oline",8254],["frasl",8260],["weierp",8472],["image",8465],["real",8476],["trade",8482],["alefsym",8501],["larr",8592],["uarr",8593],["rarr",8594],["darr",8595],["harr",8596],["crarr",8629],["lArr",8656],["uArr",8657],["rArr",8658],["dArr",8659],["hArr",8660],["forall",8704],["part",8706],["exist",8707],["empty",8709],["nabla",8711],["isin",8712],["notin",8713],["ni",8715],["prod",8719],["sum",8721],["minus",8722],["lowast",8727],["radic",8730],["prop",8733],["infin",8734],["ang",8736],["and",8743],["or",8744],["cap",8745],["cup",8746],["int",8747],["there4",8756],["sim",8764],["cong",8773],["asymp",8776],["ne",8800],["equiv",8801],["le",8804],["ge",8805],["sub",8834],["sup",8835],["nsub",8836],["sube",8838],["supe",8839],["oplus",8853],["otimes",8855],["perp",8869],["sdot",8901],["lceil",8968],["rceil",8969],["lfloor",8970],["rfloor",8971],["lang",9001],["rang",9002],["spades",9824],["clubs",9827],["hearts",9829],["diams",9830],["loz",9674],["OElig",338],["oelig",339],["Scaron",352],["scaron",353],["Yuml",376],["circ",710],["tilde",732],["ensp",8194],["emsp",8195],["thinsp",8201],["zwnj",8204],["zwj",8205],["lrm",8206],["rlm",8207],["ndash",8211],["mdash",8212],["lsquo",8216],["rsquo",8217],["sbquo",8218],["ldquo",8220],["rdquo",8221],["bdquo",8222],["dagger",8224],["Dagger",8225],["permil",8240],["lsaquo",8249],["rsaquo",8250],["euro",8364]].forEach(function(e){var r=e[0]+";",n=e[1]+";",t=["&"+r,"&#"+n,String.fromCharCode(e[1])];t.push(new RegExp("(\\&\\#"+n+(r?"|\\&"+r:"")+")","g")),Typograf.prototype.entities.push(t)},this),Typograf.data("month",["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"]),Typograf.data("weekday",["понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"]),Typograf.rule({title:"Удаление двойной пунктуации",name:"delDoublePunctiation",sortIndex:580,func:function(e){return e.replace(/(,|:|;|\?){2,}/g,"$1")}}),Typograf.rule({title:"!! → !",name:"exclamation",sortIndex:1150,func:function(e){return e.replace(/(^|[^!])\!{2}($|[^!])/,"$1!$2").replace(/(^|[^!])\!{4}?($|[^!])/,"$1!!!$2")}}),Typograf.rule({title:"!? → ?!",name:"exclamationQuestion",sortIndex:1140,func:function(e){var r=new RegExp("(^|[^!])!\\?([^?]|$)","g");return e.replace(r,"$1?!$2")}}),Typograf.rule({title:"Расстановка кавычек",name:"quot",sortIndex:700,func:function(e,r){var n="[\\w\\dа-яёА-ЯЁ]",t=r.lquot,a=r.rquot,u=r.lquot2,o=r.rquot2,i="(?:^|<\\w.*?>)*",l="(?:…|"+n+"|\\n)",c="(?:"+[n,"[)!?.:;#*]"].join("|")+")*",s='(«|»|„|“|”|‘|’|&quot;|")',p='(»|“|&quot;|")',g=new RegExp("("+i+")?"+s+"("+i+l+i+")","g"),f=new RegExp("("+i+c+i+")"+p+"("+c+")","g"),d=new RegExp("("+t+")(.*?)"+t+"(.*?)("+a+")","g"),$=new RegExp("("+t+")(.*?)"+a+"(.*?)("+a+")","g"),m=new RegExp(t+t,"g"),h=new RegExp(a+a,"g");return e=e.replace(g,"$1"+t+"$3").replace(f,"$1"+a+"$3"),e=t===u&&a===o?e.replace(m,"$1$2"+t+"$3$4").replace(h,"$1$2"+a+"$3$4"):e.replace(d,"$1$2"+u+"$3$4").replace($,"$1$2"+o+"$3$4")},settings:{lquot:"«",rquot:"»",lquot2:"„",rquot2:"“"}}),function(){var e="(^| |\\n)",r="( |,|\\.|\\?|\\:|\\!|$)";Typograf.rule({title:"Дефис перед то, либо, нибудь, ка, де, кась",name:"dash/to",sortIndex:30,func:function(e){var n=new RegExp("( | ?- ?)(то|либо|нибудь|ка|де|кась)"+r,"g");return e.replace(n,"-$2$3")}}),Typograf.rule({title:"Дефис между из-за",name:"dash/izza",sortIndex:33,func:function(n){var t=new RegExp(e+"(И|и)з за"+r,"g");return n.replace(t,"$1$2з-за$3")}}),Typograf.rule({title:"Дефис между из-под",name:"dash/izpod",sortIndex:35,func:function(n){var t=new RegExp(e+"(И|и)з под"+r,"g");return n.replace(t,"$1$2з-под$3")}}),Typograf.rule({title:"Дефис после кое и кой",name:"dash/koe",sortIndex:38,func:function(n){var t=new RegExp(e+"(К|к)ое\\s([а-яё]{3,})"+r,"g");n=n.replace(t,"$1$2ое-$3$4");var a=new RegExp(e+"(К|к)ой\\s([а-я]{3,})"+r,"g");return n.replace(a,"$1$2ой-$3$4")}}),Typograf.rule({title:"Дефис между верно-таки и т.д.",name:"dash/taki",sortIndex:39,func:function(e){var n=new RegExp("(верно|довольно|опять|прямо|так|всё|действительно|неужели)\\s(таки)"+r,"g");return e.replace(n,"$1-$2$3")}})}(),Typograf.rule({title:"Дефис на тире",name:"dash/main",sortIndex:620,func:function(e){var r=new RegExp("(\\s| )(-|—)(\\s|\\n)","g");return e.replace(r," —$3").replace(/(X|I|V)(?: |\u00A0)?(-|—)(?: |\u00A0)?(X|I|V)/g,"$1—$3")},settings:{dash:"—",dashInterval:"—"}}),Typograf.rule({title:"Дефис между месяцами",name:"dash/month",sortIndex:610,func:function(e){var r="("+this.data.month.join("|")+")",n=new RegExp(r+" ?(-|—) ?"+r,"gi");return e.replace(n,"$1"+this.setting("dash/main","dashInterval")+"$3")}}),Typograf.rule({title:"Дефис между днями недели",name:"dash/weekday",sortIndex:600,func:function(e){var r="("+this.data.weekday.join("|")+")",n=new RegExp(r+" ?(-|—) ?"+r,"gi");return e.replace(n,"$1"+this.setting("dash/main","dashInterval")+"$3")}}),Typograf.rule({title:"Преобразование дат к виду DD.MM.YYYY",name:"date/main",sortIndex:1300,func:function(e){var r="(-|\\.|\\/)",n="(-|\\/)",t=new RegExp("(^|\\D)(\\d{4})"+r+"(\\d{2})"+r+"(\\d{2})(\\D|$)","gi"),a=new RegExp("(^|\\D)(\\d{2})"+n+"(\\d{2})"+n+"(\\d{4})(\\D|$)","gi");return e.replace(t,"$1$6.$4.$2$7").replace(a,"$1$4.$2.$6$7")}}),Typograf.rule({title:"Замена перевода строки на <br/>",name:"html/nbr",sortIndex:710,func:function(e){return e.replace(/\n/g,"<br/>")},enabled:!1}),Typograf.rule({title:"Расстановка <p> и <br/>",name:"html/pbr",sortIndex:700,func:function(e){return-1===e.search(/\n/)?e="<p>"+e+"</p>":(e="<p>"+e.replace(/\n\n/g,"</p>\n<p>")+"</p>",e=e.replace(/([^>])\n/g,"$1<br/>\n")),e},enabled:!1}),Typograf.rule({title:"Удаление HTML-тегов",name:"html/stripTags",sortIndex:5,func:function(e){return e.replace(/<\/?[^>]+>/g,"")},enabled:!1}),Typograf.rule({title:"Расстановка ссылок",name:"html/url",sortIndex:200,func:function(e){var r="(http|https|ftp|telnet|news|gopher|file|wais)://",n="([a-zA-Z0-9/\\n+-=%&:_.~?]+[a-zA-Z0-9#+]*)",t=new RegExp(r+n,"g");return e.replace(t,function(e,r,n){var t=n,a=r+"://"+n,u='<a href="'+a+'">';return"http"===r?(t=t.replace(/^www\./,"").replace(/^([^\/]+)\/$/,"$1"),u+t+"</a>"):u+a+"</a>"})}}),Typograf.rule({title:"$100 → 100 $",name:"money/dollar",sortIndex:1140,func:function(e){var r=new RegExp("(^|[\\D]{2,})\\$ ?([\\d.,]+)","g"),n=new RegExp("(^|[\\D])([\\d.,]+) ?\\$"),t="$1$2 $";return e.replace(r,t).replace(n,t)}}),Typograf.rule({title:"€100 → 100 €",name:"money/euro",sortIndex:1140,func:function(e){var r=new RegExp("(^|[\\D]{2,})€ ?([\\d.]+)","g"),n=new RegExp("(^|[\\D])([\\d.,]+) ?€"),t="$1$2 €";return e.replace(r,t).replace(n,t)}}),Typograf.rule({title:"Неразрывный пробел после № и §",name:"nbsp/afterNum",sortIndex:610,func:function(e){return e.replace(/№ ?(\d)/g,"№ $1").replace(/§ ?(\d|I|V|X)/g,"§ $1")}}),Typograf.rule({title:"Неразрывный пробел после короткого слова",name:"nbsp/afterShortWord",sortIndex:590,func:function(e,r){var n=r.lengthShortWord,t=new RegExp("( [а-яёА-ЯЁ\\w]{1,"+n+"}) ","g");return e.replace(t,"$1 ")},settings:{lengthShortWord:2}}),Typograf.rule({title:"Неразрывный пробел перед ли, ль, же, бы, б",name:"nbsp/beforeParticle",sortIndex:570,func:function(e){return e.replace(/ (ли|ль|же|ж|бы|б)([^а-яёА-ЯЁ])/g," $1$2")}}),Typograf.rule({title:"Неразрывный пробел перед последним коротким словом в предложении",name:"nbsp/beforeShortLastWord",sortIndex:620,func:function(e,r){var n=r.lengthLastWord,t=new RegExp(" ([а-яёА-ЯЁ\\w]{1,"+n+"})(\\.|\\?|:|!|,)","g");return e.replace(t," $1$2")},settings:{lengthLastWord:3}}),Typograf.rule({title:"Расстановка запятых и неразрывного пробела перед а и но",name:"nbsp/but",sortIndex:1110,func:function(e){var r=new RegExp("([,])?( | |\n)(а|но)( | |\n)","g");return e.replace(r,",$2$3$4")}}),Typograf.rule({title:"m2 → м², m3 → м³ и неразрывный пробел",name:"nbsp/m",sortIndex:1030,func:function(e){var r="(км|м|дм|см|мм)",n=new RegExp("(^|\\D)(\\d+) ?"+r+"2(\\D|$)","g"),t=new RegExp("(^|\\D)(\\d+) ?"+r+"3(\\D|$)","g");return e=e.replace(n,"$1$2 $3²$4"),e.replace(t,"$1$2 $3³$4")}}),Typograf.rule({title:"Неразрывный пробел после OOO или ОАО",name:"nbsp/ooo",sortIndex:1100,func:function(e){return e.replace(/(ООО|ОАО) /g,"$1 ")}}),Typograf.rule({title:"Неразрывный пробел после XXXX",name:"nbsp/xxxx",sortIndex:1060,func:function(e){return e.replace(/(^|\D)(\d{4}) ?г( |,|;|\.|\n|$)/g,"$1$2 г$3")}}),Typograf.rule({title:"г.г. → гг. и неразрывный пробел",name:"nbsp/yy",sortIndex:1080,func:function(e){return e.replace(/(^|\d) ?г\. ?г\./g,"$1 гг.")}}),Typograf.rule({title:"Пробел после знаков пунктуации",name:"space/afterPunctuation",sortIndex:560,func:function(e){return e.replace(/(\!|;|\?)([^ \n\t\!;\?])/g,"$1 $2").replace(/(\D)(,|\:)([^ \/\d\n\t\!;,\?\.\:])/g,"$1$2 $3")}}),Typograf.rule({title:"Удаление пробела перед %",name:"space/delBeforePercent",sortIndex:600,func:function(e){return e.replace(/(\d)( |\u00A0)%/g,"$1%")}}),Typograf.rule({title:"Удаление пробелов перед знаками пунктуации",name:"space/delBeforePunctuation",sortIndex:550,func:function(e){return e.replace(/ (\!|;|,|\?|\.|\:)/g,"$1").replace(/\( /g,"(").replace(/([^ ])\(/g,"$1 (").replace(/ \)/g,")").replace(/\)([^\!;,\?\.\:])/g,") $1")}}),Typograf.rule({title:"Удаление повторяющихся переносов строки (не более двух)",name:"space/delRepeatN",sortIndex:545,func:function(e){return e.replace(/\n{3,}/g,"\n\n")}}),Typograf.rule({title:"Удаление повторяющихся пробелов",name:"space/delRepeatSpace",sortIndex:540,func:function(e){return e.replace(/( |\t){2,}/g,"$1")}}),Typograf.rule({title:"Удаление пробелов в конце строк",name:"space/delTrailingBlanks",sortIndex:505,func:function(e){return e.replace(/( |\t)+\n/g,"\n")}}),Typograf.rule({title:"Замена табов на пробелы",name:"space/replaceTab",sortIndex:510,func:function(e){return e.replace(/\t/g," ")}}),Typograf.rule({title:"Удаление пробелов в начале и в конце текста",name:"space/trim",sortIndex:530,func:function(e){return e.trim()}}),Typograf.rule({title:"-> → →, <- → ←",name:"sym/arrow",sortIndex:1130,func:function(e){return e.replace(/(^|[^-])->(?!>)/g,"$1→").replace(/(^|[^<])<-(?!-)/g,"$1←")}}),Typograf.rule({title:"Удаление лишних точек и пробелов в вв.",name:"sym/cc",sortIndex:1090,func:function(e){return e=e.replace(/(^|\d|V|I|X) ?в(в)?( |,|;|\n|$)/g,"$1 в$2.$3"),e.replace(/(^|\d|[IVX]) ?в\.? ?в\./g,"$1 вв.")}}),Typograf.rule({title:"Добавление ° к C и F",name:"sym/cf",sortIndex:1020,func:function(e){var r=new RegExp('(\\d+)( | )?(C|F)([\\W \\.,:\\!\\?"\\]\\)]|$)',"g");return e.replace(r,"$1 °$3$4")}}),Typograf.rule({title:"(c) → ©, (tm) → ©, (r) → ™",name:"sym/copy",sortIndex:10,func:function(e){return e.replace(/\(r\)/gi,"®").replace(/\((c|с)\)/gi,"©").replace(/\(tm\)/gi,"™")}}),Typograf.rule({title:"1/2 → ½, 1/4 → ¼, 3/3 → ¾",name:"sym/fraction",sortIndex:1120,func:function(e){return e.replace(/(^|\D)1\/2(\D|$)/g,"$1½$2").replace(/(^|\D)1\/4(\D|$)/g,"$1¼$2").replace(/(^|\D)3\/4(\D|$)/g,"$1¾$2")}}),Typograf.rule({title:"... → …",name:"sym/hellip",sortIndex:20,func:function(e){return e.replace(/(^|[^.])\.{3,4}([^.]|$)/g,"$1…$2")}}),Typograf.rule({title:"+- → ±",name:"sym/plusMinus",sortIndex:1010,func:function(e){var r=new RegExp("(^| |\\>| )\\+-(\\d)","g");return e.replace(r,"$1±$2").replace(/(^\s*)\+-(\s*$)/g,"$1±$2")}}),Typograf.rule({title:"x → ×",name:"sym/times",sortIndex:1050,func:function(e){return e.replace(/(\d) ?(x|х) ?(\d)/g,"$1×$3")}}),Typograf._sortRules(),Typograf._needSortRules=!0;
{
"name": "typograf",
"description": "The client and server typographer",
"version": "1.2.4",
"version": "1.2.5",
"author": {

@@ -10,3 +10,3 @@ "name": "Denis Seleznev",

},
"main": "typograf.js",
"main": "dist/typograf.js",
"homepage": "https://github.com/hcodes/typograf",

@@ -39,7 +39,7 @@ "repository": {

"test": "npm run-script jshint && npm run-script check-style && npm run-script unit-test-coverage",
"check-style": "./node_modules/.bin/jscs .",
"jshint": "./node_modules/.bin/jshint .",
"unit-test": "./node_modules/.bin/mocha -u bdd -R spec --recursive test",
"unit-test-coverage": "./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- -u bdd -R spec --recursive test",
"check-style": "./node_modules/.bin/jscs ."
"unit-test-coverage": "./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha -- -u bdd -R spec --recursive test"
}
}

@@ -13,3 +13,7 @@ var assert = require('chai').assert,

['1\r\n2\r\n3', '1\n2\n3'], // Windows
['1\r\r2\r3', '1\n\n2\n3'] // MacOS
['1\r\r2\r3', '1\n\n2\n3'], // MacOS
[0, '0'],
[null, 'null'],
['', ''],
[undefined, 'undefined']
];

@@ -16,0 +20,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc