Да, это я и имел ввиду. Похоже, я понял идею и смогу частично реализовать ее в тайпусе, правда, на все тех же регулярках.
А искать закрывающие и открывающие кавычки не совсем корректно, если вы захотите внести поддержку дюймов <div>Диагональ 22"</div>.
Еще всякие редакторы делают так “тест” — т. е. ставят "неправильные" кавычки, не проверял ваш типограф на этот кейс.
непонятно, допустимы ли в нормах типографики вложенные цитаты на несколько абзацев
Цитата может быть в несколько абзацев, но да, случай крайне редкий.
In [1]: import timeit
In [2]: def test_map(): '-'.join(map(str, map(ord, 'abc'[::-1])))
In [3]: def test_comp(): '-'.join(str(ord(x)) for x in 'abc'[::-1])
In [4]: print(timeit.timeit(test_map, number=1000), timeit.timeit(test_comp, number=1000))
(0.0022649765014648438, 0.0031321048736572266)
3.5.1:
In [1]: import timeit
In [2]: def test_map(): '-'.join(map(str, map(ord, 'abc'[::-1])))
In [3]: def test_comp(): '-'.join(str(ord(x)) for x in 'abc'[::-1])
In [4]: print(timeit.timeit(test_map, number=1000), timeit.timeit(test_comp, number=1000))
0.001268998021259904 0.001320684008533135
Вы просто оптимизировали, а я небольшой фанат матрешек, вот без мап:
def test_map(): '-'.join(map(str, [ord(x) for x in 'abc'[::-1]]))
def test_comp(): '-'.join(str(ord(x)) for x in 'abc'[::-1])
print(timeit.timeit(test_map, number=1000), timeit.timeit(test_comp, number=1000))
(0.003298044204711914, 0.0029828548431396484)
'For ones, maybe someone will call me 'sir' without adding, 'you're making a scene.''
“For ones, maybe someone will call me ‘sir’ without adding, ‘you’re making a scene.’”
Интересно, как это я проморгал ваш проект. По честному гуглил.
Из тестов тут почти все. Всякие "сложные случаи" уже разложены отдельно и я с ходу их не назову, ну может это или вот еще.
Пока я вижу незначительные расхождения в использовании правил, скорее субъективных.
тайпус по большей части полагается на грамотно написанный текст и некоторые ваши тесты не пройдет. Например, с незакрытой кавычкой или с тире вначале строки без следующего пробела.
апосторофы оба не ставят. Я, кстати, тупо забыл об этом. Вот, что значит нет реальных кейсов.
html тайпус никак не модифицирует, у вас заметил теги в нижнем регистре
Если будете сверять тесты, имейте ввиду, что мои проверяются как по отдельности для каждого правила, так и вкупе с остальными.
У вас есть демо погонять?
Знатная солянка, узнал много нового, спасибо. В особенности monadic pipeline — ваще огонь )
А вот такое легаси я бы переписал на "длинно и некрасиво":
f.L("abc").map(ord).map(str).reversed().join("-")
'99-98-97'
foo = [ord(x) for x in 'abc']
'-'.join(str(x) for x in foo[::-1])
'99-98-97'
Поинт в том, что если это есть в питоне, этого не надо объяснять новому человеку, а если он этого не знает, то обязан научиться. Ну и еще ваши типы и их методы могут быть сильно медленнее встроенных:
def test_f():
f.L("abc").map(ord).map(str).reversed().join("-")
def test_p():
foo = [ord(x) for x in 'abc']
'-'.join(str(x) for x in foo[::-1])
print(timeit.timeit(test_f, number=1000), timeit.timeit(test_p, number=1000))
0.0127332210541, 0.00602507591248
Чтобы получить совместимость с 2.5-2.6 мне пришлось проставить индексы, которые я и так ставлю, в стрингах для format и в одним месте заменить dict comprehension на вызов dict, который подменяется из пакета future. Т. е. времени ушло 2 минуты. Может кому пригодится в легаси проекте.
Веб-сайт, кстати, работает на тройке, хотя может и на двойке — я не специально, видимо привычка писать совместимые приложения очень сильная.
При просмотре видео в фоне "моргает" весь браузер (типа как при сдошей видюхе). Ubuntu 16.04.1 LTS
Да, это я и имел ввиду. Похоже, я понял идею и смогу частично реализовать ее в тайпусе, правда, на все тех же регулярках.
А искать закрывающие и открывающие кавычки не совсем корректно, если вы захотите внести поддержку дюймов
<div>Диагональ 22"</div>
.Еще всякие редакторы делают так
“тест”
— т. е. ставят "неправильные" кавычки, не проверял ваш типограф на этот кейс.Цитата может быть в несколько абзацев, но да, случай крайне редкий.
Интересная реализация, спасибо. Скажите, а такой кейс обработается?
Чтобы убедиться, что я правильно понял.
Проморгал, что не тот вариант засунул.
2.7.11:
3.5.1:
Мап быстрее в обоих случаях.
Вы просто оптимизировали, а я небольшой фанат матрешек, вот без мап:
У меня comprehension быстрее.
А не расскажите как это у вас происходит, что теги не мешают? Я сходу не разобрался.
Хороший тест:
Ну вот, добавил апостроф, теперь красиво:
Пожалуй, еще добавлю, что тайпус понимает миксованный EnRu текст. Разница между
ru_typus
иen_typus
только в кавычках.Интересно, как это я проморгал ваш проект. По честному гуглил.
Из тестов тут почти все. Всякие "сложные случаи" уже разложены отдельно и я с ходу их не назову, ну может это или вот еще.
Пока я вижу незначительные расхождения в использовании правил, скорее субъективных.
Если будете сверять тесты, имейте ввиду, что мои проверяются как по отдельности для каждого правила, так и вкупе с остальными.
У вас есть демо погонять?
Да, и спасибо за вклад в Open Source. Это важно и нужно.
Знатная солянка, узнал много нового, спасибо. В особенности monadic pipeline — ваще огонь )
А вот такое легаси я бы переписал на "длинно и некрасиво":
Поинт в том, что если это есть в питоне, этого не надо объяснять новому человеку, а если он этого не знает, то обязан научиться. Ну и еще ваши типы и их методы могут быть сильно медленнее встроенных:
И еще я думал так тоже работать будет:
Хотя, конечно, вы об этом не писали.
Скриптик набросал чтобы избежать оверхеды с инстанцированием типографа Муравьева.
Верните старую менюшку, пожалуйста!
Парсер слопал половину спец символов в тексте. Браво.
Поделитесь ссылкой, пожалуйста, гугл много чего выдает.
Чтобы получить совместимость с 2.5-2.6 мне пришлось проставить индексы, которые я и так ставлю, в стрингах для format и в одним месте заменить dict comprehension на вызов dict, который подменяется из пакета future. Т. е. времени ушло 2 минуты. Может кому пригодится в легаси проекте.
Веб-сайт, кстати, работает на тройке, хотя может и на двойке — я не специально, видимо привычка писать совместимые приложения очень сильная.
Хабр зачем-то заменяет
foo
наhttp://foo
, я уже отписался в саппорт.Извините, что не "в тему", но что за color scheme на скриншоте? :)