Add to-lower/to-upper
Bug: 262303006 Test: go test Change-Id: I80af8ace90556e58676adac4cb90d5d62c5b7b96
This commit is contained in:
@@ -116,6 +116,8 @@ var knownFunctions = map[string]interface {
|
|||||||
"sort": &simpleCallParser{name: baseName + ".mksort", returnType: starlarkTypeList},
|
"sort": &simpleCallParser{name: baseName + ".mksort", returnType: starlarkTypeList},
|
||||||
"strip": &simpleCallParser{name: baseName + ".mkstrip", returnType: starlarkTypeString},
|
"strip": &simpleCallParser{name: baseName + ".mkstrip", returnType: starlarkTypeString},
|
||||||
"subst": &substCallParser{fname: "subst"},
|
"subst": &substCallParser{fname: "subst"},
|
||||||
|
"to-lower": &lowerUpperParser{isUpper: false},
|
||||||
|
"to-upper": &lowerUpperParser{isUpper: true},
|
||||||
"warning": &makeControlFuncParser{name: baseName + ".mkwarning"},
|
"warning": &makeControlFuncParser{name: baseName + ".mkwarning"},
|
||||||
"word": &wordCallParser{},
|
"word": &wordCallParser{},
|
||||||
"words": &wordsCallParser{},
|
"words": &wordsCallParser{},
|
||||||
@@ -1895,6 +1897,24 @@ func (p *evalNodeParser) parse(ctx *parseContext, node mkparser.Node, args *mkpa
|
|||||||
return []starlarkNode{ctx.newBadNode(node, "Eval expression too complex; only assignments, comments, includes, and inherit-products are supported")}
|
return []starlarkNode{ctx.newBadNode(node, "Eval expression too complex; only assignments, comments, includes, and inherit-products are supported")}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type lowerUpperParser struct {
|
||||||
|
isUpper bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *lowerUpperParser) parse(ctx *parseContext, node mkparser.Node, args *mkparser.MakeString) starlarkExpr {
|
||||||
|
fn := "lower"
|
||||||
|
if p.isUpper {
|
||||||
|
fn = "upper"
|
||||||
|
}
|
||||||
|
arg := ctx.parseMakeString(node, args)
|
||||||
|
|
||||||
|
return &callExpr{
|
||||||
|
object: arg,
|
||||||
|
name: fn,
|
||||||
|
returnType: starlarkTypeString,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (ctx *parseContext) parseMakeString(node mkparser.Node, mk *mkparser.MakeString) starlarkExpr {
|
func (ctx *parseContext) parseMakeString(node mkparser.Node, mk *mkparser.MakeString) starlarkExpr {
|
||||||
if mk.Const() {
|
if mk.Const() {
|
||||||
return &stringLiteralExpr{mk.Dump()}
|
return &stringLiteralExpr{mk.Dump()}
|
||||||
|
@@ -1659,6 +1659,26 @@ def init(g, handle):
|
|||||||
g["X"] = "%s Y" % g.get("A", "") or g["B"]
|
g["X"] = "%s Y" % g.get("A", "") or g["B"]
|
||||||
g["D"] = rblf.expand_wildcard("*.mk")
|
g["D"] = rblf.expand_wildcard("*.mk")
|
||||||
g["X"] = rblf.mk2rbc_error("product.mk:12", "Expected all arguments to $(or) or $(and) to have the same type, found \"string\" and \"list\"")
|
g["X"] = rblf.mk2rbc_error("product.mk:12", "Expected all arguments to $(or) or $(and) to have the same type, found \"string\" and \"list\"")
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
desc: "is-lower/is-upper",
|
||||||
|
mkname: "product.mk",
|
||||||
|
in: `
|
||||||
|
X := $(call to-lower,aBc)
|
||||||
|
X := $(call to-upper,aBc)
|
||||||
|
X := $(call to-lower,$(VAR))
|
||||||
|
X := $(call to-upper,$(VAR))
|
||||||
|
`,
|
||||||
|
expected: `load("//build/make/core:product_config.rbc", "rblf")
|
||||||
|
|
||||||
|
def init(g, handle):
|
||||||
|
cfg = rblf.cfg(handle)
|
||||||
|
g["X"] = ("aBc").lower()
|
||||||
|
g["X"] = ("aBc").upper()
|
||||||
|
g["X"] = (g.get("VAR", "")).lower()
|
||||||
|
g["X"] = (g.get("VAR", "")).upper()
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user