{ "info": { "author": "Vd", "author_email": "vd@vd2.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: Localization", "Topic :: Software Development :: Pre-processors", "Topic :: Software Development :: User Interfaces", "Topic :: Text Processing :: Filters", "Topic :: Text Processing :: Linguistic", "Topic :: Text Processing :: Markup", "Topic :: Text Processing :: Markup :: HTML", "Topic :: Utilities" ], "description": "# j2tools\nUseful tools for jinja2\n\n## Install\n\n```bash\npip install j2tools\n```\n\n## Testing\n\n_coming soon_\n\n## YamlLoader\n\nYamlLoader is a template loader for jinja2 template framework.\nIt loads templates from yaml-files. Useful when you need to\nstore many small templates in one file.\n\n#### Example:\n\n```yaml\n# templates.yaml\nhome:\n welcome: |\n Welcome, {{username}}!\n goodbye: |\n Goodbye, {{username}}!\n```\n\n```python\n# main.py\nfrom jinja2 import Environment\nfrom j2tools import YamlLoader\n\njinja = Environment(loader=YamlLoader('templates.yaml'))\n\nusername = 'John Doe'\ntemplate1 = jinja.get_template('home/welcome')\nrendered1 = template1.render(username=username)\nprint(rendered1) # Welcome, John Doe!\n\ntemplate2 = jinja.get_template('home/goodbye')\nrendered2 = template2.render(username=username)\nprint(rendered2) # Goodbye, John Doe!\n``` \n\n## t_factory\n\nt_facotory is a small tool which helps prefixed templates easily.\n\nSee examples below.\n\n#### Example:\n\n```yaml\n# templates_en.yaml\nhome:\n welcome: |\n Welcome, {{username}}!\n goodbye: |\n Goodbye, {{username}}!\n```\n\n```yaml\n# templates_ru.yaml\nhome:\n welcome: |\n \u041f\u0440\u0438\u0432\u0435\u0442, {{username}}!\n goodbye: |\n \u041f\u043e\u043a\u0430, {{username}}!\n```\n\n```python\n# main.py\nfrom jinja2 import Environment, PrefixLoader\nfrom j2tools import YamlLoader\nfrom j2tools import t_factory\n\nloader = PrefixLoader({\n 'en': YamlLoader('templates_en.yaml'),\n 'ru': YamlLoader('templates_ru.yaml'),})\n\njinja = Environment(loader=loader)\nget_t = t_factory(jinja)\n\ndef print_templates(t, username):\n rendered1 = t('home/welcome', username=username)\n print(rendered1) \n\n rendered2 = t('home/goodbye', username=username)\n print(rendered2) \n\nprint_templates(get_t('en'), 'John Doe')\n# Expected output:\n# Welcome, John Doe!\n# Goodbye, John Doe!\n\nprint_templates(get_t('ru'), '\u0418\u0432\u0430\u043d')\n# Expected output:\n# \u041f\u0440\u0438\u0432\u0435\u0442, \u0418\u0432\u0430\u043d!\n# \u041f\u043e\u043a\u0430, \u0418\u0432\u0430\u043d!\n``` \n\n## plural\n\n`plural` is jinja2 filter function for easy text pluralization.\n\n#### Example:\n\n```yaml\n# templates.yaml\ninfo:\n users: |\n System have {{users}} active {{users|plural('en','user','users')}}.\n```\n\n```python\n# main.py\nfrom jinja2 import Environment\nfrom j2tools import YamlLoader\nfrom j2tools import plural\n\njinja = Environment(loader=YamlLoader('templates.yaml'))\njinja.filters['plural'] = plural\n\ntemplate1 = jinja.get_template('info/users')\nrendered1 = template1.render(users=1)\nprint(rendered1) # System have 1 active user.\nrendered2 = template1.render(users=23)\nprint(rendered2) # System have 23 active users.\n``` \n\n## elapsed and remaining\n\nCalculates and formats elapsed time to string like this:\n`25d 4h 3m 35s`. Can be used as jinja2 filter.\n\n#### Example:\n\n```yaml\n# templates.yaml\ninfo:\n uptime: |\n System uptime: {{started|elapsed(show_seconds=True)}}.\n newyear: |\n To next year remaining {{newyear|remaining}}!\n```\n\n```python\n# main.py\nfrom jinja2 import Environment\nfrom j2tools import YamlLoader\nfrom j2tools import elapsed, remaining\nimport datetime\n\njinja = Environment(loader=YamlLoader('templates.yaml'))\njinja.filters['elapsed'] = elapsed\njinja.filters['remaining'] = remaining\n\nstarted = datetime.datetime.now()\nnewyear = datetime.datetime(2020, 1, 1, 0, 0, 0)\n\nusername = 'John Doe'\ntemplate1 = jinja.get_template('info/uptime')\nrendered1 = template1.render(started=started)\nprint(rendered1) # System uptime: 25d 4h 3m 35s.\n\ntemplate2 = jinja.get_template('info/newyear')\nrendered2 = template2.render(newyear=newyear)\nprint(rendered2) # To next year remaining 295d 10h 13m 10s!\n``` \n\n## uchar\n\nSimple jinja2 function to insert unicode characters\nby unicode names. Very useful for inserting emoji.\n\n#### Example:\n\n```yaml\n# templates.yaml\nhome:\n welcome: |\n Welcome, {{username}} {{UN('THUMBS UP SIGN')}}!\n```\n\n```python\n# main.py\nfrom jinja2 import Environment\nfrom j2tools import YamlLoader\nfrom j2tools import uchar\n\njinja = Environment(loader=YamlLoader('templates.yaml'))\njinja.globals['UN'] = uchar\n\ntemplate1 = jinja.get_template('info/users')\nrendered1 = template1.render(username='John Doe')\nprint(rendered1) # Welcome, John Doe \ud83d\udc4d!\n``` \n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vd2org/j2tools", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "j2tools", "package_url": "https://pypi.org/project/j2tools/", "platform": "", "project_url": "https://pypi.org/project/j2tools/", "project_urls": { "Homepage": "https://github.com/vd2org/j2tools" }, "release_url": "https://pypi.org/project/j2tools/2019.3/", "requires_dist": [ "ruamel.yaml (>=0.15.89)", "jinja2 (>=2.10)" ], "requires_python": "", "summary": "Useful tools for jinja2 template processor.", "version": "2019.3" }, "last_serial": 4926956, "releases": { "2019.3": [ { "comment_text": "", "digests": { "md5": "f8dff26fd3ba195fec1a9ea2405c0871", "sha256": "17cac91a547d4975dc6dace5a39a9951beca0f643b0843a768ebafd86f77637f" }, "downloads": -1, "filename": "j2tools-2019.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f8dff26fd3ba195fec1a9ea2405c0871", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7660, "upload_time": "2019-03-11T20:41:00", "url": "https://files.pythonhosted.org/packages/3f/08/8596f0b5942f4c012d49f885cf0ad86333445e994c0d1f073ad38517d925/j2tools-2019.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7351e71599250c4ff135a0f1cb71a836", "sha256": "90bbe226e886aa50c8756cb3c5e27eb078a904e19bb691f7caa6bda21d893c1a" }, "downloads": -1, "filename": "j2tools-2019.3.tar.gz", "has_sig": false, "md5_digest": "7351e71599250c4ff135a0f1cb71a836", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5491, "upload_time": "2019-03-11T20:41:03", "url": "https://files.pythonhosted.org/packages/b5/2b/1c7320ff415c850add670c98f481ba8b704cd79b4bf3c680cb50e26aed35/j2tools-2019.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f8dff26fd3ba195fec1a9ea2405c0871", "sha256": "17cac91a547d4975dc6dace5a39a9951beca0f643b0843a768ebafd86f77637f" }, "downloads": -1, "filename": "j2tools-2019.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f8dff26fd3ba195fec1a9ea2405c0871", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7660, "upload_time": "2019-03-11T20:41:00", "url": "https://files.pythonhosted.org/packages/3f/08/8596f0b5942f4c012d49f885cf0ad86333445e994c0d1f073ad38517d925/j2tools-2019.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7351e71599250c4ff135a0f1cb71a836", "sha256": "90bbe226e886aa50c8756cb3c5e27eb078a904e19bb691f7caa6bda21d893c1a" }, "downloads": -1, "filename": "j2tools-2019.3.tar.gz", "has_sig": false, "md5_digest": "7351e71599250c4ff135a0f1cb71a836", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5491, "upload_time": "2019-03-11T20:41:03", "url": "https://files.pythonhosted.org/packages/b5/2b/1c7320ff415c850add670c98f481ba8b704cd79b4bf3c680cb50e26aed35/j2tools-2019.3.tar.gz" } ] }