java - 在带有自定义标签的android中使用 block 模板引擎

标签 java android template-engine chunk-templates

我正在尝试在 android 中使用 block 。我需要这样的东西:

假设,

以下是标签。

标签: {"world":"WORLD", "c": "Dennis Ritchie", "apple":"JOBS"

输入: HELLO {{ world }},C是{{ c }}写的,java是{{ java }}写的,hola.

输出:HELLO WORLD,C 语言由 Dennis Ritchie 编写,而 java 由 hola 编写。

简而言之

  1. 我需要一个自定义分隔符,例如 {{ string }} 即

    DEFAULT_TAG_START = "{{";

    DEFAULT_TAG_END ="}}";

  2. 如果输入包含未指定的标签,则应将其替换为空。

我尝试并坚持跟随,

public String process(String msg) {

   Chunk c = new Chunk();               
   c.append(msg);
   c.set("apple", "JOBS");
   c.set("c", "Dennis Ritchie");
   c.set("world", "WORLD");
   return c.toString();
}

最佳答案

Chunk 模板引擎目前不支持替代标记语法。此外,标签标记中的空格不会被忽略/丢弃。

不过,这里有一个可能的桥接解决方案。只要标签名称后跟冒号,未提供的 block 标签将默认为空。

因此您的输入必须更改为有效的 block 语法:

HELLO {$world:}, C is written by {$c:}, while java is written by {$java:}, hola.

如果你的模板语法不灵活(例如,你有一个预先存在的模板库,或者你真的不喜欢原生标签语法)你可以添加一个预处理步骤来转换 {{ this } }{$this:},然后将其附加到 Chunk 模板。

Chunk 库甚至提供了一个方便的函数来为您执行此操作(尽管如果输入与空格不一致,您可能需要重新实现它)。

import com.x5.template.TemplateSet;

...

Chunk c = new Chunk();

String template = TemplateSet.convertTags(msg, "{{ ", " }}", "{$", ":}");
c.append(template);

c.set("apple", "JOBS");
c.set("c", "Dennis Ritchie");
c.set("world", "WORLD");
return c.toString();

关于java - 在带有自定义标签的android中使用 block 模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24238187/

相关文章:

android - GCM 与 WordPress 博客 - Android

android - 如何使用android蓝牙接收串行数据

javascript - 在一个 js 文件中预编译所有 handlebars 模板文件时出错

shopify - 液体过滤器本身位于管链内

java - 两个连接的 JPQL 并集

java - 每天特定时间通知不通知

java - 创建新的可打包对象的正确方法

android - 不同平台的推送服务器上的谷歌云消息(GCM)