Templates 模板中列表分隔符的语法
我正在编写一个应用程序,允许用户使用模板配置输出。例如:Templates 模板中列表分隔符的语法,templates,language-agnostic,delimiter,Templates,Language Agnostic,Delimiter,我正在编写一个应用程序,允许用户使用模板配置输出。例如: 变量: name = "BoppreH" language = "Python" 模板: My name is {name} and I like {language}. 输出: My name is BoppreH and I like Python. 这对于字符串和数字这样的简单数据很好,但是我找不到一个好的列表语法,更具体地说是它们的分隔符 fruits = ["banana", "apple", "watermelon"
变量:
name = "BoppreH"
language = "Python"
模板:
My name is {name} and I like {language}.
输出:
My name is BoppreH and I like Python.
这对于字符串和数字这样的简单数据很好,但是我找不到一个好的列表语法,更具体地说是它们的分隔符
fruits = ["banana", "apple", "watermelon"]
I like {???}.
I like banana, apple, watermelon.
在本例中,所需的分隔符是逗号,但用户如何指定它?此功能是否有一些模板格式
我更关心的是使语法易于理解,而不考虑语言或库。实现过滤器,并要求将其用于非标量类型
I like {fruits|join:", "}.
通常,列表包含未知数量的成员,有时还包含自己的变量/占位符。例如,列出一个人的姓名及其电话号码。所需的输出可能如下所示:
John Doe
555-1212
555-1234
{name}
{{phone_numbers}}{phone}{{/phone_numbers}}
在支持这一点的模板系统中,需要两种类型的变量:一种为值指定占位符(如现在使用的花括号),另一种表示列表的开始和结束。比如说:
John Doe
555-1212
555-1234
{name}
{{phone_numbers}}{phone}{{/phone_numbers}}
您的值数组可能如下所示:
John Doe
555-1212
555-1234
{name}
{{phone_numbers}}{phone}{{/phone_numbers}}
值=[姓名:“John Doe”,电话号码:[电话:“555-1212”,电话:“555-1234”]]
“phone_numbers”数组中的每一个值都会创建一个新的实例来描述{{phone_numbers}}和{{/phone_numbers}}之间存在的所有内容,将包含在这两个“标记”中的值放入其中。我喜欢这个简洁且非常灵活的答案,但我担心性能。尽管如此,我发现这是迄今为止最好的。也许我误解了这个问题,但发问者问的是如何在模板中允许用户指定的分隔符,不是吗?通常,在这样的系统中,用户构建并格式化模板,程序员构建代码以填充模板,因此用户指定的分隔符将是用户创建的模板的一部分。在我上面的示例中,分隔符是一个换行符,因此每个电话号码都列在自己的行上。或者,在这种情况下,“用户”是编写代码来填充模板的人吗?如果是这样,那就是我误解的。