Skip to content

Commit

Permalink
Вынес замену " на " в отдельное правило.
Browse files Browse the repository at this point in the history
  • Loading branch information
hcodes committed Jul 10, 2017
1 parent 43325ac commit 27ddcc6
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 21 deletions.
2 changes: 0 additions & 2 deletions src/html-entities.js
Expand Up @@ -288,8 +288,6 @@ Typograf.HtmlEntities = {
context.text = context.text.replace(entity.reName, entity.utf);
});
}

context.text = context.text.replace(/"/g, '"');
},
/**
* Entities in decimal or hexadecimal form to UTF-8.
Expand Down
2 changes: 2 additions & 0 deletions src/main.js
Expand Up @@ -408,6 +408,8 @@
},
_enableByMask: function(rule, enabled) {
var re;
if (!rule) { return; }

if (rule.search(/\*/) !== -1) {
re = new RegExp(rule
.replace(/\//g, '\\\/')
Expand Down
7 changes: 7 additions & 0 deletions src/rules/common/html/quot.js
@@ -0,0 +1,7 @@
Typograf.addRule({
name: 'common/html/quot',
queue: 'hide-safe-tags',
handler: function(text) {
return text.replace(/"/g, '"');
}
});
3 changes: 3 additions & 0 deletions src/rules/common/html/quot.json
@@ -0,0 +1,3 @@
{
"common": "" → \""
}
6 changes: 6 additions & 0 deletions src/rules/common/html/quot.spec.js
@@ -0,0 +1,6 @@
tests.push(['common/html/quot', [
[
'"Огонь затухает, и повелители пепла покидают свои троны"',
'"Огонь затухает, и повелители пепла покидают свои троны"',
]
]]);
15 changes: 12 additions & 3 deletions src/rules/common/html/stripTags.spec.js
@@ -1,5 +1,14 @@
tests.push(['common/html/stripTags', [
['123123 12<br/>12312 312 3<p>asdlalsdpa</p>', '123123 1212312 312 3asdlalsdpa'],
['<p', '<p'],
['<p align="center">Hello</p>', 'Hello']
[
'<p>В апреле 2014 года Kadokawa Corporation объявила о намерении перекупить FromSoftware у компании Transcosmos.<br/>\nСделка была завершена 21 мая 2014 года.</p>',
'В апреле 2014 года Kadokawa Corporation объявила о намерении перекупить FromSoftware у компании Transcosmos.\nСделка была завершена 21 мая 2014 года.',
],
[
'<p',
'<p'
],
[
'<p align="center">Hello</p>',
'Hello'
]
]]);
22 changes: 15 additions & 7 deletions src/rules/common/punctuation/quote.ru.spec.js
Expand Up @@ -142,27 +142,35 @@ tests.push([
],
[
'по произведению Достоевского &quot;Преступление и наказание&quot;в театре Моссовета',
'по произведению Достоевского «Преступление и наказание"в театре Моссовета'
'по произведению Достоевского «Преступление и наказание"в театре Моссовета',
{
enableRule: 'common/html/quot'
}
],
[
'Из всей нашей культурной программы самое сильное впечатление на меня произвела постановка &quot;Р.Р.Р.&quot; по произведению Достоевского &quot;Преступление и наказание&quot;в театре Моссовета.' +
'Она буквально влюбила меня в театр.\n&quot;Мы напихиваем в детей ненужное барахло&quot;. 5 радикальных тезисов Германа Грефа об образовании',

'Из всей нашей культурной программы самое сильное впечатление на меня произвела постановка «Р.Р.Р.» по произведению Достоевского «Преступление и наказание"в театре Моссовета.' +
'Она буквально влюбила меня в театр.\n«Мы напихиваем в детей ненужное барахло». 5 радикальных тезисов Германа Грефа об образовании'
'Она буквально влюбила меня в театр.\n«Мы напихиваем в детей ненужное барахло». 5 радикальных тезисов Германа Грефа об образовании',
{
enableRule: 'common/html/quot'
}
],
[
'Из всей нашей культурной программы самое сильное впечатление на меня произвела постановка &quot;Р.Р.Р.&quot; по произведению Достоевского &quot;Преступление и наказание&quot;в театре Моссовета.' +
'Она буквально влюбила меня в театр.\n&quot;Мы напихиваем в детей ненужное барахло&quot;. 5 радикальных тезисов Германа Грефа об образовании\n' +
'Она буквально влюбила меня в театр.\n&quot;Мы напихиваем в детей ненужное барахло&quot;. 5 радикальных тезисов Германа Грефа об образовании\n' +
'Из всей нашей культурной программы самое сильное впечатление на меня произвела постановка &quot;Р.Р.Р.&quot; по произведению Достоевского &quot;Преступление и наказание&quot;в театре Моссовета.' +
'Она буквально влюбила меня в театр.\n&quot;Мы напихиваем в детей ненужное барахло&quot;. 5 радикальных тезисов Германа Грефа об образовании',

'Из всей нашей культурной программы самое сильное впечатление на меня произвела постановка «Р.Р.Р.» по произведению Достоевского «Преступление и наказание"в театре Моссовета.' +
'Она буквально влюбила меня в театр.\n«Мы напихиваем в детей ненужное барахло». 5 радикальных тезисов Германа Грефа об образовании\n' +
'Из всей нашей культурной программы самое сильное впечатление на меня произвела постановка «Р.Р.Р.» по произведению Достоевского «Преступление и наказание"в театре Моссовета.' +
'Она буквально влюбила меня в театр.\n«Мы напихиваем в детей ненужное барахло». 5 радикальных тезисов Германа Грефа об образовании'
'Она буквально влюбила меня в театр.\n«Мы напихиваем в детей ненужное барахло». 5 радикальных тезисов Германа Грефа об образовании',
{
enableRule: 'common/html/quot'
}
]
],
{locale: 'ru'}
]);

24 changes: 15 additions & 9 deletions test/test.rules.js
Expand Up @@ -43,10 +43,13 @@ describe('rules', function() {
const [name, items, props] = elem;
it(name, function() {
items.forEach(function(item) {
const [before, after] = item;
const itTypograf = new Typograf({disableRule: '*', enableRule: name});

const [before, after, testSettings] = item;
const itTypograf = new Typograf({
disableRule: '*',
enableRule: [].concat(name, testSettings && testSettings.enableRule)
});
const result = itTypograf.execute(before, {locale: getLocale(name, props)});

assert.equal(result, after, before + ' → ' + after);
});
});
Expand All @@ -58,15 +61,18 @@ describe('rules, double execute', function() {
const [name, items, props] = elem;
it(name, function() {
items.forEach(function(item) {
const itTypograf = new Typograf({disableRule: '*', enableRule: name});
const [before, after] = item;
const locale = getLocale(name, props);
const [before, after, testSettings] = item;
const itTypograf = new Typograf({
disableRule: '*',
enableRule: [].concat(name, testSettings && testSettings.enableRule)
});
let result = itTypograf.execute(before, {locale: getLocale(name, props)});

let result = itTypograf.execute(before, {locale: locale});
assert.equal(result, after, before + ' → ' + after);

if (!itTypograf._getRule(name).disabled) {
result = itTypograf.execute(result, {locale: locale});
result = itTypograf.execute(result, {locale: getLocale(name, props)});

assert.equal(result, after, before + ' → ' + after);
}
});
Expand Down Expand Up @@ -138,7 +144,7 @@ describe('common specific tests', function() {
]
}
];

tests.forEach(function(t) {
it(t.enableRule.toString(), function() {
check(t);
Expand Down

0 comments on commit 27ddcc6

Please sign in to comment.