Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

How can you call a function that does this? html'<div id={id:int}>{content:HTML|str}</div>'.

html() is not going to be equivalent.



That is probably a much better example than any of those present in the PEP. I quite like your example. I'm not sure I'd want to write code like that, but it shows the usefulness much more clearly.


We originally had a long HTML tutorial in the PEP. It was extracted. It's here, if anyone is interested: https://pauleveritt.github.io/tagstr-site/htmlbuilder.html

Companion repo with: JupyterLite playground, Docker images, other material. https://github.com/pauleveritt/tagstr-site


For a practical example of this technique used in JS take a look at libraries like htm and lit-html: https://github.com/developit/htm


(PEP co-author here) The htm folks did a Python implementation: https://pypi.org/project/htm/

It required a janky workaround for the absence of this PEP: https://pypi.org/project/tagged/

I used these to investigate ideas about component-driven development: https://viewdom.readthedocs.io/en/latest/


How is that a Janky workaround? It's not particularly ugly or verbose, nor does it seem to violate any python tenets.


Can you explain the difference?


Doing `html('<div>Hello {name}</div>')` would be possible. I have a system that's based on it. Two issues:

- No tooling in Python will do anything with the string, so DX suffers. - Evaluating the variable requires frame evaluation, which is...problematic.

You could do `html(f'<div>Hello {name}</div>')` and get f-string coding assistance. But you'd also get immediate evaluation. There's nothing the `html` function can do with the `{name}` part.


I would probably use Jinja2.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: