Coder Social home page Coder Social logo

Lambdas sections? about ramhorns HOT 6 OPEN

maciejhirsz avatar maciejhirsz commented on June 6, 2024 1
Lambdas sections?

from ramhorns.

Comments (6)

grego avatar grego commented on June 6, 2024

What is your use case? It's very well possible Ramhorns indirectly supports it now.

from ramhorns.

d4h0 avatar d4h0 commented on June 6, 2024

I'd use lambda sections for example to create Markdown sections (which would need to be processed).

I'm also interested in something like this:

{{#hero}}
    <h1>test</h1>
    <p>Some other text</p>
{{/hero}}

hero then would add some other stuff (like wrapping the children content in a div that is styled in a certain way).

Ideally, lambda sections would support arguments, which would make it possible to generate more complex sections.

I'd also use this in Markdown to create sections with certain attributes (for example):

{{#my_section id="foo" class="my_class"}}
# Title
some text
{{/my_section}}

(I'd like to avoid to write HTML in my Markdown)

Normal functions (which don't exist in Ramhorns, if remember correctly) would be already useful for some things I'd like to do (but not all). For example, currently, I'm working on a template helper that optimizes images and generates HTML for responsive images.

Is anything of the above ergonomically possible with Ramhorns?

from ramhorns.

ibutra avatar ibutra commented on June 6, 2024

This would also be helpful for formatting. For example rendering a number as hexadecimal

from ramhorns.

maciejhirsz avatar maciejhirsz commented on June 6, 2024

@d4h0:

I'm also interested in something like this:

{{#hero}}
    <h1>test</h1>
    <p>Some other text</p>
{{/hero}}

hero then would add some other stuff (like wrapping the children content in a div that is styled in a certain way).

You can already do that with partials, you just have to split your padding into two partials:

{{>hero_head.html}}
    <h1>test</h1>
    <p>Some other text</p>
{{>hero_tail.html}}
{{#my_section id="foo" class="my_class"}}
# Title
some text
{{/my_section}}

This you can also do with partials, except the id and class would have to be passed as content variables. Extending mustache syntax with custom attributes is definitely out of scope for Ramhorns.

(I'd like to avoid to write HTML in my Markdown)

Why? HTML is already valid Markdown, it's widely supported, and understandable. A mustache section with custom attributes syntax is none of those things.


@ibutra:

This would also be helpful for formatting. For example rendering a number as hexadecimal

For simple formatting or wrapping content in some preprocessor, the better way to do that in Rust would be to use attribute flags (which could be used as a generic replacement for markdown support per #27), so that's definitely on the line.

from ramhorns.

stjepangolemac avatar stjepangolemac commented on June 6, 2024

Is it even possible to have something like custom filters or functions with Mustache templates? I'm looking for something along these lines https://tera.netlify.app/docs/#functions.

The use case I want to support is to give this filter/function a path to an image asset, generate jpeg/png, webp, and avif versions, and then render a <picture> tag that abstracts away picking the best version for a specific browser.

from ramhorns.

maciejhirsz avatar maciejhirsz commented on June 6, 2024

Mustache is, by design, logic-less, so no, not really. It's possible to add a similar mechanism via attributes to the Content derived struct, though in that case it of course is no longer controlled by the template.

from ramhorns.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.