问题标签 [stringtemplate-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
597 浏览

stringtemplate-4 - StringTemplate 中的填充/对齐

问:在 StringTemplate v4 中,我在属性的左侧或右侧添加空格填充(以实现固定宽度)的正确方法是什么?


我开始使用 StringTemplate 从 Java 代码生成一些脚本文本。在我的输出文本中有些情况我想对属性进行空格填充,以便它们垂直排列。这样做时,我想控制填充是在左侧还是右侧。

我观察到 NumberRenderer 使用 Formatter.format() 并允许“printf-style”格式字符串。

我想用字符串做同样的事情......例如“%-30s”

但是,我很困惑地看到 StringRenderer 没有使用相同的 Formatter.format() 代码。

我也没有在 StringTemplate4 JavaDoc 中看到任何其他类型的与字符串相关的 AttributeRenderer。

这让我想知道是否应该使用另一种机制来实现这一点。

问:在 StringTemplate v4 中,我在属性的左侧或右侧添加空格填充(以实现固定宽度)的正确方法是什么?

谢谢,迈克尔

0 投票
2 回答
2010 浏览

java - StringTemplate 为给定模板定义的属性列表

我开始使用 StringTemplate 4,我正在尝试从存储在数据库中的简单字符串创建模板。我使用这样的东西:

现在,如果我定义全部或少于为模板定义的属性,一切正常someTemplateName。现在,如果我尝试添加一个不存在的属性,则会出现以下异常:

这是有道理的。但是,我似乎无法事先知道为 template 定义了哪些属性someTemplateName。我期待找到类似的东西:

但是没有这样的方法。我对么?有没有办法解决?

0 投票
1 回答
5532 浏览

antlr4 - Translation of PL/SQL code to Java using Antlr 4 and stringtemplate 4

I am trying to construct a translator that could convert PL/SQL code to Java using Antlr 4 and StringTemplate 4. I have the grammar of PL/SQl and have already build a parser for PL/SQL but i have no idea how to approach the problem further. I found many articles of language translation using antlr and stringtemplate but they all use ANTLR 3 or ANTLR 2 . So is there any difference when using Antlr 4 to translate along with Stringtemplate as the parser for PL/SQL using Antlr 4 had some differences than Antlr3

I am completely new to Programming language translation and don't know if there is any better way to approach the problem.

0 投票
1 回答
99 浏览

stringtemplate-4 - 是否/可以 StringTemplate 支持 Iterable

我想遍历存储在任意数据结构中的数据集合。我唯一的接口是Iterable。StringTemplate 可以做到这一点吗?

0 投票
2 回答
386 浏览

c# - StringTemplate C# 覆盖数组行为

我使用 StringTemplate4 允许用户将 HTML 模板和页面 ID 传递给 Web 服务,然后获取解析结果。字段的名称和数量是动态的,这意味着虽然某些页面可能只为给定字段返回一个值,但其他页面可能会返回许多值。一个例子是页面 URL。每个页面可以有多个 URL,但第一个应该被视为默认 URL(规范 URL)。我希望我的用户能够添加$url$到模板中,它只是吐出第一个 URL。我知道 StringTemplate 不提供数组索引,所以我不能只说$url[0]$,所以我采取了不同的方法。这是我的代码:

因此,正如您通过查看我的模板所看到的那样,我希望它$m.url$会呈现“/home”而不是“/home/index/default”,就像它目前正在做的那样。我试图通过覆盖 TemplateValue 类上的 ToString() 方法来实现这一点,但无济于事。我试图查看 StringTemplate 的源代码,但找不到一种方法来更改对象在呈现时返回的值。谁能指出我正确的方向?

0 投票
2 回答
47 浏览

antlr - 从 ANTLR parseTree 代码生成中 OutputModelFactory、@ModelElement 等的外部使用

我正在研究如何最好地使用 StringTemplate 为使用 ANTLR 作为解析器的编译器生成代码。我决定从 ANTLR 资源中寻找有关如何利用 StringTemplate 的灵感。由于此代码是 ANTLR 工具的一部分,而不是运行时,因此在我自己的代码中使用它是否被视为“公平游戏”?(我意识到这需要在运行时使用“完整”jar,或者同时使用运行时 jar 和工具 jar)。

或者,我是否应该将其视为“禁区”并以它为模型实施我自己的解决方案?

0 投票
1 回答
99 浏览

stringtemplate-4 - stringtemplate ModelAdaptor 可以回退到默认的 stringtemplate 属性评估吗?

看来,如果我为我提供给 stringtemplate 的类提供 ModelAdaptor,那么我必须响应我希望在模板中访问的每个属性。我希望能够为不遵循正常命名约定的属性实现 getProperty,但让默认行为处理“正常”属性。是否有一个我可以子类化以获得正常行为的类(也许只是调用 super() 当它不是我已经实现的属性,或者我可以调用的方法来获取默认的字符串模板逻辑)?

也就是说,我只想处理适配器中的特殊属性。

0 投票
1 回答
808 浏览

java - 在 stringtemplate v4 中实现自定义函数

在 StringTemplate v3 中,我们有一个自定义的 Java HashMap 实现,它将在提供的键上调用一个函数并返回函数结果,而不是进行实际的 hashmap 查找。我们将这个 HashMap 的一个实例作为属性添加到 stringtemplate。这将允许我们在 StringTemplate 中编写自定义函数。我们会这样称呼它:

myfunc HashMap 将在这里获得一个字符串类型的键

在 v4 中不再可能与 + 连接,建议的更改是将“value” + v 变成匿名模板:

在这种情况下,一个 ST 对象被传递给 HashMap,我可以在其上调用“render()”来生成我通常会得到的文本,但是:属性“v”不再从周围范围传递。给定一个 ST 对象,我怎样才能找到周围的范围 (ST),以便我可以复制属性并使其工作?

我真的不想将我的代码更改为

因为我们有一个很大的代码库,这是一个非常具有破坏性的变化。

还有其他方法可以在这里实现我想要的吗?我真的想用字符串参数调用 Java 函数并让它返回一个值给模板,字符串参数是一个可以访问封闭范围属性的表达式。

0 投票
1 回答
253 浏览

stringtemplate-4 - 如何修复 StringTempate4 错误:上下文将 2 个 args 传递给具有 1 个声明的 arg 的模板

这是来自 StringTemplate4 的修改后的测试,它给了我一个错误:

这是错误:

似乎“v”在某处扩展但我不清楚如何扩展,所以我不明白这个错误。编写此代码的正确方法是什么?

0 投票
1 回答
28 浏览

stringtemplate-4 - 虽然 STParser.g 存在 STParser.java 之类的东西在哪里?

我正在开发 StringTemplate 4 的 Delphi 版本。为此,我需要访问所有 J​​ava 源文件。我于 2013 年 11 月 19 日下载了 Java 源代码。

在 Compiler 文件夹中的 Compiler.java 文件中是例程:-

在这个例程中调用了 STParser。

在文件夹 Compiler 中查找文件“STParser.g”。但是没有文件'STParser.java'。文件“CodeGenerator.g”和“Group.g”也存在类似问题。

这些文件的 Java 版本在哪里?我怎样才能获得它们?