From 3825f3932e2b85825681dc83904384aa42553006 Mon Sep 17 00:00:00 2001 From: L3D Date: Wed, 8 Mar 2023 02:29:24 +0100 Subject: [PATCH] update filters --- lektor_render_template.py | 131 ++++++++++++++++++++++++++++++-------- 1 file changed, 106 insertions(+), 25 deletions(-) diff --git a/lektor_render_template.py b/lektor_render_template.py index fc56d5c..0483b54 100644 --- a/lektor_render_template.py +++ b/lektor_render_template.py @@ -4,9 +4,48 @@ from lektor.pluginsystem import Plugin from lektor.project import Project from lektor.context import get_ctx +# pylint: disable=too-many-arguments +def render_template(env, pad, filepath, inputname, inputvalue, color, tiny): + """ Render my custom Jinja2 Template """ + + # Prepare Variables + rendered_title = f"{inputvalue}: {inputname}" + if not tiny: + rendered_sizes = f"width=\"{int(132.5+(int(len(inputname)/2)*10))}\" height=\"20\"" + orange_box_width = str(int(5+len(inputname)*5)) + orange_position = str(int(50+(len(inputname)*5))) + latest_element_x = str(int(1+(int(len(inputname)/2)*10)-1)-0.007) + accent_02_multiplier = str(1+int(len(inputname)/2)) + name_position = str(105) + else: + rendered_sizes = f"width=\"{int(102.5+(int(len(inputname)/2)*10))}\" height=\"20\"" + orange_box_width = str(int(5+len(inputname)*5)+25) + orange_position = str(int(50+(len(inputname)*5))) + latest_element_x = str(int(1+(int(len(inputname)/2)*10)-1)-30.007) + accent_02_multiplier = str(1+int(len(inputname)/2)-3) + name_position = str(75) + + + # Create File + with open(f"assets/{filepath}", 'w', encoding='UTF-8') as outputfile: + outputfile.write(env.render_template( + 'galaxy.svg', pad=pad, this={ + 'title': str(rendered_title), + 'name': str(inputname), + 'name_position': str(name_position), + "sizes": str(rendered_sizes), + "orange_box_width": str(orange_box_width), + "orange_position": str(orange_position), + "accent03_x": str(latest_element_x), + "bg_orange_x": str(latest_element_x), + "accent_02_multiplier": str(accent_02_multiplier), + "inputvalue": str(inputvalue), + "color_orange": str(color) + })) + # pylint: disable=unused-argument -def generate_from_template(inputname, **options): - """ Generate a File based on a Jinja2 Templated """ +def generate_galaxy_svg(inputname, **options): + """ Generate a File based on a Jinja2 Templated that will show the ansible galaxy name """ # Setup Lektor Env project = Project.discover() env = project.make_env() @@ -18,35 +57,77 @@ def generate_from_template(inputname, **options): else: pad = env.new_pad() - # Prepare Variables - rendered_title = f"Ansible Role: {inputname}" - rendered_sizes = f"width=\"{int(132.5+(int(len(inputname)/2)*10))}\" height=\"20\"" - orange_box_width = str(int(5+len(inputname)*6)) - orange_position = str(int(50+(len(inputname)*6))) - latest_element_x = str(int(1+(int(len(inputname)/2)*10)-1)-0.007) - accent_02_multiplier = str(1+int(len(inputname)/2)) + # Create File + filepath = f"/svg/{inputname}.svg" + color = '#FF6600' + render_template(env, pad, filepath, inputname, 'ansible-galaxy', color, False) + return filepath + +# pylint: disable=unused-argument +def generate_maintainance_svg(inputdict, **options): + """ Generate a File based on a Jinja2 Templated that will show the maintainance state """ + # Setup Lektor Env + project = Project.discover() + env = project.make_env() + + # Setup CTX + ctx = get_ctx() + if ctx is not None: + pad = ctx.pad + else: + pad = env.new_pad() + + # Sort Input + inputname = str(dict(inputdict)['name']) + inputstate = str(dict(inputdict)['state']) # Create File - file = f"assets/svg/{inputname}.svg" - with open(file, 'w', encoding='UTF-8') as outputfile: - outputfile.write(env.render_template( - 'galaxy.svg', pad=pad, this={ - 'title': rendered_title, - 'name': inputname, - "sizes": rendered_sizes, - "orange_box_width": orange_box_width, - "orange_position": orange_position, - "accent03_x": latest_element_x, - "bg_orange_x": latest_element_x, - "accent_02_multiplier": accent_02_multiplier})) - returnvalue = f"/svg/{inputname}.svg" - return returnvalue + filepath = f"/svg/{inputname}_maintainance.svg" + match inputstate: + case 'well': + color = '#cd02fa' + case 'true': + color = '#8a00a6' + case 'poor': + color = '#5d0070' + case 'false': + color = '#220029' + case _: + color = '#000000' + render_template(env, pad, filepath, inputstate, 'maintainance', color, False) + return filepath + +# pylint: disable=unused-argument +def generate_license_svg(inputdict, **options): + """ Generate a File based on a Jinja2 Templated that will show the used License """ + # Setup Lektor Env + project = Project.discover() + env = project.make_env() + + # Setup CTX + ctx = get_ctx() + if ctx is not None: + pad = ctx.pad + else: + pad = env.new_pad() + + # Sort Input + inputname = str(dict(inputdict)['name']) + inputstate = str(dict(inputdict)['state']) + + # Create File + filepath = f"/svg/{inputname}_license.svg" + color = '#064ccf' + render_template(env, pad, filepath, inputstate, 'license', color, True) + return filepath + class RenderTemplatePlugin(Plugin): """ Create Plugin and listen to Filter Keyword """ name = 'lektor_render_template' description = 'Lektor plugin to generate files form filters.' - def on_setup_env(self, **extra): """ Create Listener for Filter """ - self.env.jinja_env.filters['svg'] = generate_from_template + self.env.jinja_env.filters['galaxy'] = generate_galaxy_svg + self.env.jinja_env.filters['maintainance'] = generate_maintainance_svg + self.env.jinja_env.filters['license'] = generate_license_svg