EMT (Evgeny Muravjev Typograph) for Python 3

This commit is contained in:
Sergei Erjemin 2022-12-19 13:45:41 +03:00
commit 516d3b3174
3 changed files with 3245 additions and 0 deletions

3199
EMT.py Normal file

File diff suppressed because it is too large Load Diff

14
README.md Normal file
View File

@ -0,0 +1,14 @@
# mdash Typograph for Python 3.5 (and above)
It is EMT (Evgeny Muravjev Typograph) prepared for Python 3.5 (and above). Original EMT is written in PHP and can be found here: [github.com/emuravjev/mdash](https://github.com/emuravjev/mdash) and
[mdash.ru](http://mdash.ru).
----
### Note
Be aware that when combined with wysiwyg-editor (like ckeditor), EMT can create HTML-code artifacts and even cause typographer to crash. Be careful and get ready to add pre- and post-processing crutches.
### TODO
* Protect text in `<pre>`, `<code>`, `<kbd>`, `<script>` and `<style>` tags.
* Long word wrap (Hyphenation `&shy;`).

32
run.py Normal file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import sys
import re
import base64
import types
# from EMT import EMTypograph
import EMT
import json
def main():
emt = EMT.EMTypograph()
txt = '"Эдиториум.ру" - сайт, созданный по материалам сборника "О редактировании и редакторах" Аркадия Эммануиловича Мильчина, который с 1944 года коллекционировал выдержки из статей, рассказов, фельетонов, пародий, писем и книг, где так или иначе затрагивается тема редакторской работы. Эта коллекция легла в основу обширной антологии, представляющей историю и природу редактирования в первоисточниках. \n\n'\
'Кажется, вам просто нужно добавить отступ к байтам перед декодированием. На этот вопрос есть много других ответов, но я хочу указать, что (по крайней мере, в Python 3.x) base64.b64decodeлюбые дополнительные отступы будут обрезаны, если их достаточно.\n\n\n\n\n' \
'Итак, что-то вроде: <kbd>b\'abc=\' </kbd> работает так же хорошо, как b\'abc==\'(как b\'abc=====\').\n\n' \
'Это означает 100000 руб., что вы можете просто добавить максимальное количество символов заполнения, ' \
'которое вам когда-либо понадобится, а это три ( b\'===\'), и base64 обрежет все ненужные.\n\n' \
'Это позволяет вам писать:\n' \
'<code>base64.b64decode(s + b\'===\')\n' \
'base64.b64decode(s + b\'=\' * (-len(s) % 4))\'\n</code>\n'
emt.set_text(txt)
# emt.set_tag_layout(layout=EMT.LAYOUT_CLASS)
# rules = {'Text.paragraphs': 'on'}
result = emt.apply()
print(result)
print(emt.get_all_safe_blocks())
if __name__ == "__main__":
main()