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 - '' - ], - [ - //Tag start - '<' . $excludeTags_item, - //Tag end - '' - ], - $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 + '' + ], + [ + //Tag start + '<' . $excludeTags_item, + //Tag end + '' + ], + $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