Pharo Smalltalk。 copyReplaceAll in html 文件模板到静态页面文件

Pharo Smalltalk. copyReplaceAll in html file template to static page file

我有一个 HTML 模板文件,我在其中使用自己的分隔符创建了字段标签。例如:

"This is html with ~~fieldName~~ embedded."

我需要读取 HTML 模板文件并将我所有的 ~~fieldNames~~ 替换为替换文本,然后写出新的静态 HTML 文件。

这是我尝试过的一个简洁版本:

file := StandardFileStream fileNamed: 'inHtmlTemplate.html'. 
aString := file contentsOfEntireFile. 
outHtmlString := aString copyReplaceAll:'~~fieldName~~' 
    with: 'newString' asTokens: false.

问题是方法 copyReplaceAll:with:asTokens: 是在 String class 中实现的,而不是具体的 subclass ByteString(和 copyReplaceAll:with:asTokens: 方法回答 'doesNotUnderstand'). HTML 文件的内容在转换为 aString 时成为 ByteString 的实例。

总而言之,我需要搜索并替换 HTML 模板中的所有字段标签,然后输出生成的静态 HTML 文件。

使用 Pharo 4 或更高版本的 Pharo — 我怎样才能使上述功能正常工作?

我无法在 Pharo 6.1 中重现您的问题。你的例子对我来说很好用。如果你有一个 ByteString 的实例并不重要,因为它是 String 的一个子类,因此也会理解 copyReplaceAll:with:asTokens:。如果您收到不理解错误,请检查调试器中的顶部框架。您的代码中有错字或对象未继承自 String

的可能性很高