Comments (1)
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)
- Included template must be parsed/rendered with the same parse/rendering settins
- Future of @deprecated methods HOT 7
- How to convert to a JSON String HOT 4
- Upgrade ANTLR HOT 11
- Template errors not being stored when using liquid for loops HOT 2
- Support for Liquid's Layouts HOT 3
- Integer and Float Comparisons After Using Times Filter HOT 15
- How to modify default renderer HOT 1
- Shaded jar should exclude non-ANTLR dependencies HOT 2
- Support for `liquid` tag HOT 1
- expression errors ignored in _some_ cases HOT 1
- Template parse is deprecated HOT 3
- Issues with the new release. HOT 2
- != working as == HOT 2
- Is Template (render) thread safe? HOT 2
- when text contains UNICODE characters the parsing fails HOT 1
- Parser error "Invalid Tag: 'liquid'" HOT 2
- Support Instant datetime pattern
- Support for Instant, LocalDateTime date pattern HOT 1
- BlockNode Map render issue: String.valueOf(Map<?,?>) returns '=' instead of ':' as delimiter HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from liqp.