kpfleming / jinjanator

Jinja2 Command-Line Tool, reworked, again

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add support for filters (like j2cli)

ndbroadbent opened this issue · comments

Hi there, I'm trying to switch to this tool from j2cli so I can run it on Python >= 3.12.3. I just have a few filters that my templates require (for my Home Assistant config):

import re

# value = string, regex = string, replace = string
def regex_replace(value, regex, replace):
    return re.sub(regex, replace, value)

def titleize(value):
    return value.title().\
        replace('1St', '1st').replace('2Nd', '2nd').replace('3Rd', '3rd').\
        replace(' S ', "'s ").\
        replace(' Tv ', " TV ").\
        replace(' And ', ' and ').replace(' Of ', ' of ').\
        replace(' The ', ' the ').replace(' To ', ' to ').\
        replace(' With ', ' with ')

def snakecase(value):
    return re.sub(r'[^a-z0-9]+', '_', value.lower())

I previously called it like this:

j2 --filters "$CURRENT_DIR/ha_compile_jinja_filters.py" -f json "$PREPROCESSED_INPUT_FILE" $JINJA_DATA_ARG >> "${OUTPUT_FILE}" 2> "$ERROR_LOG_FILE"

Is it possible to port this to jinjinator? Thanks a lot for working on this!

Sorry I found https://github.com/kpfleming/jinjanator-plugins

Is it possible to import a plugin locally instead of releasing it as a public package?

Absolutely, all that is required is that you install the plugin package into the same Python environment where you've installed 'jinjanator', and it will be found and available to your templates. There is no need to distribute the plugin package.

There's an example 'minimal' plugin which supports all the various plugin features in https://github.com/kpfleming/jinjanator/tree/main/tests/test_plugin; hopefully you will be able to see how to strip that down to just the 'filter' portion and then put your filter functions into it.