Giter Club home page Giter Club logo

Comments (1)

bkiers avatar bkiers commented on June 20, 2024

Yeah, that is unfortunate that the specs say (all!) parameters provided to a custom tag are teated as a single string.

You could evaluate the parameter-string(s) as an expression in your custom tag. Perhaps a bit of a hack, but do-able:

import liqp.nodes.LNode;
import liqp.tags.Tag;

public class Test {

  public static void main(String[] args) {

    String source = "{% dummy a.b.c %}{{ a.b.c }}{% enddummy %}";

    String jsonVariables = "{ \"a\": { \"b\": { \"c\": 42 }}}";

    String rendered = Template
        .parse(source)
        .with(new Dummy())
        .render(jsonVariables);

    System.out.println(rendered);
  }
}

class Dummy extends Tag {

  Dummy() {
    super("dummy");
  }

  @Override
  public Object render(TemplateContext context, LNode... nodes) {

    String parameters = nodes[0].render(context).toString();

    Object evaluated = Template
        .parse(String.format("{{%s}}", parameters))
        .render(context.getVariables());

    System.out.println("parameters -> " + parameters);
    System.out.println("evaluated  -> " + evaluated);

    return null;
  }
}

will print:

parameters -> a.b.c
evaluated  -> 42

from liqp.

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.