shel / fusion-match
0.1.0
2020-11-30 15:05 UTC
Requires
- neos/fusion: >= 4.3 || dev-master
This package is auto-updated.
Last update: 2022-11-09 11:00:23 UTC
README
此软件包提供 Fusion 对象以简化常见字符串匹配。
灵感来自 PHP 8 匹配表达式。
此插件的目标是为 Neos CMS >= 4.3 提供给定功能⚠️ 因此,此软件包提供的功能已包含在 Neos 7.3 中。因此,此软件包将不再开发。
安装
在您的站点软件包中运行以下命令
composer require --no-update shel/fusion-match
然后在您的项目根目录中运行 composer update。
示例
基础
以下 Fusion 代码非常冗长且重复
rowClass = Neos.Fusion:Case {
case1 {
condition = ${q(node).property('columns') == "one"}
renderer = "d-flex col-12 col-md-6 col-lg-12"
}
case2 {
condition = ${q(node).property('columns') == "two"}
renderer = "d-flex col-12 col-md-6 col-lg-6"
}
case3 {
condition = ${q(node).property('columns') == "three"}
renderer = "d-flex col-12 col-md-6 col-lg-4"
}
case4 {
condition = ${q(node).property('columns') == "four"}
renderer = "d-flex col-12 col-md-6 col-lg-3"
}
}
使用 Match
对象后,它变得更加紧凑和易于阅读
rowClass = Shel.Fusion:Match {
@subject = ${q(node).property('columns')}
one = 'd-flex col-12 col-md-6 col-lg-12'
two = 'd-flex col-12 col-md-6 col-lg-6'
three = 'd-flex col-12 col-md-6 col-lg-4'
four = 'd-flex col-12 col-md-6 col-lg-3'
}
提供默认值
您还可以通过 @default
提供默认值
rowClass = Shel.Fusion:Match {
@subject = ${q(node).property('layout')}
@default = ''
left = 'my-module--left'
right = 'my-module--right'
}
具有相同值的匹配
有时您有一个 Fusion 情况,它将匹配到具有相同返回值的多个字符串。您可以更明确地解决这个问题
myVar = Shel.Fusion:Match {
@subject = ${q(node).property('layout')}
left = 'my-module--left'
right = 'my-module--right'
top = ${this.left}
bottom = ${this.left}
}
其他返回类型
myVar = Shel.Fusion:Match {
@subject = ${q(node).property('someProperty')}
@default = ''
case1 = afx`
<div>hello world</div>
`
case2 = 2
case3 = Neos.Fusion:Value {
value = 'hello world'
}
case4 = Neos.Fusion:DataStructure {
my = 'array'
}
}
确保所有情况都返回相同的类型,否则您会遇到麻烦 😉
AFX 中的使用
myVar = 'test'
renderer = afx`
<div>
<Shel.Fusion:Match @subject={props.myVar}>
<span @path="test">Hello world</span>
<span @path="@default">No match found</span>
</Shel.Fusion:Match>
</div>
`
类型检查和错误处理
该对象期望找到匹配项。提供的任何一种情况或默认值。如果没有匹配任何情况且未提供默认值,将抛出异常。
subject
将被转换为字符串。如果提供的 subject
无法转换为字符串,也会导致错误。
可匹配的情况也将被转换为字符串。因此,您可以使用字符串或数字。