aboutsummaryrefslogtreecommitdiff
path: root/starlark_fmt
diff options
context:
space:
mode:
authorSam Delmerico <delmerico@google.com>2022-03-25 16:33:26 +0000
committerSam Delmerico <delmerico@google.com>2022-04-08 14:15:43 +0000
commit932c01cf9efab7e8dc00b7faad470b5499ad04c0 (patch)
treed0a904907eda138f986c4d26ce13f06cc9c437f7 /starlark_fmt
parent7f88956c16b1bf10bf7a9187e9943c3fd33adc1a (diff)
downloadsoong-932c01cf9efab7e8dc00b7faad470b5499ad04c0.tar.gz
export Java variables to Bazel
Test: build/bazel/bp2build.sh Change-Id: Ia06f9265c9f96e6add6edbd0cee925fe37b430d3
Diffstat (limited to 'starlark_fmt')
-rw-r--r--starlark_fmt/format.go13
-rw-r--r--starlark_fmt/format_test.go12
2 files changed, 17 insertions, 8 deletions
diff --git a/starlark_fmt/format.go b/starlark_fmt/format.go
index 23eee59b3..3e51fa14c 100644
--- a/starlark_fmt/format.go
+++ b/starlark_fmt/format.go
@@ -39,21 +39,26 @@ func PrintBool(item bool) string {
// PrintsStringList returns a Starlark-compatible string of a list of Strings/Labels.
func PrintStringList(items []string, indentLevel int) string {
- return PrintList(items, indentLevel, `"%s"`)
+ return PrintList(items, indentLevel, func(s string) string {
+ if strings.Contains(s, "\"") {
+ return `'''%s'''`
+ }
+ return `"%s"`
+ })
}
// PrintList returns a Starlark-compatible string of list formmated as requested.
-func PrintList(items []string, indentLevel int, formatString string) string {
+func PrintList(items []string, indentLevel int, formatString func(string) string) string {
if len(items) == 0 {
return "[]"
} else if len(items) == 1 {
- return fmt.Sprintf("["+formatString+"]", items[0])
+ return fmt.Sprintf("["+formatString(items[0])+"]", items[0])
}
list := make([]string, 0, len(items)+2)
list = append(list, "[")
innerIndent := Indention(indentLevel + 1)
for _, item := range items {
- list = append(list, fmt.Sprintf(`%s`+formatString+`,`, innerIndent, item))
+ list = append(list, fmt.Sprintf(`%s`+formatString(item)+`,`, innerIndent, item))
}
list = append(list, Indention(indentLevel)+"]")
return strings.Join(list, "\n")
diff --git a/starlark_fmt/format_test.go b/starlark_fmt/format_test.go
index 90f78ef7a..9450a31b3 100644
--- a/starlark_fmt/format_test.go
+++ b/starlark_fmt/format_test.go
@@ -18,6 +18,10 @@ import (
"testing"
)
+func simpleFormat(s string) string {
+ return "%s"
+}
+
func TestPrintEmptyStringList(t *testing.T) {
in := []string{}
indentLevel := 0
@@ -54,7 +58,7 @@ func TestPrintMultiElementStringList(t *testing.T) {
func TestPrintEmptyList(t *testing.T) {
in := []string{}
indentLevel := 0
- out := PrintList(in, indentLevel, "%s")
+ out := PrintList(in, indentLevel, simpleFormat)
expectedOut := "[]"
if out != expectedOut {
t.Errorf("Expected %q, got %q", expectedOut, out)
@@ -64,7 +68,7 @@ func TestPrintEmptyList(t *testing.T) {
func TestPrintSingleElementList(t *testing.T) {
in := []string{"1"}
indentLevel := 0
- out := PrintList(in, indentLevel, "%s")
+ out := PrintList(in, indentLevel, simpleFormat)
expectedOut := `[1]`
if out != expectedOut {
t.Errorf("Expected %q, got %q", expectedOut, out)
@@ -74,7 +78,7 @@ func TestPrintSingleElementList(t *testing.T) {
func TestPrintMultiElementList(t *testing.T) {
in := []string{"1", "2"}
indentLevel := 0
- out := PrintList(in, indentLevel, "%s")
+ out := PrintList(in, indentLevel, simpleFormat)
expectedOut := `[
1,
2,
@@ -87,7 +91,7 @@ func TestPrintMultiElementList(t *testing.T) {
func TestListWithNonZeroIndent(t *testing.T) {
in := []string{"1", "2"}
indentLevel := 1
- out := PrintList(in, indentLevel, "%s")
+ out := PrintList(in, indentLevel, simpleFormat)
expectedOut := `[
1,
2,