模板:Yesno-no
更多操作
no
{{Yesno}} 基于输入和几个可配置参数, 评估输入并生成统一的 yes 或 nil 输出。它用于构建复杂的模板。
使用
该模板会分类在第一个未命名参数上提供的五种不同类型的输入:
- 是:
Yes,y,true,on,是,真,开和1, 不区分大小写。例如:{{Yesno|yEs}} - 否:
No,n,false,off,否,假,关和0, 不区分大小写。例如:{{Yesno|nO}} - 啥都没有: 当输入已定义但不包含任何值或仅包含空白字符时; 例如:
{{Yesno|}}或{{Yesno| }} - 逻辑非: 当输入是
¬或完全没有传入参数时; 即{{Yesno|¬}}或{{Yesno}} - 其他东西: 例如:
{{Yesno|All your base are belong to us.}}
默认情况下, 模板在第一种和最后一种情况下返回 "yes" , 但在其他情况下返回 nil (空白, 空字符串)。
覆盖默认行为的最常见用途的两个简写模板:
- {{Yesno-yes}} - 始终返回 "yes" (或在模板的
|yes=参数里定义的内容) , 除非给出明确的否定值; 即, 即使该值为空或缺失, 它也会评估为 "yes"。 - {{Yesno-no}} - 始终返回 "no" (或在模板的
|no=里定义的内容) , 除非给出明确的肯定值; 即, 当此值存在且不为任何解析为 "yes" 的内容时, 它会被评估为 "否" 。
自定义输出
模板的输出可以由5个命名参数来自定义, 分别是 |yes=, |no=, |blank=, |¬= 和 |def=。如果这些参数被定义, 模板将会以下面的方式响应:
- 是: 模板返回在
|yes=参数中定义的内容, 其他情况下返回 "yes"。例如:{{yesno|y|yes=Yeah}}结果为 "Yeah"{{yesno|y|yes=bacon}}结果为 "bacon"
- 否: 模板返回在
|no=参数中定义的内容, 其他情况下返回空值。例如:{{yesno|n|no=Nay}}结果为 "Nay"{{yesno|n|no=ham}}结果为 "ham"
- 啥都没有: 模板返回在
|blank=参数中定义的内容, 在没有前者的情况下使用|no=参数; 如果依旧未找到前者, 返回空值。{{yesno|blank=eggs}}结果为 "eggs"{{yesno|no=ham}}结果为 "ham"{{yesno|blank=eggs|no=ham}}结果为 "eggs"
- 逻辑非: 模板返回在
|¬=参数中定义的内容, 其他情况下返回空值。例如:{{yesno|¬|¬=sausage}}结果为 "sausage"
- 其他东西: 模板返回在
|def=参数中定义的内容, 在没有前者的情况下使用|yes=参数; 如果依旧未找到前者, 返回 "yes" 。{{yesno|purple monkey dish washer|def=cup of tea}}结果为 "cup of tea"{{yesno|purple monkey dish washer|yes=bacon}}结果为 "bacon"{{yesno|purple monkey dish washer|def=cup of tea|yes=bacon}}结果为 "cup of tea"
对于命名参数, 使用空白值与省略参数不同。空白命名参数告诉模板自定义返回值为空值。例如:
{{yesno|purple monkey dish washer}}结果为 "yes"{{yesno|purple monkey dish washer|def=}}结果为 "" [空值]
逻辑差别
{{yesno}} "逻辑值" 及其相关文本概述
| ||||||
|---|---|---|---|---|---|---|
| 输入 参数 1 ( |1=)
|
代码 | 逻辑返回值 | 默认返回文本 | 返回设定的文本 :|yes=Pos|no=Neg|blank=Blank|¬=Undefined|def=Def
|
注释 | |
| yes, y, true, 1* | {{yesno|yes}}
|
根据定义的是 | "yes" | "Pos" | * 不区分大小写 (Y=y) | |
| 一些文本 | {{yesno|Some Text}}
|
默认的是 | "yes" | "Def" | "Pos" 当 def=[被省略]
| |
| no, n, false, 0* | {{yesno|no}}
|
根据定义的否 | "" [空值] | "Neg" | * 不区分大小写 (N=n) | |
| [空值] | {{yesno|}}
|
空值 | "" [空值] | "Blank" | "Neg" 当 blank=[被省略]
| |
| 1=[空值] | 1={{yesno|1=}}
|
空值 | "" [空值] | "Blank" | "Neg" 当 blank=[被省略]
| |
| ¬ | {{yesno|¬}}
|
¬ | "" [空值] | "Undefined" | ||
| [被省略] | {{yesno}}
|
¬ | "" [空值] | "Undefined" | ||
| 与相关模板对比 | |||
|---|---|---|---|
输入参数 1 (1=)
|
{{yesno}} | {{yesno-yes}} | {{yesno-no}} |
| yes, y, true, 1* | "yes" | "yes" | "yes" |
| Some Text | "yes" | "yes" | "no" |
| no, n, false, 0* | "" [空值] | "no" | "no" |
| [空值] | "" [空值] | "yes" | "no" |
| 1=[空值] | "" [空值] | "yes" | "no" |
| ¬ | "" [空值] | "yes" | "no" |
| [被省略] | "" [空值] | "yes" | "no" |
完整参数列表
未命名参数 |1= 评估输入值。其他参数 (皆为命名参数、可选参数) 是它们各自逻辑结果的返回值。设置后, 所有参数都不会输出默认返回值。
{{Yesno
| 1 =
| yes =
| no =
| blank =
| ¬ =
| def =
}}
使用范围及示例
这个模板可以根据输入返回布尔值, 在模板中很有用。
通常情况下, 模板参数会这样设置两种不同的返回值:
{{if: {{{para|}}}|output1|output2}}
以上源代码的含义是:
- 检测 para 参数:
- 如果 para 不为空或空格字符, 输出 output1;
- 否则 (para 为空或只包含空格) 输出 output2。
这非常有用, 但有个问题: 当设置了 para=no (或其他什么否定值) , 模板依旧会输出 output1, 这导致了逻辑上的混乱。
解决方法就是这个模板, 模板将输入转化为统一的 yes 或空值, 解决了上述逻辑混乱。
具体的使用方法是在输入参数 ({{{para|}}}) 外面套一层此模板, 如下:
{{if: {{Yesno|1={{{para|}}}}}|output1|output2}}
(上面的 1= 一般可以省略)
本模板的第一个编号参数 ({{{1}}}) 是要检测的输入参数, 上面代码的具体含义是:
- Yesno 模板评估 para 参数:
- 如果 para 不为空、否定值 (详细信息见上) 或空格字符, 输出 yes;
- 否则 (para 为空、否定值或空格字符) 输出空值。
- 调用 Yesno 模板的模板检测 Yesno 模板的输出:
- 如果为 yes, 输出 output1;
- 否则 (空值) 输出 output2。
另见
- Module:Yesno
- {{Yesno-yes}} — 如果传入值不是明确的否定值, 则默认输出 "yes" 的 Yesno 模板变体
- {{Yesno-no}} — 如果传入值不是明确的肯定值, 则默认输出 "no" 的 Yesno 模板变体
模板数据
此模板将输入值规范化为 'yes' 或空输出。
| 参数 | 描述 | 类型 | 状态 | |
|---|---|---|---|---|
| 输入值 | 1 | 被评估的输入值 | 字符串 | 必需 |
| '是' 的输出 | yes | 当输入值为 'Yes', 'Y', 'True', '是' 或 '1' 的不区分大小写形式时, 模板的输出 | 字符串 | 可选 |
| '否' 的输出 | no | 当输入值为 'No', 'N', 'False, '否' 或 '0' 的不区分大小写形式时, 模板的输出 | 字符串 | 可选 |
| 空输入值时的输出 | blank | 当输入值不包含任何东西或仅包含空格字符时, 模板的输出 | 字符串 | 可选 |
| '逻辑非' 的输出 | ¬ | 当输入值为 '¬' 或完全缺失 (未定义) 时, 模板的输出 | 字符串 | 可选 |
| 回调输出 | def | 当输入值被定义但不为 'yes', 'no'. '1', '0', '¬' 或空值时, 模板的输出。 | 字符串 | 可选 |