mirror of
https://github.com/google/go-jsonnet.git
synced 2025-09-28 17:01:02 +02:00
parent
44538a33e1
commit
fae841124f
10
builtins.go
10
builtins.go
@ -1301,6 +1301,15 @@ func builtinEqualsIgnoreCase(i *interpreter, sv1, sv2 value) (value, error) {
|
||||
return makeValueBoolean(strings.EqualFold(s1.getGoString(), s2.getGoString())), nil
|
||||
}
|
||||
|
||||
func builtinTrim(i *interpreter, strv value) (value, error) {
|
||||
str, err := i.getString(strv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sStr := str.getGoString()
|
||||
return makeValueString(strings.TrimSpace(sStr)), nil
|
||||
}
|
||||
|
||||
func base64DecodeGoBytes(i *interpreter, str string) ([]byte, error) {
|
||||
strLen := len(str)
|
||||
if strLen%4 != 0 {
|
||||
@ -2407,6 +2416,7 @@ var funcBuiltins = buildBuiltinMap([]builtin{
|
||||
&ternaryBuiltin{name: "strReplace", function: builtinStrReplace, params: ast.Identifiers{"str", "from", "to"}},
|
||||
&unaryBuiltin{name: "isEmpty", function: builtinIsEmpty, params: ast.Identifiers{"str"}},
|
||||
&binaryBuiltin{name: "equalsIgnoreCase", function: builtinEqualsIgnoreCase, params: ast.Identifiers{"str1", "str2"}},
|
||||
&unaryBuiltin{name: "trim", function: builtinTrim, params: ast.Identifiers{"str"}},
|
||||
&unaryBuiltin{name: "base64Decode", function: builtinBase64Decode, params: ast.Identifiers{"str"}},
|
||||
&unaryBuiltin{name: "base64DecodeBytes", function: builtinBase64DecodeBytes, params: ast.Identifiers{"str"}},
|
||||
&unaryBuiltin{name: "parseInt", function: builtinParseInt, params: ast.Identifiers{"str"}},
|
||||
|
@ -91,6 +91,7 @@ func prepareStdlib(g *typeGraph) {
|
||||
"format": g.newSimpleFuncType(stringType, "str", "vals"),
|
||||
"isEmpty": g.newSimpleFuncType(boolType, "str"),
|
||||
"equalsIgnoreCase": g.newSimpleFuncType(boolType, "str1", "str2"),
|
||||
"trim": g.newSimpleFuncType(stringType, "str"),
|
||||
// TODO(sbarzowski) Fix when they match the documentation
|
||||
"escapeStringBash": g.newSimpleFuncType(stringType, "str_"),
|
||||
"escapeStringDollars": g.newSimpleFuncType(stringType, "str_"),
|
||||
@ -145,10 +146,10 @@ func prepareStdlib(g *typeGraph) {
|
||||
"maxArray": g.newFuncType(anyArrayType, []ast.Parameter{required("arr"), optional("keyF")}),
|
||||
"contains": g.newSimpleFuncType(boolType, "arr", "elem"),
|
||||
// TODO these need test cases written by someone who understands how to make them
|
||||
"all": g.newSimpleFuncType(boolArrayType, "arr"),
|
||||
"any": g.newSimpleFuncType(boolArrayType, "arr"),
|
||||
"remove": g.newSimpleFuncType(anyArrayType, "arr", "elem"),
|
||||
"removeAt": g.newSimpleFuncType(anyArrayType, "arr", "i"),
|
||||
"all": g.newSimpleFuncType(boolArrayType, "arr"),
|
||||
"any": g.newSimpleFuncType(boolArrayType, "arr"),
|
||||
"remove": g.newSimpleFuncType(anyArrayType, "arr", "elem"),
|
||||
"removeAt": g.newSimpleFuncType(anyArrayType, "arr", "i"),
|
||||
|
||||
// Sets
|
||||
|
||||
|
1
testdata/builtinTrim.golden
vendored
Normal file
1
testdata/builtinTrim.golden
vendored
Normal file
@ -0,0 +1 @@
|
||||
"already trimmed string"
|
1
testdata/builtinTrim.jsonnet
vendored
Normal file
1
testdata/builtinTrim.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
||||
std.trim("already trimmed string")
|
0
testdata/builtinTrim.linter.golden
vendored
Normal file
0
testdata/builtinTrim.linter.golden
vendored
Normal file
1
testdata/builtinTrim1.golden
vendored
Normal file
1
testdata/builtinTrim1.golden
vendored
Normal file
@ -0,0 +1 @@
|
||||
"string with spaces on both ends"
|
1
testdata/builtinTrim1.jsonnet
vendored
Normal file
1
testdata/builtinTrim1.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
||||
std.trim(" string with spaces on both ends ")
|
0
testdata/builtinTrim1.linter.golden
vendored
Normal file
0
testdata/builtinTrim1.linter.golden
vendored
Normal file
1
testdata/builtinTrim2.golden
vendored
Normal file
1
testdata/builtinTrim2.golden
vendored
Normal file
@ -0,0 +1 @@
|
||||
"string with newline character at end"
|
1
testdata/builtinTrim2.jsonnet
vendored
Normal file
1
testdata/builtinTrim2.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
||||
std.trim("string with newline character at end\n")
|
0
testdata/builtinTrim2.linter.golden
vendored
Normal file
0
testdata/builtinTrim2.linter.golden
vendored
Normal file
1
testdata/builtinTrim3.golden
vendored
Normal file
1
testdata/builtinTrim3.golden
vendored
Normal file
@ -0,0 +1 @@
|
||||
"string with tabs at end"
|
1
testdata/builtinTrim3.jsonnet
vendored
Normal file
1
testdata/builtinTrim3.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
||||
std.trim("string with tabs at end\t\t")
|
0
testdata/builtinTrim3.linter.golden
vendored
Normal file
0
testdata/builtinTrim3.linter.golden
vendored
Normal file
10
testdata/builtinTrim4.golden
vendored
Normal file
10
testdata/builtinTrim4.golden
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
RUNTIME ERROR: Unexpected type number, expected string
|
||||
-------------------------------------------------
|
||||
testdata/builtinTrim4:1:1-13 $
|
||||
|
||||
std.trim(10)
|
||||
|
||||
-------------------------------------------------
|
||||
During evaluation
|
||||
|
||||
|
1
testdata/builtinTrim4.jsonnet
vendored
Normal file
1
testdata/builtinTrim4.jsonnet
vendored
Normal file
@ -0,0 +1 @@
|
||||
std.trim(10)
|
0
testdata/builtinTrim4.linter.golden
vendored
Normal file
0
testdata/builtinTrim4.linter.golden
vendored
Normal file
Loading…
x
Reference in New Issue
Block a user