Socket
Socket
Sign inDemoInstall

trim-template

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

trim-template

A templating engine inspired by Ruby's Slim template engine


Maintainers
1

Trim-Template

trim-template is an HTML templating engine for Python inspired by Ruby's Slim template engine. 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
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:

<!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

OptionValuesDescription
debugall / tagsdebug output format when calling tmpl.debug()
prettyTrue / Falseoutput pretty HTML
indentationintegerdepth 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 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 created the project in Feb 2024

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc