Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 模板中列表分隔符的语法_Templates_Language Agnostic_Delimiter - Fatal编程技术网

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}}之间存在的所有内容,将包含在这两个“标记”中的值放入其中。

我喜欢这个简洁且非常灵活的答案,但我担心性能。尽管如此,我发现这是迄今为止最好的。也许我误解了这个问题,但发问者问的是如何在模板中允许用户指定的分隔符,不是吗?通常,在这样的系统中,用户构建并格式化模板,程序员构建代码以填充模板,因此用户指定的分隔符将是用户创建的模板的一部分。在我上面的示例中,分隔符是一个换行符,因此每个电话号码都列在自己的行上。或者,在这种情况下,“用户”是编写代码来填充模板的人吗?如果是这样,那就是我误解的。