- 官方文档地址: 模板函数列表
模板函数列表
Helm 包含了很多可以在模板中利用的模板函数。以下列出了具体分类:
- Cryptographic and Security
- Date
- Dictionaries
- Encoding
- File Path
- Kubernetes and Chart
- Logic and Flow Control
- Lists
- Math
- Network
- Reflection
- Regular Expressions
- Semantic Versions
- String
- Type Conversion
- URL
- UUID
逻辑和流程控制函数
Helm 包括了需要逻辑和流控制函数,包括 and
, coalesce
, default
, empty
, eq
, fail
, ge
, gt
, le
, lt
, ne
, not
以及 or
。
and: 返回两个参数的and布尔值。
1
and .Arg1 .Arg2
or: 返回两个参数的or布尔值。会返回第一个非空参数或最后一个参数。
1
or .Arg1 .Arg2
not: 返回参数的布尔求反。
1
not .Arg
eq: 返回参数的布尔等式(比如, Arg1 == Arg2)。
1
eq .Arg1 .Arg2
ne: 返回参数的布尔非等式(比如 Arg1 != Arg2)。
1
ne .Arg1 .Arg2
lt: 如果第一参数小于第二参数,返回布尔真。否则返回假(比如, Arg1 < Arg2)。
1
lt .Arg1 .Arg2
le: 如果第一参数小于等于第二参数,返回布尔真,否则返回假(比如, Arg1 <= Arg2)。
1
le .Arg1 .Arg2
gt: 如果第一参数大于等于第二参数,返回布尔真,否则返回假。(比如, Arg1 >= Arg2)。
1
gt .Arg1 .Arg2
ge: 如果第一参数大于等于第二参数,返回布尔真,否则返回假。(比如, Arg1 >= Arg2)。
1
ge .Arg1 .Arg2
default: 使用default设置一个简单的默认值。
1
default "foo" .Bar
上述示例中,如果.Bar是非空值,则使用它,否则会返回foo。
“空”定义取决于以下类型:- 整型: 0
- 字符串: “”
- 列表: []
- 字典: {}
- 布尔: false
- 以及所有的 nil (或者 null)
对于结构体,没有空的定义,所以结构体从来不会返回默认值。
empty: 如果给定的值被认为是空的,则
empty
函数返回true
,否则返回false
。空值列举在 default 部分。1
empty .Foo
注意在 Go 模板条件中,空值是为你计算出来的。这样你很少需要 if empty .Foo ,仅使用 if .Foo 即可。
fail: 无条件地返回带有指定文本的空 string 或者 error。这在其他条件已经确定而模板渲染应该失败的情况下很有用。
1
fail "Please accept the end user license agreement"
coalesce: 获取一个列表并返回第一个非空值。下面示例会返回 1。
1
coalesce 0 1 2
此函数用于扫描多个变量或值:
1
coalesce .name .parent.name "Matt"
上述示例会优先检查
.name
是否为空。如果不是,就返回值。如果 是 空, 继续检查.parent.name
。 最终,如果.name
和.parent.name
都是空,就会返回 Matt。ternary: 获取两个值和一个test值。如果test值是true,则返回第一个值。如果test值是空,则返回第二个值。 这和C或其他编程语言中的的ternary运算符类似。
- true test value
1
ternary "foo" "bar" true
或者
1
true | ternary "foo" "bar"
上述返回 “foo”。
- false test value
1
ternary "foo" "bar" false
或者
1
false | ternary "foo" "bar"
上述返回 “bar”.
字符串函数
Helm 包含了以下字符串函数: abbrev, abbrevboth, camelcase, cat, contains, hasPrefix, hasSuffix, indent, initials, kebabcase, lower, nindent, nospace, plural, print, printf, println, quote, randAlpha, randAlphaNum, randAscii, randNumeric, repeat, replace, shuffle, snakecase, squote, substr, swapcase, title, trim, trimAll, trimPrefix, trimSuffix, trunc, untitle, upper, wrap, 和 wrapWith
函数详细的说明请查看官方文档
类型转换函数
Helm提供了以下类型转换函数:
- atoi: 字符串转换成整型。
- float64: 转换成 float64。
- int: 按系统整型宽度转换成int。
- int64: 转换成 int64。
- toDecimal: 将unix八进制转换成int64。
- toString: 转换成字符串。
- toStrings: 将列表、切片或数组转换成字符串列表。
- toJson (mustToJson): 将列表、切片、数组、字典或对象转换成JSON。
- toPrettyJson (mustToPrettyJson): 将列表、切片、数组、字典或对象转换成格式化JSON。
- toRawJson (mustToRawJson): 将列表、切片、数组、字典或对象转换成HTML字符未转义的JSON。
正则表达式
Helm 包含以下正则表达式函数 regexFind(mustRegexFind), regexFindAll(mustRegexFindAll), regexMatch (mustRegexMatch), regexReplaceAll (mustRegexReplaceAll), regexReplaceAllLiteral(mustRegexReplaceAllLiteral), regexSplit (mustRegexSplit)。
加密和安全相关方法
Helm 提供了一些高级的加密函数。包括了 adler32sum, buildCustomCert, decryptAES, derivePassword, encryptAES, genCA, genPrivateKey, genSelfSignedCert, genSignedCert, htpasswd, sha1sum, 以及 sha256sum。
日期函数
Helm 包含以下可以在模板中使用的函数: ago, date, dateInZone, dateModify(mustDateModify), duration, durationRound, htmlDate, htmlDateInZone, now, toDate(mustToDate), and unixEpoch。
字典和字典函数
Helm 提供了一个 key/value
存储类型称为 dict
(”dictionary”的简称,Python中也有)。dict 是无序类型。字典的 key 必须是字符串。但值可以是任意类型,甚至是另一个 dict 或 list。
不像 list, dict 不是不可变的。set 和 unset 函数会修改字典的内容。
Helm 提供了以下函数支持使用字典: deepCopy(mustDeepCopy), dict, get, hasKey, keys, merge (mustMerge), mergeOverwrite (mustMergeOverwrite), omit, pick, pluck, set, unset,和 values。
编码相关函数
Helm 有以下编码和解码函数:
b64enc/b64dec
: 编码或解码 Base64b32enc/b32dec
: 编码或解码 Base32
列表和列表函数
Helm 提供了一个简单的 list 类型,包含任意顺序的列表。类似于数组或切片,但列表是被设计用于不可变数据类型。
创建一个整型列表:
1 | $myList := list 1 2 3 4 5 |
上述会生成一个列表 [1 2 3 4 5]。
Helm 提供了以下列表函数: append(mustAppend), compact (mustCompact), concat, first(mustFirst), has (mustHas), initial (mustInitial), last (mustLast), prepend (mustPrepend), rest (mustRest), reverse (mustReverse), seq, slice (mustSlice), uniq (mustUniq), until, untilStep, 和 without (mustWithout)。
数学相关函数
除非另外指定,否则所有的math函数都是操作 int64 的值。
Helm 有以下 math 函数可用: add, add1, ceil, div, floor, len, max, min, mod, mul, round 和 [sub](#sub)。
网络相关函数
Helm 提供了一个网络函数: getHostByName. getHostByName 接收一个域名返回IP地址。 例如: getHostByName "www.google.com"
会返回对应的 www.google.com
的地址。
文件路径相关函数
Helm 模板函数没有访问文件系统的权限,但是提供了遵循文件路径规范的函数。包括 base, clean, dir, ext, 和 isAbs。
更多其他类型方法请参考官方文档 模板函数列表