trim-template


Nametrim-template JSON
Version 0.1.3 PyPI version JSON
download
home_pagehttps://github.com/opensourceme/trim-template
SummaryA templating engine inspired by Ruby's Slim template engine
upload_time2024-06-24 08:32:03
maintainerNone
docs_urlNone
authorDavid Kelly
requires_python<4.0,>=3.12
licenseMIT
keywords template trim engine html
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Trim-Template

`trim-template` is an HTML templating engine for Python inspired by [Ruby's Slim template engine](https://github.com/slim-template/slim).
The objective behind Trim is to simplify template syntax to a minimal format that, like Python itself,
makes use of indentation to indicate how blocks of code should be interpreted.

#### Installation

`pip install trim-template`

#### Example Template


```slim
doctype strict

html
  head
    title My HTML title

    stylesheet src='/some.css'

    javascript:
      console.log('embedded JS inside the template');

  body
    css:
      .alert { color: 'red'; }

    .menu-bar
      - if user.logged_in
        img src={user.profile.image_path}
      - else
        a#login-button.btn.btn-primary href={login_path} Login

    .alert
      h1 {greeting}

    p.exciting This is the first ever Python Trim-Template

    h2#member-list Members

    form
      input type='checkbox' disabled=True checked=True

    p
      ul
        - for user in users
          li
            / code comment - show the user's names. This line will not render.
            span {user.first_name} {user.last_name}
    /! render the footer
    #footer Thanks for using Trim!
```

#### Rendered HTML

Trim-Template will render the above template into HTML, as below:

```html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
    <head>
        <title>My HTML title</title>

        <stylesheet src="/some.css"></stylesheet>

        <script type='javascript'>
            console.log('embedded JS inside the template');
        </script>
    </head>

    <body>
        <style>
          .alert { color: 'red'; }
        </style>

        <div class="menu-bar">
            <a class="btn btn-primary" href="/auth/login" id="login-button"/>Login</a>
        </div>

        <div class="alert">
            <h1>Hello World!</h1>
        </div>

        <p class="exciting">
            This is the first ever Python Trim-Template
        </p>

        <h2 id='member-list'>Members</h2>

        <form>
          <input type="checkbox" disabled="disabled" checked="checked"/>
        </form>

        <p>
            <ul>
                <li>
                    <span>Stephen Colber</span>
                </li>
                <li>
                    <span>Bob Marley</span>
                </li>
                <li>
                    <span>Charlie Chaplin</span>
                </li>
            </ul>
        </p>
        <!-- render the footer -->
        <div id='footer'>Thanks for using Trim!</div>
    </body>
</html>
```


### Using Trim


```
from trim_template.trim import TrimTemplate

tmpl = TrimTemplate("file.html.trim")
tmpl.set('login_path', '/auth/login')
tmpl.set('greeting', 'Hello World!')
tmpl.set('users', users)

output = tmpl.render()
print(output)
```

Where `file.html.trim` (also in the examples dir) contains the following.

## Options

| Option      | Values         | Description                                       |
|-------------|----------------|---------------------------------------------------|
| debug       | `all` / `tags` | debug output format when calling `tmpl.debug()`   |
| pretty      | True / False   | output pretty HTML                                |
| indentation | integer        | depth of indentation for debugging output         |

## Initialization parameters

`TrimTemplate` can be initialized with multiple parameters, the full set shown below:

```
tmpl = TrimTemplate('file.html.trim', pretty=True, debug='all', indent=4, vars={greeting: 'hello'})
```

### Syntax

See the [USAGE](USAGE.md) markdown file for details on trim syntax and other usage.

### Contributing

Contributions are welcome.  Fork the project and create a pull request.

### Authors

[David Kelly](https://github.com/opensourceame) created the project in Feb 2024


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/opensourceme/trim-template",
    "name": "trim-template",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.12",
    "maintainer_email": null,
    "keywords": "template, trim, engine, html",
    "author": "David Kelly",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/6c/c5/92c90c617a459cf575c08f9c8fbc42160a9052d2926365a6ef0fcdf1fe87/trim_template-0.1.3.tar.gz",
    "platform": null,
    "description": "# Trim-Template\n\n`trim-template` is an HTML templating engine for Python inspired by [Ruby's Slim template engine](https://github.com/slim-template/slim).\nThe objective behind Trim is to simplify template syntax to a minimal format that, like Python itself,\nmakes use of indentation to indicate how blocks of code should be interpreted.\n\n#### Installation\n\n`pip install trim-template`\n\n#### Example Template\n\n\n```slim\ndoctype strict\n\nhtml\n  head\n    title My HTML title\n\n    stylesheet src='/some.css'\n\n    javascript:\n      console.log('embedded JS inside the template');\n\n  body\n    css:\n      .alert { color: 'red'; }\n\n    .menu-bar\n      - if user.logged_in\n        img src={user.profile.image_path}\n      - else\n        a#login-button.btn.btn-primary href={login_path} Login\n\n    .alert\n      h1 {greeting}\n\n    p.exciting This is the first ever Python Trim-Template\n\n    h2#member-list Members\n\n    form\n      input type='checkbox' disabled=True checked=True\n\n    p\n      ul\n        - for user in users\n          li\n            / code comment - show the user's names. This line will not render.\n            span {user.first_name} {user.last_name}\n    /! render the footer\n    #footer Thanks for using Trim!\n```\n\n#### Rendered HTML\n\nTrim-Template will render the above template into HTML, as below:\n\n```html\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html>\n    <head>\n        <title>My HTML title</title>\n\n        <stylesheet src=\"/some.css\"></stylesheet>\n\n        <script type='javascript'>\n            console.log('embedded JS inside the template');\n        </script>\n    </head>\n\n    <body>\n        <style>\n          .alert { color: 'red'; }\n        </style>\n\n        <div class=\"menu-bar\">\n            <a class=\"btn btn-primary\" href=\"/auth/login\" id=\"login-button\"/>Login</a>\n        </div>\n\n        <div class=\"alert\">\n            <h1>Hello World!</h1>\n        </div>\n\n        <p class=\"exciting\">\n            This is the first ever Python Trim-Template\n        </p>\n\n        <h2 id='member-list'>Members</h2>\n\n        <form>\n          <input type=\"checkbox\" disabled=\"disabled\" checked=\"checked\"/>\n        </form>\n\n        <p>\n            <ul>\n                <li>\n                    <span>Stephen Colber</span>\n                </li>\n                <li>\n                    <span>Bob Marley</span>\n                </li>\n                <li>\n                    <span>Charlie Chaplin</span>\n                </li>\n            </ul>\n        </p>\n        <!-- render the footer -->\n        <div id='footer'>Thanks for using Trim!</div>\n    </body>\n</html>\n```\n\n\n### Using Trim\n\n\n```\nfrom trim_template.trim import TrimTemplate\n\ntmpl = TrimTemplate(\"file.html.trim\")\ntmpl.set('login_path', '/auth/login')\ntmpl.set('greeting', 'Hello World!')\ntmpl.set('users', users)\n\noutput = tmpl.render()\nprint(output)\n```\n\nWhere `file.html.trim` (also in the examples dir) contains the following.\n\n## Options\n\n| Option      | Values         | Description                                       |\n|-------------|----------------|---------------------------------------------------|\n| debug       | `all` / `tags` | debug output format when calling `tmpl.debug()`   |\n| pretty      | True / False   | output pretty HTML                                |\n| indentation | integer        | depth of indentation for debugging output         |\n\n## Initialization parameters\n\n`TrimTemplate` can be initialized with multiple parameters, the full set shown below:\n\n```\ntmpl = TrimTemplate('file.html.trim', pretty=True, debug='all', indent=4, vars={greeting: 'hello'})\n```\n\n### Syntax\n\nSee the [USAGE](USAGE.md) markdown file for details on trim syntax and other usage.\n\n### Contributing\n\nContributions are welcome.  Fork the project and create a pull request.\n\n### Authors\n\n[David Kelly](https://github.com/opensourceame) created the project in Feb 2024\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A templating engine inspired by Ruby's Slim template engine",
    "version": "0.1.3",
    "project_urls": {
        "Homepage": "https://github.com/opensourceme/trim-template",
        "Repository": "https://github.com/opensourceme/trim-template"
    },
    "split_keywords": [
        "template",
        " trim",
        " engine",
        " html"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "de08f41b10c9943c83b18f70a57f764eb05630b171e9412a80d25a31185f6dbc",
                "md5": "5f19bbf15cd3f6de5f10fe1040f1911d",
                "sha256": "37812a0f07753f6ff593ac17c00e692e3e959ac5276d4566e07c8af67f1d098f"
            },
            "downloads": -1,
            "filename": "trim_template-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5f19bbf15cd3f6de5f10fe1040f1911d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.12",
            "size": 7454,
            "upload_time": "2024-06-24T08:32:01",
            "upload_time_iso_8601": "2024-06-24T08:32:01.898624Z",
            "url": "https://files.pythonhosted.org/packages/de/08/f41b10c9943c83b18f70a57f764eb05630b171e9412a80d25a31185f6dbc/trim_template-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6cc592c90c617a459cf575c08f9c8fbc42160a9052d2926365a6ef0fcdf1fe87",
                "md5": "f4c921483c0b69faf20c3f36186d43dc",
                "sha256": "935ffab9ff2f3f3d36d5b3c8ed7074edcb1edd91faf826af3889d16bff5a37e8"
            },
            "downloads": -1,
            "filename": "trim_template-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "f4c921483c0b69faf20c3f36186d43dc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.12",
            "size": 6274,
            "upload_time": "2024-06-24T08:32:03",
            "upload_time_iso_8601": "2024-06-24T08:32:03.821207Z",
            "url": "https://files.pythonhosted.org/packages/6c/c5/92c90c617a459cf575c08f9c8fbc42160a9052d2926365a6ef0fcdf1fe87/trim_template-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-24 08:32:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "opensourceme",
    "github_project": "trim-template",
    "github_not_found": true,
    "lcname": "trim-template"
}
        
Elapsed time: 0.27917s