diff --git a/CHANGELOG.md b/CHANGELOG.md
index b24aec4..683bce4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,18 @@
# (MODX)EvolutionCMS.snippets.ddTypograph changelog
+## Version 2.5 (2021-03-29)
+* \* Attention! PHP >= 5.6 is required.
+* \* Attention! (MODX)EvolutionCMS.libraries.ddTools >= 0.48.1 is required.
+* \+ You can just call `\DDTools\Snippet::runSnippet` to run the snippet without DB and eval (see README → Examples).
+* \+ `\ddDomainComparator\Snippet`: The new class. All snippet code was moved here.
+* \+ README → Links.
+* \* Composer.json:
+ * \+ `homepage`
+ * \+ `authors`.
+ * \* `require` → `dd/evolutioncms-libraries-ddtools`: Renamed from `dd/modxevo-library-ddtools`.
+
+
## Version 2.4.2 (2020-05-06)
* \* Attention! (MODX)EvolutionCMS.libraries.ddTools >= 0.32 is required.
* \* Compatibility with (MODX)EvolutionCMS.libraries.ddTools >= 0.32.
diff --git a/CHANGELOG_ru.md b/CHANGELOG_ru.md
index 21c45bb..d71708b 100644
--- a/CHANGELOG_ru.md
+++ b/CHANGELOG_ru.md
@@ -1,6 +1,18 @@
# (MODX)EvolutionCMS.snippets.ddTypograph changelog
+## Version 2.5 (2021-03-29)
+* \* Внимание! Требуется PHP >= 5.6.
+* \* Внимание! Требуется (MODX)EvolutionCMS.libraries.ddTools >= 0.48.1.
+* \+ Запустить сниппет без DB и eval можно через `\DDTools\Snippet::runSnippet` (см. примеры в README).
+* \+ `\ddTypograph\Snippet`: Новый класс. Весь код сниппета перенесён туда.
+* \+ README → Ссылки.
+* \* Composer.json:
+ * \+ `homepage`
+ * \+ `authors`.
+ * \* `require` → `dd/evolutioncms-libraries-ddtools`: Переименовано из `dd/modxevo-library-ddtools`.
+
+
## Версия 2.4.2 (2020-05-06)
* \* Внимание! Требуется (MODX)EvolutionCMS.libraries.ddTools >= 0.32.
* \* Совместимость с (MODX)EvolutionCMS.libraries.ddTools >= 0.32.
diff --git a/README.md b/README.md
index cd0142a..6362ec9 100644
--- a/README.md
+++ b/README.md
@@ -6,8 +6,8 @@ The snippet doesn’t use third-party services, also it sends no requests. In ot
## Requires
-* PHP >= 5.4
-* [(MODX)EvolutionCMS.libraries.ddTools](https://code.divandesign.biz/modx/ddtools) >= 0.32
+* PHP >= 5.6
+* [(MODX)EvolutionCMS.libraries.ddTools](https://code.divandesign.biz/modx/ddtools) >= 0.48.1
* [PHP.libraries.EMT](http://mdash.ru) 3.5 (contains in archive)
@@ -20,7 +20,7 @@ The snippet doesn’t use third-party services, also it sends no requests. In ot
#### 1. Elements → Snippets: Create a new snippet with the following data
1. Snippet name: `ddTypograph`.
-2. Description: `2.4.2 Snippet for text typography. The snippet doesn’t use third-party services, also it sends no requests. In other words, everything is performed on your server.`.
+2. Description: `2.5 Snippet for text typography. The snippet doesn’t use third-party services, also it sends no requests. In other words, everything is performed on your server.`.
3. Category: `Core`.
4. Parse DocBlock: `no`.
5. Snippet code (php): Insert content of the `ddTypograph_snippet.php` file from the archive.
@@ -121,7 +121,38 @@ The snippet doesn’t use third-party services, also it sends no requests. In ot
```
-## [Home page →](https://code.divandesign.biz/modx/ddtypograph)
+#### Run the snippet through `\DDTools\Snippet::runSnippet` without DB and eval
+
+```php
+\DDTools\Snippet::runSnippet([
+ 'name' => 'ddTypograph',
+ 'params' => [
+ 'text' => "
+ There's nothing you can do that can't be done
+ Nothing you can sing that can't be sung
+
+ https://en.wikipedia.org/wiki/The_Beatles
+ ",
+ 'text_paragraphs' => true,
+ 'text_autoLinks' => true
+ ]
+]);
+```
+
+Returns:
+
+```
+
There’s nothing you can do that can’t be done
+Nothing you can sing that can’t be sung
+en.wikipedia.org/wiki/The_Beatles
+```
+
+
+## Links
+
+* [Home page](https://code.divandesign.biz/modx/ddtypograph)
+* [Telegram chat](https://t.me/dd_code)
+* [Packagist](https://packagist.org/packages/dd/evolutioncms-snippets-ddtypograph)
\ No newline at end of file
diff --git a/README_ru.md b/README_ru.md
index 41d8c9d..f55526d 100644
--- a/README_ru.md
+++ b/README_ru.md
@@ -5,8 +5,8 @@
## Использует
-* PHP >= 5.4
-* [(MODX)EvolutionCMS.libraries.ddTools](https://code.divandesign.biz/modx/ddtools) >= 0.32
+* PHP >= 5.6
+* [(MODX)EvolutionCMS.libraries.ddTools](https://code.divandesign.biz/modx/ddtools) >= 0.48.1
* [PHP.libraries.EMT](http://mdash.ru) 3.5 (содержится в архиве)
@@ -19,7 +19,7 @@
#### 1. Элементы → Сниппеты: Создайте новый сниппет со следующими параметрами
1. Название сниппета: `ddTypograph`.
-2. Описание: `2.4.2 Сниппет типографирует текст. Не использует сторонних сервисов, не отправляет никаких запросов, всё делается прямо у вас на сервере.`.
+2. Описание: `2.5 Сниппет типографирует текст. Не использует сторонних сервисов, не отправляет никаких запросов, всё делается прямо у вас на сервере.`.
3. Категория: `Core`.
4. Анализировать DocBlock: `no`.
5. Код сниппета (php): Вставьте содержимое файла `ddTypograph_snippet.php` из архива.
@@ -120,7 +120,38 @@
```
-## [Home page →](https://code.divandesign.biz/modx/ddtypograph)
+#### Запустить сниппет без DB и eval через `\DDTools\Snippet::runSnippet`
+
+```php
+\DDTools\Snippet::runSnippet([
+ 'name' => 'ddTypograph',
+ 'params' => [
+ 'text' => "
+ There's nothing you can do that can't be done
+ Nothing you can sing that can't be sung
+
+ https://ru.wikipedia.org/wiki/The_Beatles
+ ",
+ 'text_paragraphs' => true,
+ 'text_autoLinks' => true
+ ]
+]);
+```
+
+Вернёт:
+
+```
+There’s nothing you can do that can’t be done
+Nothing you can sing that can’t be sung
+en.wikipedia.org/wiki/The_Beatles
+```
+
+
+## Ссылки
+
+* [Home page](https://code.divandesign.ru/modx/ddtypograph)
+* [Telegram chat](https://t.me/dd_code)
+* [Packagist](https://packagist.org/packages/dd/evolutioncms-snippets-ddtypograph)
\ No newline at end of file
diff --git a/composer.json b/composer.json
index c88cd37..99a6891 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "dd/evolutioncms-snippets-ddtypograph",
"type": "modxevo-snippet",
- "version": "2.4.2",
+ "version": "2.5.0",
"description": "Snippet for text typography. The snippet doesn't use third-party services, also it sends no requests. In other words, everything is performed on your server.",
"keywords": [
"modx",
@@ -21,8 +21,23 @@
"text correction",
"text typography"
],
+ "homepage": "https://code.divandesign.biz/modx/ddtypograph",
+ "authors": [
+ {
+ "name": "DD Group",
+ "email": "code@DivanDesign.biz",
+ "homepage": "https://code.divandesign.biz",
+ "role": "Owner"
+ },
+ {
+ "name": "Ilyas Ronef",
+ "email": "ilyas@DivanDesign.ru",
+ "homepage": "https://ronef.ru",
+ "role": "Developer"
+ }
+ ],
"require": {
- "php": ">=5.4.0",
- "dd/modxevo-library-ddtools": ">=0.32.0"
+ "php": ">=5.6.0",
+ "dd/evolutioncms-libraries-ddtools": ">=0.48.1"
}
}
\ No newline at end of file
diff --git a/ddTypograph_snippet.php b/ddTypograph_snippet.php
index 416377e..c30a90a 100644
--- a/ddTypograph_snippet.php
+++ b/ddTypograph_snippet.php
@@ -1,319 +1,23 @@
4){
- global $ddTypograph;
-
- //Заменим кавычки, вставленные через спец. символы на обычные (а то не обрабатываются в библиотеке)
- $text = str_replace(
- '"',
- '"',
- $text
+//Include (MODX)EvolutionCMS.libraries.ddTools
+require_once(
+ $modx->getConfig('base_path') .
+ 'assets/libs/ddTools/modx.ddtools.class.php'
);
-
- if (!isset($ddTypograph)){
- //Подключаем EMT типограф
- require_once(
- $modx->getConfig('base_path') .
- 'assets/snippets/ddTypograph/EMT.php'
- );
-
- $ddTypograph = new EMTypograph();
- }
-
- //Include (MODX)EvolutionCMS.libraries.ddTools
- require_once(
- $modx->getConfig('base_path') .
- 'assets/libs/ddTools/modx.ddtools.class.php'
- );
-
- //Для обратной совместимости
- extract(\ddTools::verifyRenamedParams([
- 'params' => $params,
- 'compliance' => [
- 'optAlign' => 'OptAlign',
- 'text_paragraphs' => 'Text_paragraphs',
- 'text_autoLinks' => 'Text_autoLinks',
- 'etc_unicodeConvert' => 'Etc_unicodeConvert'
- ]
- ]));
-
- //Safe tags
- $excludeTags =
- isset($excludeTags) ?
- strtolower($excludeTags) :
- 'notg,code'
- ;
- $excludeTags = explode(
- ',',
- $excludeTags
- );
-
- foreach (
- $excludeTags as
- $excludeTags_item
- ){
- $excludeTags_item = trim($excludeTags_item);
-
- //We don't need anything with default EMT tag
- if ($excludeTags_item != 'notg'){
- //Wrap
- $text = str_ireplace(
- [
- //Tag start
- '<' . $excludeTags_item,
- //Tag end
- '' . $excludeTags_item . '>'
- ],
- [
- //Tag start
- '<' . $excludeTags_item,
- //Tag end
- '' . $excludeTags_item . '> '
- ],
- $text
- );
- }
- }
-
- //Если нельзя добавлять теги к тексту
- if (
- isset($noTags) &&
- $noTags == 1
- ){
-// $noTags = 'off';
-
- $optAlign = 'off';
- $text_paragraphs = 'off';
- $text_autoLinks = 'off';
-
- $etc_nobr_to_nbsp = 'on';
- }else{
-// $noTags = 'on';
-
- $optAlign =
- (
- isset($optAlign) &&
- $optAlign == 1
- ) ?
- 'on' :
- 'off'
- ;
- $text_paragraphs =
- (
- isset($text_paragraphs) &&
- $text_paragraphs == 1
- ) ?
- 'on' :
- 'off'
- ;
- $text_autoLinks =
- (
- isset($text_autoLinks) &&
- $text_autoLinks == 1
- ) ?
- 'on' :
- 'off'
- ;
-
- $etc_nobr_to_nbsp = 'off';
- }
-
- $etc_unicodeConvert =
- (
- isset($etc_unicodeConvert) &&
- $etc_unicodeConvert
- ) == 0 ?
- 'off' :
- 'on'
- ;
-
- $ddTypograph->setup([
- //Расстановка «кавычек-елочек» первого уровня
- 'Quote.quotes' => 'on',
- //Внутренние кавычки-лапки
- 'Quote.quotation' => 'on',
-
- //Автоматическая простановка дефисов в обезличенных местоимениях и междометиях
- 'Dash.to_libo_nibud' => 'on',
- //Расстановка дефисов между «из-за», «из-под»
- 'Dash.iz_za_pod' => 'on',
- //Расстановка дефисов перед «-ка», «-де», «-кась».
- 'Dash.ka_de_kas' => 'on',
-
- //Привязка союзов и предлогов к написанным после словам
- 'Nobr.super_nbsp' => 'on',
- //Привязка союзов и предлогов к предыдущим словам в случае конца предложения
- 'Nobr.nbsp_in_the_end' => 'on',
- //TODO: работает плоховато (в «+7 777 777 77 77» ставит неразнывные пробелы только в двух первых случаях), обсудить с Евгением
- //Объединение в неразрывные конструкции номеров телефонов
-// 'Nobr.phone_builder' => $noTags,
- 'Nobr.phone_builder' => 'on',
- //Дополнительный формат номеров телефонов («+7(123)1234567» → «+7 123 123-45-67»)
-// 'Nobr.phone_builder_v2' => $noTags,
- 'Nobr.phone_builder_v2' => 'on',
- //Объединение IP-адресов.
- 'Nobr.ip_address' => 'off',
- //Привязка инициалов к фамилиям («Иванов И. И.» → «Иванов И. И.»)
-// 'Nobr.spaces_nobr_in_surname_abbr' => $noTags,
- 'Nobr.spaces_nobr_in_surname_abbr' => 'on',
- //Расстановка точек у инициалов («Иванов И И» | «Иванов ИИ» → «Иванов И. И.»)
-// 'Nobr.dots_for_surname_abbr' => $noTags,
- 'Nobr.dots_for_surname_abbr' => 'on',
- //TODO: Не работает (по крайней мере, не удалось увидеть работу)
- //Привязка градусов к числу
- 'Nobr.nbsp_celcius' => 'on',
- //TODO: Параметр не ясен
- //Обрамление пятисимвольных слов разделенных дефисом в неразрывные блоки
- 'Nobr.hyphen_nowrap_in_small_words' => 'off',
- //Отмена переноса слова с дефисом
-// 'Nobr.hyphen_nowrap' => $noTags,
- 'Nobr.hyphen_nowrap' => 'on',
- //TODO: Тег «nobr» невалидный, а для «word-spacing» нет значения «nowrap», нужно использовать свойство «white-space».
- //Использовать nowrap для неразрывных конструкций
- 'Nobr.nowrap' => 'on',
-
- //Замена «(tm)» на символ торговой марки «™»
- 'Symbol.tm_replace' => 'on',
- //Замена «(r)» на символ зарегистрированной торговой марки «®»
- 'Symbol.r_sign_replace' => 'on',
- //Замена «(c)» на символ копирайта «©»
- 'Symbol.copy_replace' => 'on',
- //Расстановка правильного апострофа в текстах
- 'Symbol.apostrophe' => 'on',
- //TODO: Параметр не ясен
- //Градусы по Фаренгейту
- 'Symbol.degree_f' => 'on',
- //TODO: Не срабатывает в конце предложения
- //Замена стрелок «<-» и «->» на символы «←» и «→»
- 'Symbol.arrows_symbols' => 'on',
- //TODO: Параметр не ясен
- //Расстановка дюйма после числа
- 'Symbol.no_inches' => 'on',
-
- //Расстановка запятых перед «а» и «но»
- 'Punctmark.auto_comma' => 'on',
- //Замена трех точек на знак многоточия («...» → «…»)
- 'Punctmark.hellip' => 'on',
- //Замена сдвоенных знаков препинания на одинарные
- 'Punctmark.fix_pmarks' => 'on',
- //Замена восклицательного и вопросительного знаков местами
- 'Punctmark.fix_excl_quest_marks' => 'on',
- //Точка в конце текста, если её там нет
- 'Punctmark.dot_on_end' => 'off',
-
- //Расстановка знака минус между числами
- 'Number.minus_between_nums' => 'on',
- //TODO: Параметр не ясен
- //Расстановка знака минус между диапозоном чисел
- 'Number.minus_in_numbers_range' => 'off',
- //Замена «x» (и по-русски и по-английски) на символ «×» в размерных единицах
- 'Number.auto_times_x' => 'on',
- //Замена дробей на соответствующие символы («1/2» → «½», «1/4» → «⅓», «3/4» → «¼»)
- 'Number.simple_fraction' => 'off',
- //Математические знаки больше или равно/меньше или равно/плюс минус/неравно («>=» → «≥», «<=» → «≤», «+-» → «±», «!=» → «≠»)
- 'Number.math_chars' => 'on',
- //Объединение триад чисел полупробелом (не разбивает на триады, просто заменяет обычный пробел на полупробел)
- 'Number.thinsp_between_number_triads' => 'on',
- //Пробел между символом номера и числом
- 'Number.thinsp_between_no_and_number' => 'on',
- //Пробел между символом параграфа и числом
- 'Number.thinsp_between_sect_and_number' => 'on',
-
- //TODO: Параметр не ясен
- //Установка тире и пробельных символов в периодах дат
- 'Date.years' => 'on',
- //Расстановка тире и объединение в неразрывные периоды месяцев
- 'Date.mdash_month_interval' => 'off',
- //Расстановка тире и объединение в неразрывные периоды дней
- 'Date.nbsp_and_dash_month_interval' => 'off',
- //Привязка года к дате (« 01.01.2015г.» → « 01.01.2015 г.»)
- 'Date.nobr_year_in_date' => 'on',
-
- //Удаление лишних пробельных символов и табуляций
- 'Space.many_spaces_to_one' => 'on',
- //Удаление пробела перед символом процента
- 'Space.clear_percent' => 'on',
- //Удаление пробелов перед и после знаков препинания в предложении
- 'Space.clear_before_after_punct' => 'on',
- //Расстановка пробелов после знаков препинания
- 'Space.autospace_after' => 'on',
- //Удаление пробелов внутри скобок, а также расстановка пробела перед скобками
- 'Space.bracket_fix' => 'on',
-
- //Форматирование денежных сокращений (расстановка пробелов и привязка названия валюты к числу)
- 'Abbr.nbsp_money_abbr' => 'on',
- //Объединение сокращений «и т. д.», «и т. п.», «в т. ч.»
-// 'Abbr.nobr_vtch_itd_itp' => $noTags,
- 'Abbr.nobr_vtch_itd_itp' => 'on',
- //Расстановка пробелов перед сокращениями «см.», «им.»
- 'Abbr.nobr_sm_im' => 'on',
- //Расстановка пробелов перед сокращениями «гл.», «стр.», «рис.», «илл.», «ст.», «п.»
- 'Abbr.nobr_acronym' => 'on',
- //Расстановка пробелов в сокращениях «г.», «ул.», «пер.», «д.»
- 'Abbr.nobr_locations' => 'on',
- //Расстановка пробелов перед сокращениями «dpi», «lpi»
- 'Abbr.nobr_abbreviation' => 'on',
- //Объединение сокращений «P.S.», «P.P.S.»
-// 'Abbr.ps_pps' => $noTags,
- 'Abbr.ps_pps' => 'on',
- //Привязка сокращений форм собственности к названиям организаций
- 'Abbr.nbsp_org_abbr' => 'on',
- //Привязка аббревиатуры «ГОСТ» к номеру
-// 'Abbr.nobr_gost' => $noTags,
- 'Abbr.nobr_gost' => 'on',
- //Установка пробельных символов в сокращении вольт
- 'Abbr.nobr_before_unit_volt' => 'on',
- //Замена символов и привязка сокращений в размерных величинах («м», «см», «м2», …)
- 'Abbr.nbsp_before_unit' => 'on',
-
- //TODO: Разобраться, что это за параметр и какие значения он может принимать
- //Все настройки оптического выравнивания
-// 'OptAlign.all' => 'off',
- //Оптическое выравнивание открывающей кавычки
- 'OptAlign.oa_oquote' => $optAlign,
- //Оптическое выравнивание для пунктуации (скобка и запятая)
- 'OptAlign.oa_obracket_coma' => $optAlign,
- //TODO: Параметр не ясен
- //Оптическое выравнивание кавычки
- 'OptAlign.oa_oquote_extra' => $optAlign,
- //Inline стили или CSS-классы
- 'OptAlign.layout' => 'style',
-
- //Простановка параграфов
- 'Text.paragraphs' => $text_paragraphs,
- //Выделение ссылок из текста
- 'Text.auto_links' => $text_autoLinks,
- //Выделение электронной почты из текста
- 'Text.email' => $text_autoLinks,
- //Простановка переносов строк
- 'Text.breakline' => $text_paragraphs,
- //Удаление повторяющихся слов
- 'Text.no_repeat_words' => 'off',
-
- //Преобразовывать html-сущности в юникод
- 'Etc.unicode_convert' => $etc_unicodeConvert,
- //Использовать символ « » вместо тегов для связывания
- 'Etc.nobr_to_nbsp' => $etc_nobr_to_nbsp,
- //Разбиение числа на триады («10000» → «10 000»)
- 'Etc.split_number_to_triads' => 'on'
- ]);
-
- $ddTypograph->set_text($text);
-
- //Типографируем
- $text = $ddTypograph->apply();
-}
-return $text;
+return \DDTools\Snippet::runSnippet([
+ 'name' => 'ddTypograph',
+ 'params' => $params
+]);
?>
\ No newline at end of file
diff --git a/require.php b/require.php
new file mode 100644
index 0000000..6355602
--- /dev/null
+++ b/require.php
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/src/Snippet.php b/src/Snippet.php
new file mode 100644
index 0000000..0a3e668
--- /dev/null
+++ b/src/Snippet.php
@@ -0,0 +1,322 @@
+ '',
+ 'optAlign' => false,
+ 'text_paragraphs' => false,
+ 'text_autoLinks' => false,
+ 'etc_unicodeConvert' => true,
+ 'noTags' => false,
+ 'excludeTags' => 'notg,code'
+ ],
+
+ $paramsTypes = [
+ 'optAlign' => 'boolean',
+ 'text_paragraphs' => 'boolean',
+ 'text_autoLinks' => 'boolean',
+ 'etc_unicodeConvert' => 'boolean',
+ 'noTags' => 'boolean'
+ ],
+
+ $renamedParamsCompliance = [
+ 'optAlign' => 'OptAlign',
+ 'text_paragraphs' => 'Text_paragraphs',
+ 'text_autoLinks' => 'Text_autoLinks',
+ 'etc_unicodeConvert' => 'Etc_unicodeConvert'
+ ]
+ ;
+
+ /**
+ * prepareParams
+ * @version 1.0 (2021-03-29)
+ *
+ * @param $params {stdClass|arrayAssociative|stringJsonObject|stringQueryFormatted}
+ *
+ * @return {void}
+ */
+ protected function prepareParams($params = []){
+ //Call base method
+ parent::prepareParams($params);
+
+ $this->params->excludeTags = explode(
+ ',',
+ strtolower($this->params->excludeTags)
+ );
+ }
+
+ /**
+ * run
+ * @version 1.0 (2021-03-29)
+ *
+ * @return {string}
+ */
+ public function run(){
+ //The snippet must return an empty string even if result is absent
+ $result = $this->params->text;
+
+ //Если есть что типографировать
+ if (strlen($result) > 4){
+ global $ddTypograph;
+
+ //Заменим кавычки, вставленные через спец. символы на обычные (а то не обрабатываются в библиотеке)
+ $result = str_replace(
+ '"',
+ '"',
+ $result
+ );
+
+ if (!isset($ddTypograph)){
+ $ddTypograph = new \EMTypograph();
+ }
+
+ //Safe tags
+ foreach (
+ $this->params->excludeTags as
+ $excludeTags_item
+ ){
+ $excludeTags_item = trim($excludeTags_item);
+
+ //We don't need anything with default EMT tag
+ if ($excludeTags_item != 'notg'){
+ //Wrap
+ $result = str_ireplace(
+ [
+ //Tag start
+ '<' . $excludeTags_item,
+ //Tag end
+ '' . $excludeTags_item . '>'
+ ],
+ [
+ //Tag start
+ '<' . $excludeTags_item,
+ //Tag end
+ '' . $excludeTags_item . '> '
+ ],
+ $result
+ );
+ }
+ }
+
+ //Если нельзя добавлять теги к тексту
+ if ($this->params->noTags){
+// $noTags = 'off';
+
+ $this->params->optAlign = 'off';
+ $this->params->text_paragraphs = 'off';
+ $this->params->text_autoLinks = 'off';
+
+ $etc_nobr_to_nbsp = 'on';
+ }else{
+// $noTags = 'on';
+
+ $this->params->optAlign =
+ $this->params->optAlign ?
+ 'on' :
+ 'off'
+ ;
+ $this->params->text_paragraphs =
+ $this->params->text_paragraphs ?
+ 'on' :
+ 'off'
+ ;
+ $this->params->text_autoLinks =
+ $this->params->text_autoLinks ?
+ 'on' :
+ 'off'
+ ;
+
+ $etc_nobr_to_nbsp = 'off';
+ }
+
+ $this->params->etc_unicodeConvert =
+ $this->params->etc_unicodeConvert ?
+ 'on' :
+ 'off'
+ ;
+
+ $ddTypograph->setup([
+ //Расстановка «кавычек-елочек» первого уровня
+ 'Quote.quotes' => 'on',
+ //Внутренние кавычки-лапки
+ 'Quote.quotation' => 'on',
+
+ //Автоматическая простановка дефисов в обезличенных местоимениях и междометиях
+ 'Dash.to_libo_nibud' => 'on',
+ //Расстановка дефисов между «из-за», «из-под»
+ 'Dash.iz_za_pod' => 'on',
+ //Расстановка дефисов перед «-ка», «-де», «-кась».
+ 'Dash.ka_de_kas' => 'on',
+
+ //Привязка союзов и предлогов к написанным после словам
+ 'Nobr.super_nbsp' => 'on',
+ //Привязка союзов и предлогов к предыдущим словам в случае конца предложения
+ 'Nobr.nbsp_in_the_end' => 'on',
+ //TODO: работает плоховато (в «+7 777 777 77 77» ставит неразнывные пробелы только в двух первых случаях), обсудить с Евгением
+ //Объединение в неразрывные конструкции номеров телефонов
+// 'Nobr.phone_builder' => $noTags,
+ 'Nobr.phone_builder' => 'on',
+ //Дополнительный формат номеров телефонов («+7(123)1234567» → «+7 123 123-45-67»)
+// 'Nobr.phone_builder_v2' => $noTags,
+ 'Nobr.phone_builder_v2' => 'on',
+ //Объединение IP-адресов.
+ 'Nobr.ip_address' => 'off',
+ //Привязка инициалов к фамилиям («Иванов И. И.» → «Иванов И. И.»)
+// 'Nobr.spaces_nobr_in_surname_abbr' => $noTags,
+ 'Nobr.spaces_nobr_in_surname_abbr' => 'on',
+ //Расстановка точек у инициалов («Иванов И И» | «Иванов ИИ» → «Иванов И. И.»)
+// 'Nobr.dots_for_surname_abbr' => $noTags,
+ 'Nobr.dots_for_surname_abbr' => 'on',
+ //TODO: Не работает (по крайней мере, не удалось увидеть работу)
+ //Привязка градусов к числу
+ 'Nobr.nbsp_celcius' => 'on',
+ //TODO: Параметр не ясен
+ //Обрамление пятисимвольных слов разделенных дефисом в неразрывные блоки
+ 'Nobr.hyphen_nowrap_in_small_words' => 'off',
+ //Отмена переноса слова с дефисом
+// 'Nobr.hyphen_nowrap' => $noTags,
+ 'Nobr.hyphen_nowrap' => 'on',
+ //TODO: Тег «nobr» невалидный, а для «word-spacing» нет значения «nowrap», нужно использовать свойство «white-space».
+ //Использовать nowrap для неразрывных конструкций
+ 'Nobr.nowrap' => 'on',
+
+ //Замена «(tm)» на символ торговой марки «™»
+ 'Symbol.tm_replace' => 'on',
+ //Замена «(r)» на символ зарегистрированной торговой марки «®»
+ 'Symbol.r_sign_replace' => 'on',
+ //Замена «(c)» на символ копирайта «©»
+ 'Symbol.copy_replace' => 'on',
+ //Расстановка правильного апострофа в текстах
+ 'Symbol.apostrophe' => 'on',
+ //TODO: Параметр не ясен
+ //Градусы по Фаренгейту
+ 'Symbol.degree_f' => 'on',
+ //TODO: Не срабатывает в конце предложения
+ //Замена стрелок «<-» и «->» на символы «←» и «→»
+ 'Symbol.arrows_symbols' => 'on',
+ //TODO: Параметр не ясен
+ //Расстановка дюйма после числа
+ 'Symbol.no_inches' => 'on',
+
+ //Расстановка запятых перед «а» и «но»
+ 'Punctmark.auto_comma' => 'on',
+ //Замена трех точек на знак многоточия («...» → «…»)
+ 'Punctmark.hellip' => 'on',
+ //Замена сдвоенных знаков препинания на одинарные
+ 'Punctmark.fix_pmarks' => 'on',
+ //Замена восклицательного и вопросительного знаков местами
+ 'Punctmark.fix_excl_quest_marks' => 'on',
+ //Точка в конце текста, если её там нет
+ 'Punctmark.dot_on_end' => 'off',
+
+ //Расстановка знака минус между числами
+ 'Number.minus_between_nums' => 'on',
+ //TODO: Параметр не ясен
+ //Расстановка знака минус между диапозоном чисел
+ 'Number.minus_in_numbers_range' => 'off',
+ //Замена «x» (и по-русски и по-английски) на символ «×» в размерных единицах
+ 'Number.auto_times_x' => 'on',
+ //Замена дробей на соответствующие символы («1/2» → «½», «1/4» → «⅓», «3/4» → «¼»)
+ 'Number.simple_fraction' => 'off',
+ //Математические знаки больше или равно/меньше или равно/плюс минус/неравно («>=» → «≥», «<=» → «≤», «+-» → «±», «!=» → «≠»)
+ 'Number.math_chars' => 'on',
+ //Объединение триад чисел полупробелом (не разбивает на триады, просто заменяет обычный пробел на полупробел)
+ 'Number.thinsp_between_number_triads' => 'on',
+ //Пробел между символом номера и числом
+ 'Number.thinsp_between_no_and_number' => 'on',
+ //Пробел между символом параграфа и числом
+ 'Number.thinsp_between_sect_and_number' => 'on',
+
+ //TODO: Параметр не ясен
+ //Установка тире и пробельных символов в периодах дат
+ 'Date.years' => 'on',
+ //Расстановка тире и объединение в неразрывные периоды месяцев
+ 'Date.mdash_month_interval' => 'off',
+ //Расстановка тире и объединение в неразрывные периоды дней
+ 'Date.nbsp_and_dash_month_interval' => 'off',
+ //Привязка года к дате (« 01.01.2015г.» → « 01.01.2015 г.»)
+ 'Date.nobr_year_in_date' => 'on',
+
+ //Удаление лишних пробельных символов и табуляций
+ 'Space.many_spaces_to_one' => 'on',
+ //Удаление пробела перед символом процента
+ 'Space.clear_percent' => 'on',
+ //Удаление пробелов перед и после знаков препинания в предложении
+ 'Space.clear_before_after_punct' => 'on',
+ //Расстановка пробелов после знаков препинания
+ 'Space.autospace_after' => 'on',
+ //Удаление пробелов внутри скобок, а также расстановка пробела перед скобками
+ 'Space.bracket_fix' => 'on',
+
+ //Форматирование денежных сокращений (расстановка пробелов и привязка названия валюты к числу)
+ 'Abbr.nbsp_money_abbr' => 'on',
+ //Объединение сокращений «и т. д.», «и т. п.», «в т. ч.»
+// 'Abbr.nobr_vtch_itd_itp' => $noTags,
+ 'Abbr.nobr_vtch_itd_itp' => 'on',
+ //Расстановка пробелов перед сокращениями «см.», «им.»
+ 'Abbr.nobr_sm_im' => 'on',
+ //Расстановка пробелов перед сокращениями «гл.», «стр.», «рис.», «илл.», «ст.», «п.»
+ 'Abbr.nobr_acronym' => 'on',
+ //Расстановка пробелов в сокращениях «г.», «ул.», «пер.», «д.»
+ 'Abbr.nobr_locations' => 'on',
+ //Расстановка пробелов перед сокращениями «dpi», «lpi»
+ 'Abbr.nobr_abbreviation' => 'on',
+ //Объединение сокращений «P.S.», «P.P.S.»
+// 'Abbr.ps_pps' => $noTags,
+ 'Abbr.ps_pps' => 'on',
+ //Привязка сокращений форм собственности к названиям организаций
+ 'Abbr.nbsp_org_abbr' => 'on',
+ //Привязка аббревиатуры «ГОСТ» к номеру
+// 'Abbr.nobr_gost' => $noTags,
+ 'Abbr.nobr_gost' => 'on',
+ //Установка пробельных символов в сокращении вольт
+ 'Abbr.nobr_before_unit_volt' => 'on',
+ //Замена символов и привязка сокращений в размерных величинах («м», «см», «м2», …)
+ 'Abbr.nbsp_before_unit' => 'on',
+
+ //TODO: Разобраться, что это за параметр и какие значения он может принимать
+ //Все настройки оптического выравнивания
+// 'OptAlign.all' => 'off',
+ //Оптическое выравнивание открывающей кавычки
+ 'OptAlign.oa_oquote' => $this->params->optAlign,
+ //Оптическое выравнивание для пунктуации (скобка и запятая)
+ 'OptAlign.oa_obracket_coma' => $this->params->optAlign,
+ //TODO: Параметр не ясен
+ //Оптическое выравнивание кавычки
+ 'OptAlign.oa_oquote_extra' => $this->params->optAlign,
+ //Inline стили или CSS-классы
+ 'OptAlign.layout' => 'style',
+
+ //Простановка параграфов
+ 'Text.paragraphs' => $this->params->text_paragraphs,
+ //Выделение ссылок из текста
+ 'Text.auto_links' => $this->params->text_autoLinks,
+ //Выделение электронной почты из текста
+ 'Text.email' => $this->params->text_autoLinks,
+ //Простановка переносов строк
+ 'Text.breakline' => $this->params->text_paragraphs,
+ //Удаление повторяющихся слов
+ 'Text.no_repeat_words' => 'off',
+
+ //Преобразовывать html-сущности в юникод
+ 'Etc.unicode_convert' => $this->params->etc_unicodeConvert,
+ //Использовать символ « » вместо тегов для связывания
+ 'Etc.nobr_to_nbsp' => $etc_nobr_to_nbsp,
+ //Разбиение числа на триады («10000» → «10 000»)
+ 'Etc.split_number_to_triads' => 'on'
+ ]);
+
+ $ddTypograph->set_text($result);
+
+ //Типографируем
+ $result = $ddTypograph->apply();
+ }
+
+ return $result;
+ }
+}
\ No newline at end of file