Coder Social home page Coder Social logo

mdash's People

Contributors

dr-alex avatar dunpeal avatar emuravjev avatar sandello-alkr avatar silverfire avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mdash's Issues

Undefined variable $test

EMT.php: 720-723

$ret['map'] = $test['params']['map'];
$ret['disable'] = $test['params']['map_disable'];
$ret['strict'] = $test['params']['map_strict'];
$test['params']['maps'] = array($ret);

Кавычки rdquo

Типограф обрабатывает ldquo но игнорирует rdquo, в результате при обработке текста добавленного на сайт через tinymce получаласть конструкция [«В пролете"], локально исправил добавлением в массив EMT_Lib::$_charsTable['"']['html'] значения '”'

Yii2

Скачал типограф, дописал в него namespace app\components;
При попытке типографировать лезут ошибки
Invalid argument supplied for foreach() EMTypograph.php #3063
foreach($tret_obj->rules as $rulename => $v)

JS Widget

Всем привет! Если у кого-то есть время и желание, то у нас есть идея реализовать вот такой небольшой виджет http://cl.ly/image/371O3k2f0Z0I/o. Пользователь кладет в закладки браузера нужную ссылку и вызывая на любом сайте, может типографировать выделенный текст.

Проблемы с расширенными настройками типографа

Из письма:

Здравствуйте!

Меня зовут Алексей, и я решил сделать расширение для UMI.CMS, использующее ваш Типограф.

В процессе разработки возникло несколько вопросов.

В чем суть: я решил сделать расширение максимально кастомизируемым, поэтому реализовал возможность пользовательской настройки всех его опций. В процессе тестирования работы опций, обратил внимание на некоторые несоответствия с тем-как-должно-быть:

  1. Заметил, что опция "Quote.quotation" не реагирует на "off" - внутренние кавычки-лапки как проставлялись, так и продолжают проставляться, если активирована опция "Quote.quotes".

  2. В целом, большинство (если не все) опций странно себя ведут внутри конструкции

    . К примеру, если указать

    [email protected]

    (и больше ничего), при этом опция "Text.email" будет включена, то на выходе не произойдет оборачивание указанного адреса в ссылку. Но если указать:

    Мой e-mail: [email protected]

    , то типограф обернет адрес эл. почты в ссылку.

Использую последнюю, на текущий момент, версию скрипта (3.5).
Буду благодарен за ответы.

--
С уважением,
Алексей Арендаренко

Если один абзац заканчивается закрывающей кавычкой, то следующий за ним абзац не обрабатыается

Здравствуйте!

Нашел довольно-таки интересное поведение, которое воспроизводится без проблем.

Итак, вот код:

 $emt = new \EMTypograph();

$emt->settings['dounicode'] = 'on';

$emt->set_text("<p>test - \"test\"</p><p>\"test\" - test</p>");
echo $emt->apply() . PHP_EOL;

В результате работы этого кода будет выведено:

<p>test — «test»</p><p>"test" - test</p>

Как видно, второй абзац не обработался. Если эти абзацы разделить переносом строки \n, то второй абзац будет обработан.

Запятая перед А

Письмо с проблемой:

Добрый день,

Обнаружил странное - если в типограф вставить фразу "Тарифы зон А и Б", то результат получается "Тарифы зон, А и Б". Откуда берется запятая, не очень ясно. Проверял в программе на php-классе, а также на странице http://mdash.ru/demo.html
Это можно как-нибудь исправить?

С уважением, Алексей

Закрывающая кавычка не превратилась в ёлочку

Здравствуйте!

Если этот текст пропустить через типограф (3.4), то кавычки после Мамы и Не все коту масленица не становятся елочками.

Где ты могла меня видеть?
В самом добром кино “Мамы”, в молодежном триллере “Закрытая школа” на СТС. А еще на сцене театра им. Вл. Маяковского в спектакле “Не все коту масленица”.

Неверная кавычка перед :

Новая часть называется "<a href="/articles/finalhourshl/?page=3">Отличие Valve</a>":

типографируется в

Новая часть называется «Отличие Valve«:

Две версии EMT.py

В репозитории находится одновременно две версии EMT.py. В корне с 3000 строк кода, в src-py с 2000. Оставте только одну версию.

Acceptable PHP version

README.md:

"To build EMT you need php version 5.2 or older. "

Did you mean "... or newer" ?

Нумерование точками/цифрами списков ul/ol li

Прошу включить возможность автоматически нумеровать списки через ol/li. На php у меня отлично справляется следующий код (с регуляркой):

//Нумерование точками списков ul li
		//$modx->log(1,$content);
        if (!function_exists("convert_ul_li")) {
            function convert_ul_li($matches) {
                $text = preg_replace('/(?s)(?:<p>)*(?:\s+)(?:&ndash;|–|-|\*|•){1}\s+((?:(?!<\/br>|<br>|<\/p>).)*)\s*(<\/br>|<br>|<\/p>)+/iu', '<li>$1</li>', $matches[0]);
                $text = "<ul>".$text."</ul>";
                return $text;
            }
        }
        $content = preg_replace_callback('/((?:\s*(<p>)*(\s+)(-){1}(\s+)(?:(?!<\/br>|<br>|<\/p>).)*\s*(<\/br>|<br>|<\/p>)+){2,})/iu', 'convert_ul_li', $content);

//Нумерование цифрами списков ol li
		if (!function_exists("convert_ol_li")) {
			function convert_ol_li($matches) {
				$text = preg_replace('/(?s)(?:<(?:[^>]*)>)*\s*(?:\d+(?:\.|&ndash;|-)){1}(?:<(?:[^>]*)>)*(?:\s)+((?:(?!<br>).)*)(<\/br>|<br>)*/iu', '<li>$1</li>', $matches[0]);
				$text = "<ol>".$text."</ol>";
				return $text;
			}
		}
		$content = preg_replace_callback('/(?s)((?:(<([^>]*)>)*(\s)*(\d+(\.|&ndash;|-)){1}(<\/([^>]*)>)*\s+(?:(?!<\/p>).)*(<\/br>|<br>)*){2,})/iu', 'convert_ol_li', $content);

Привязка инициалов к фамилиям

Озвученное правило вызывает подобные эффекты:
В 2000 году ему предложили снять несколько серий детективного сериала «Черная комната» для канала РЕН ТВ.
Превращается в
В 2000 году ему предложили снять несколько серий детективного сериала «Черная комната» для канала РЕН Т.В.

Ломается на обработке безопасных тегов

Написано что в 2015 году уже фиксили проблему, но простой пример осыпается. :-(

$t = new \Emuravjev\Mdash\Typograph();  
$t->add_safe_tag('code');
$t->set_text("<pre><code>text</code></pre>");
echo $t->apply();

Тикет из прошлого: #16

Python documentation

Пожалуйста, оформите документацию к Python-версии в соответствии с стандартом языка Python (docstrings), примеры лучше оформлять в виде doctests

def some_fun():
     ''' We do something here

        We explain what do we do.
     '''

Ошибка в punctuation_marks_base_limit

В шаблоне '/([,]|[:]|[;]]){2,}/' лишняя "]".
Да и сам шаблон какой-то странный, думаю можно заменить на '/(,|:|;){2,}/'.

Но даже если убрать лишнюю скобку, то типограф начинает спотыкаться на

ЗАО «Фирма», или &;

получается

ЗАО «Фирма&raquo, или &

и тд и тп.

и тд и тп.

преобразует в :

и тд и т. п.

Смушает что как-то наполовину.

Добавление точек к инициалам, там где их нет

В тексте
"Проектирование молниезащиты с помощью ПО Model Studio CS Молниезащита"
нет инициалов, но они появляются
"Проектирование молниезащиты с помощью П. О. Model Studio C. S. Молниезащита"

Кодировка исходного кода типографа (PHP)

Исходный код текущей версии типографа написан в кодировке UTF-8 (речь о версии на PHP). Разумеется, в нем присутствуют последовательности, состоящие более чем из одного байта. Это накладывает некоторые ограничения. Технически, самому типографу достаточно быть в однобайтной кодировке, чтобы обрабатывать тексты в UTF-8.

Пример ограничения: при создании модуля, в который включен типограф, для 1С-Битрикс мы столкнулись со следующей проблемой. При размещении модуля в Маркетплейсе (чтобы иметь возможность быстро обновлять его на всех обслуживаемых сайтах) весь исходный код перекодируется в CP-1251. Затем, при установке на сайт в UTF-8, Маркетплейс обратно перекодирует его. В результате те самые не-однобайтные последовательности превращаются в знаки вопроса, в том числе в регулярных выражениях.

Мое предложение: заменить все эти последовательности шестнадцатеричными кодами символов. Мне уже пришлось это сделать, так что я готов сделать fork и pull-request, если это необходимо.

Некорректная работа типографа с кириллическими URL

Добрый день, обнаружилась некорректная работа типографа с кириллическими ссылками.
Метод: safe_sequences() https://github.com/emuravjev/mdash/blob/master/src-php/EMT.php#L329
Regexp: EMT_Lib::url_regex() https://github.com/emuravjev/mdash/blob/master/src-php/EMT.Lib.php#L704

При нахождении ссылки в тексте типа https://пример.укр, типограф возвращает пустую строку.
Проблему решает добавление модификатора u в regexp https://github.com/emuravjev/mdash/blob/master/src-php/EMT.Lib.php#L704

Ссылки и split_number

Здравствуйте!
Имеем: самописный сайт + redactor от Imperavi (http://imperavi.com/redactor/ ) + EMT.
Типограф вызываю при сохранении статьи, на сервере (не через Ajax запрос). Поймала следующий баг: если в статье есть ссылки вроде http://www.bolshoyvopros.ru/questions/693440-kogda-otmechaetsja-den-synovej-kakie-pozdravlenija-s-dnjom-synovej.html (обратите внимание на цифры и дефис после них), то типограф падает с ошибкой:
#8192

Non-static method EMT_Lib::split_number() should not be called statically, assuming $this from incompatible context
location
/хххх/хххх/htdocs/inc/EMT.php(1006) : eval'd code at line 1

Приоритет операторов -- возможная ошибка

https://github.com/emuravjev/mdash/blob/master/src-php/EMT.Lib.php#L200

$text = preg_replace_callback('/(\<\/?)([^<>]+?)(\>)/s', create_function('$m','return (strlen($m[1])==1 && substr(trim($m[2]), 0, 1) == \'-\' && substr(trim($m[2]), 1, 1) != \'-\')? $m[0] : $m[1].( substr(trim($m[2]), 0, 1) === "a" ? "%%___"  : ""  ) . EMT_Lib::encrypt_tag(trim($m[2]))  . $m[3];'), $text);

Без create_function() это раскрывается в:

$text = preg_replace_callback('/(\<\/?)([^<>]+?)(\>)/s', function ($m) {
                return
                    (strlen($m[1])==1 && substr(trim($m[2]), 0, 1) == '-' && substr(trim($m[2]), 1, 1) != '-') ? $m[0] : $m[1]
                    .
                    ( substr(trim($m[2]), 0, 1) === "a" ? "%%___"  : ""  )
                    .
                    EMT_Lib::encrypt_tag(trim($m[2]))
                    .
                    $m[3];
            }, $text);

что вообще выглядит как ошибка: приоритет тернарного оператора ?: ниже оператора . и этот код выполняется как:

(strlen($m[1])==1 && substr(trim($m[2]), 0, 1) == '-' && substr(trim($m[2]), 1, 1) != '-') 

? $m[0] 

: ( $m[1] . ( substr(trim($m[2]), 0, 1) === "a" ? "%%___"  : ""  )... ) ;

То есть либо $m[0] либо склеенная строка.

Все правильно?

Ошибочное преобразование денежных сокращений

При обработке "Форматирование денежных сокращений (расстановка пробелов и привязка названия валюты к числу)"
Блок "nbsp_money_abbr"
Ошибочно устанавливается денежная единица при этом нарушая целостность слова.
Пример:
До обработки типографа:
после 19.00 уехать от остановки
После:
после 19.00 у.е.хать от остановки

Как решение добавить в регулярку проверку на целостность слова.

некорректная замена кавычки в ссылке на конце строки при повторном типографировании

пример:

"проблемная ссылка"
"а тут всё хорошо" и
и ещё одна ссылка для примера.

<a href="#" target="_blank">"проблемная ссылка"</a>
<a href="#" target="_blank">"а тут всё хорошо"</a> и
<a href="#" target="_blank">и ещё одна ссылка для примера</a>.

после первой итерации:

«проблемная ссылка»
«а тут всё хорошо» и
и ещё одна ссылка для примера.

<p><span style="margin-left:-0.44em;">«</span><a href="#" target="_blank">проблемная ссылка</a>»<br />
<span style="margin-left:-0.44em;">«</span><a href="#" target="_blank">а тут всё хорошо</a>» и<br />
<a href="#" target="_blank">и ещё одна ссылка для примера</a>.</p>

После второй итерации:

«проблемная ссылка«
«а тут всё хорошо» и
и ещё одна ссылка для примера.

<p><span style="margin-left:-0.44em;">«</span><a href="#" target="_blank">проблемная ссылка</a>«<br />
<span style="margin-left:-0.44em;">«</span><a href="#" target="_blank">а тут всё хорошо</a>» и<br />
<a href="#" target="_blank">и ещё одна ссылка для примера</a>.</p>

Composer

Добавьте пожалуйста на packagist.org

Портит текст на вложенных кавычках при php_value mbstring.func_overload 2

"МФУ "Большой братик""«МФ„uo;Большо“атик»»

Для 1С-Битрикс актуальная проблема.

Я решил так: в /vendor/emuravjev/mdash/src/Tret/Quote.php исправил функцию inject_in на такую:

$thetext = substr($thetext, 0, $pos) . $text . substr($thetext, $pos + strlen($text));

Есть ли более изящное решение и можно ли это как-то исправлять «для всех»? Кажется, что этот цикл был не спроста. Я слышал, что бывает юникодные строки, где кириллица 2 байта, а латиница 1 байт, такие вещи вроде бы не учитываются таким циклом.

Если что, могу оформить пулл-реквест.

Ошибка при обработке вложенных тегов

$t->add_safe_tag('code');
$t->set_text("<pre><code>text</code></pre>");
echo $t->apply();

В результате получаем дважды обработанный text:

"<pre><code>��m</code></pre>"

При кодировании обрабатывается тег pre и тег code скрывается,
а при обратном декодировании обработка тега pre возвращает code.

Кавычки при отсутствии пробелов

Из письма:

Добрый день.
Типографирую такой текст:

"Поступление"/"Списание"

Результат:

«Поступление"/"Списание»

Причины такого поведения понятны (пробелов нет). Но было бы замечательно, если бы такой текст обрабатывался корректно.

С уважением,
Дмитрий

тесты

Привет, скажи пожалуйста есть тесты для типографа? не могу найти их в репозитории

Пакет в packagist.org

Было бы неплохо зарегистрировать скрипт на packagist.org, удобно внедрять и использовать.

PHP Errors / builder.php

  1. Notice: Undefined index: action in F:\projects\GitHub\EMT\builder\builder.php on line 8

  2. Strict Standards: Non-static method FS::list_only_files() should not be called statically in F:\projects\GitHub\EMT\builder\builder.php on line 73

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.