{ "info": { "author": "Fedor Borshev", "author_email": "f@f213.in", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Natural Language :: Russian", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Text Processing :: Filters", "Topic :: Text Processing :: Markup :: HTML" ], "description": "# Richtypo \u2014\u00a0the only web typograph that don't make a mess out of your text\n\nRichtypo assumes that your text already has right dashes and quotes. The main concern is to add\nnon-breaking spaces to the right places.\n\nThis project is heavily inspired by Artem Sapegin's [richtypo](https://github.com/sapegin/richtypo.js/).\n\n[![PyPI version](https://badge.fury.io/py/richtypo.svg)](https://badge.fury.io/py/richtypo) [![Build Status](https://travis-ci.org/f213/richtypo.py.svg?branch=master)](https://travis-ci.org/f213/richtypo.py)\n[![codecov](https://codecov.io/gh/f213/richtypo.py/branch/master/graph/badge.svg)](https://codecov.io/gh/f213/richtypo.py)\n\n## Features\n\n- Blazing fast, aimed for render-time usage.\n- Native Russian support.\n- HTML, Markdown and Plain-text aware, does not break your markup.\n- Your text stays readable and indexable \u2014\u00a0richtypo does not produce HTML entities and other messy stuff.\n- Easy integration with Jinja2, Django templates and any other language.\n- Well tested Python3 and Python2 support. For py2 only unicode input is accepted.\n- Easily extendable through smallest possible regular expressions defined in YAML with in-place specifications.\n\n## Installation\n\n```sh\npip install richtypo\n```\n\n## Usage\n```python\nfrom richtypo import Richtypo\n\n\nr = Richtypo(ruleset='ru-lite')\n\nwell_done = r.richtypo(text)\n```\n\n### Jinja2 filter\n\n```python\nfrom richtypo.filter import filter\n\nenv = jinja2.Environment(\n filters={\n 'richtypo': filter\n }\n)\n```\n\nTemplate:\n\n```html\n{{ text | richtypo('ru-lite') }}\n```\n\n### Django filter\n\n```python\n# your_app/templatetags/richtypo.py\n\nfrom django import template\nfrom django.template.defaultfilters import stringfilter\nfrom django.utils.safestring import mark_safe\nfrom richtypo.filter import filter as typograph\n\nregister = template.Library()\n\n\n@register.filter\n@stringfilter\ndef richtypo(value, ruleset='generic'):\n return mark_safe(typograph(value, ruleset))\n```\n\nTemplate:\n```html\n{% load richtypo %}\n\n{{ object.text | richtypo:\"ru-lite\"}}\n```\n\n## License\n\nMIT\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/f213/richtypo.py", "keywords": "typography,spaces,nbsp,russian,markdown", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "richtypo", "package_url": "https://pypi.org/project/richtypo/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/richtypo/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/f213/richtypo.py" }, "release_url": "https://pypi.org/project/richtypo/0.2.3/", "requires_dist": null, "requires_python": null, "summary": "The only web typograph that don't make a mess out of your text. Russian and English supported.", "version": "0.2.3" }, "last_serial": 2671296, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "d5869be291ea6875ed85c6e3e3a753e3", "sha256": "c5d9c7f7ee66a8f6f6f148abfcd5e820361039c0f9a0acac5821a7c0b5a4a335" }, "downloads": -1, "filename": "richtypo-0.1.tar.gz", "has_sig": false, "md5_digest": "d5869be291ea6875ed85c6e3e3a753e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10359, "upload_time": "2017-01-12T16:51:18", "url": "https://files.pythonhosted.org/packages/f6/da/14db2b44ad8e51bb9e37a997c1c3b1b2af0156678435597384c8d1b99232/richtypo-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "90fff9b68a43fd25977ac9e5cbe4691b", "sha256": "a258d64cdaa60e7bc00679315fbf9676a7a6c9c71abf3fca25c58b179ab0987a" }, "downloads": -1, "filename": "richtypo-0.2.tar.gz", "has_sig": false, "md5_digest": "90fff9b68a43fd25977ac9e5cbe4691b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10856, "upload_time": "2017-01-16T15:11:15", "url": "https://files.pythonhosted.org/packages/c8/d3/c67884f04362413a656fcf90c112ac358468f893c13d0ddd68b74c63fb5e/richtypo-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8c6275726b09a9b06b79beccb6001592", "sha256": "c4c3752923ee475c2add4b52f00b14b515f230d695f4d2695cf3affb959e11e6" }, "downloads": -1, "filename": "richtypo-0.2.1.tar.gz", "has_sig": false, "md5_digest": "8c6275726b09a9b06b79beccb6001592", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11262, "upload_time": "2017-01-18T21:53:38", "url": "https://files.pythonhosted.org/packages/28/be/f4db3220b0090aefd422ce7758c3e6538d79642e122f91f8d9f2b9d0bf58/richtypo-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ed320f522cfd583be5ae6751c0ce4d1e", "sha256": "aca5f85a7bebe4488ea08d05d8d6a5a336672917b8766202310c51510ae89ffd" }, "downloads": -1, "filename": "richtypo-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ed320f522cfd583be5ae6751c0ce4d1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11755, "upload_time": "2017-01-22T15:26:18", "url": "https://files.pythonhosted.org/packages/b6/66/c26c4478cf6c2b1a6d0fed649c427cf49372423fda40dc4b24f119efd7f8/richtypo-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "9db3204898accbfab0f3ebb40f98e296", "sha256": "1556e1b22b8f74b926b322cdf46b9bf92a49f0141cfc59c161f9ae4c102dee9c" }, "downloads": -1, "filename": "richtypo-0.2.3.tar.gz", "has_sig": false, "md5_digest": "9db3204898accbfab0f3ebb40f98e296", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11847, "upload_time": "2017-02-27T17:15:12", "url": "https://files.pythonhosted.org/packages/0b/d6/9c8a278486f900ffbf6c088dc47e4449c0cd32a91fc0c72f16e232a6520c/richtypo-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9db3204898accbfab0f3ebb40f98e296", "sha256": "1556e1b22b8f74b926b322cdf46b9bf92a49f0141cfc59c161f9ae4c102dee9c" }, "downloads": -1, "filename": "richtypo-0.2.3.tar.gz", "has_sig": false, "md5_digest": "9db3204898accbfab0f3ebb40f98e296", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11847, "upload_time": "2017-02-27T17:15:12", "url": "https://files.pythonhosted.org/packages/0b/d6/9c8a278486f900ffbf6c088dc47e4449c0cd32a91fc0c72f16e232a6520c/richtypo-0.2.3.tar.gz" } ] }