diff --git a/README.md b/README.md index 084fcd8..4a0fff7 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,8 @@ name := MyTypeValue.String() // name => "my_type_value" - snake-upper - kebab - kebab-upper +- dot (dot.case) +- dot-upper (DOT.CASE) - lower (lowercase) - upper (UPPERCASE) - title (TitleCase) diff --git a/endtoend_test.go b/endtoend_test.go index 203ecd6..c2befff 100644 --- a/endtoend_test.go +++ b/endtoend_test.go @@ -4,6 +4,7 @@ // go command is not available on android +//go:build !android // +build !android package main @@ -89,6 +90,12 @@ func TestEndToEnd(t *testing.T) { case "transform_kebab_upper.go": typeName = "KebabUpperCaseValue" transformNameMethod = "kebab-upper" + case "transform_dot.go": + typeName = "DotCaseValue" + transformNameMethod = "dot" + case "transform_dot_upper.go": + typeName = "DotUpperCaseValue" + transformNameMethod = "dot-upper" case "transform_upper.go": typeName = "UpperCaseValue" transformNameMethod = "upper" diff --git a/stringer.go b/stringer.go index 33d3d09..e739d1a 100644 --- a/stringer.go +++ b/stringer.go @@ -343,6 +343,14 @@ func (g *Generator) transformValueNames(values []Value, transformMethod string) fn = func(s string) string { return strings.ToUpper(name.Delimit(s, '-')) } + case "dot": + fn = func(s string) string { + return strings.ToLower(name.Delimit(s, '.')) + } + case "dot_upper", "dot-upper": + fn = func(s string) string { + return strings.ToUpper(name.Delimit(s, '.')) + } case "upper": fn = func(s string) string { return strings.ToUpper(s) diff --git a/testdata/transform_dot.go b/testdata/transform_dot.go new file mode 100644 index 0000000..2010842 --- /dev/null +++ b/testdata/transform_dot.go @@ -0,0 +1,25 @@ +package main + +import "fmt" + +type DotCaseValue int + +const ( + DotCaseValueOne DotCaseValue = iota + DotCaseValueTwo + DotCaseValueThree +) + +func main() { + ck(DotCaseValueOne, "dot.case.value.one") + ck(DotCaseValueTwo, "dot.case.value.two") + ck(DotCaseValueThree, "dot.case.value.three") + ck(-127, "DotCaseValue(-127)") + ck(127, "DotCaseValue(127)") +} + +func ck(value DotCaseValue, str string) { + if fmt.Sprint(value) != str { + panic("transform_dot.go: " + str) + } +} diff --git a/testdata/transform_dot_upper.go b/testdata/transform_dot_upper.go new file mode 100644 index 0000000..7850ed6 --- /dev/null +++ b/testdata/transform_dot_upper.go @@ -0,0 +1,25 @@ +package main + +import "fmt" + +type DotUpperCaseValue int + +const ( + DotUpperCaseValueOne DotUpperCaseValue = iota + DotUpperCaseValueTwo + DotUpperCaseValueThree +) + +func main() { + ck(DotUpperCaseValueOne, "DOT.UPPER.CASE.VALUE.ONE") + ck(DotUpperCaseValueTwo, "DOT.UPPER.CASE.VALUE.TWO") + ck(DotUpperCaseValueThree, "DOT.UPPER.CASE.VALUE.THREE") + ck(-127, "DotUpperCaseValue(-127)") + ck(127, "DotUpperCaseValue(127)") +} + +func ck(value DotUpperCaseValue, str string) { + if fmt.Sprint(value) != str { + panic("transform_dot_upper.go: " + str) + } +}