模板函数列表
Helm包含了很多可以在模板中利用的模板函数。以下列出了具体分类:
Cryptographic and Security
Date
Dictionaries
Encoding
File Path
Kubernetes and Chart
Logic and Flow Control
Lists
Math
Float Math
Network
Reflection
Regular Expression
Semantic Version
String
Type Conversion
URL
UUID
Logic and Flow Control Functions
Helm包括了需要逻辑和流控制函数,包括and,coalesce,default,empty,eq,fail,ge,gt,le,lt,ne,not,and or。
and
返回两个参数的and布尔值。
and .Arg1 .Arg2
or
返回两个参数的or布尔值。会返回第一个非空参数或最后一个参数。
or .Arg1 .Arg2
not
返回参数的布尔求反。
not .Arg
eq
返回参数的布尔等式(比如,Arg1 == Arg2)。
eq .Arg1. .Arg2
ne
返回参数的布尔非等式(比如 Arg1 != Arg2)。
ne .Arg1 .Arg2
lt
如果第一参数小于第二参数,返回布尔真。否则返回➕(比如,Arg1 < Arg2)。
lt .Arg1 .Arg2
le
如果第一参数小于等于第二参数,返回布尔真,否则返回假(比如,Arg1 <= Arg2)。
le .Arg1 .Arg2
gt
如果第一参大于第二参数,返回布尔真,否则返回假(比如,Arg1 > Arg2)。
gt .Arg1 .Arg2
ge
如果第一参数大于第二参数,返回布尔真,否则返回假(比如,Arg1 >= Arg2)。
ge .Arg1 .Arg2
default
使用default设置一个简单的默认值。
default "foo" .Bar
上述示例中,如果 .Bar是非空值,则使用它,否则会返回foo。
“空”定义取决于以下类型:
整型:0
字符串:""
列表:[]
字典:{}
布尔:false
以及所有的nil(或null)
对于结构体,没有空的定义,所以结构体从来不会返回默认值。
empty
如果给定的值被认为是空的,则empty函数返回true,否则返回false。空值列举在default部分。
empty .Foo
注意在Go模板条件中,空值是为你计算出来的。这样你很少需要if not empty .Foo,仅使用if .Foo即可。
fail
无条件地返回带有指定文本的空string或者error。这在其他条件已经确定而模板渲染应该失败的情况下很有用。
fail "Please accept the end user license agreement"
coalesce
coalesce函数获取一个列表并返回第一个非空值。
coalesce 0 1 2
上述会返回1.
此函数用于扫描多个变量或值:
coalesce .name .parent.name "Matt"
上述示例会优先检查 .name是否为空。如果不是,就返回值。如果是空,继续检查.parent.name。最终,如果.name和.parent.name都是空,就会返回"Matt"。
ternay
ternay函数获取两个值和一个test值。如果test值是true,则返回第一个值。如果test值是空,则返回第二个值。这和C或其他编程语言中的ternary运算符类似。
true test value
ternary "foo" "bar" true
或者
true | ternary "foo" "bar"
上述返回"foo"
false test value
ternary "foo" "bar" false
或者
false | ternary "foo" "bar"
上述返回"bar"
String Functions
Helm包含了以下字符串函数: abbrev,abbrevboth,camelcase,cat,contains,hasPrefix,hasSuffix,indent,initial,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
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
返回个部分组合的字符串
print "Matt has " .Dogs " dogs"
如果可能,非字符串类型会被转换成字符串。
注意,当相邻两个参数不是字符串时会在它们之间添加一个空格。
println
和print效果一样,但会在末尾新添加一行。
printf
返回参数按顺序传递的格式化字符串。
printf "%s has %dogs." .Name .NumberDogs
占位符取决于传入的参数类型。这包括:
一般用途:
1、%v 默认格式的值
当打印字典时,加号参数(%+v)可以添加字段名称
2、%%字符百分号,不使用值
布尔值:
%t true或false
整型:
%b 二进制
%c the character represented by the corresponding Unicode code point
%d 十进制
%o 八进制
%0 带0o前缀的八进制
%q 安全转移的单引号字符
%x 十六进制,使用小写字符a-f
%X 十六进制,使用大写字符A-F
%U Unicode格式:U+1234;和"U+%04X"相同
浮点数和复杂成分
%b 指数二次幂的无小数科学计数法,比如-123456p-78
%e 科学计数法,比如:-123456e+78
%E 科学计数法,比如:-1.23456E+78
%f 无指数的小数,比如:123.456
%F 与%f同义
%g %e的大指数,否则时%f
%G %E的大指数,否则时%F
%x 十六进制计数法(和两个指数的十进制幂),比如:-0x1.23abcp+20
%X 大写的十六进制计数法,比如:-0X1.23ABCP+20
字符串和字节切片:
%s 未解析的二进制字符或且片
%q 安全转移的双引号字符串
%x 十六进制,小写,每个字节两个字符
%X 十六进制,大写,每个字符两个字符串
切片:
%p 十六进制的第0个元素的地址,以0x开头
trim
trim行数移除字符串两边的空格:
trim " hello "
上述结果为:hello
trimAll
从字符串中移除给定的字符:
trimAll "$" "$5.00"
上述结果为: 5.00(作为一个字符串)。
trimPrefix
从字符串中移除前缀:
trimPrefix "-" "-hello"
上述结果为:hello
trimSuffix
从字符串中移除后缀:
trimSuffix "-" "hello-"
上述结果为:hello
lower
将整个字符串转换成小写:
lower "HELLO"
上述结果为:hello
upper
将整个字符串转换成大写:
upper "hello"
上述结果为:HELLO
title
首字母转化成大写:
title "hello world"
上述结果为:Hello World
untitle
移除首字母大写:untitle "Hello World"会得到hello world。
repeat
重复字符串多次:
repeat 3 "hello"
上述结果为:hellohellohello
substr
获取字符串的子串,有三个参数:
start(int)
end(int)
string(string)
substr 0 5 "hello world"
上述结果为:hello
nospace
去掉字符串中的所有空格:
nospace "hello w o r l d"
上述结果为:helloworld
trunc
截断字符串。
trunc 5 "hello world"
上述结果为:hello
trunc -5 "hello world"
上述结果为:world
abbrev
用省略号阶段字符串(...)
参数:
最大长度
字符串
abbrev 5 "hello world"
上述结果为:he...,因为将省略号算进了长度中。
abbrevboth
两边都省略
abbrevboth 5 10 "1234 5678 9123"
上述结果为:...5678...
it takes:
左侧偏移值
最大长度
字符串
initials
截取给定字符串每个单词的首字母,并组合在一起。
initials "First Try"
上述结果为:FT
randAlphaNum,randAlpha,randNumeric,and randAscii
这四个字符串生成加密安全的(使用crypto/and)的随机字符串,但是字符集合不同:
randAlphaNum使用0-9a-zA-Z
randAlpha使用a-zA-Z
randNumeric使用0-9
randAscii使用所有的可打印ASCII字符
每个函数都需要一个参数:字符串的整型长度
randNumeric 3
上述会生成三个数字的字符串。
————————————
仅用于本人学习
来源:Helm | Docs