Package scs (String Case Style) provides robust string case conversion utilities for Go applications. It supports conversion between camelCase, kebab-case, PascalCase, and snake_case formats.
- Convert between four common case styles:
- camelCase
- kebab-case
- PascalCase
- snake_case
- Two usage approaches:
- Direct conversion functions
- Object-oriented style with chainable methods
- Proper handling of:
- Abbreviations (e.g., HTTP, API)
- Numbers
- Special characters
- Thread-safe functions
- Comprehensive error handling
- Zero dependencies
go get -u github.com/goloop/scs
To use this module import it as: github.com/goloop/scs
package main
import (
"fmt"
"github.com/goloop/scs"
)
func main() {
// Direct conversion.
kebab := scs.StrToKebab("HelloWorld") // hello-world
camel := scs.StrToCamel("hello-world") // helloWorld
// Object-oriented approach.
style, _ := scs.New(scs.Snake, "HelloWorld")
fmt.Println(style.Value()) // hello_world
// Chain conversions.
style.ToCamel().ToKebab()
fmt.Println(style.Value()) // hello-world
}
Example:
package main
import "github.com/goloop/scs"
func main() {
var s string
// Simple text
s = "hello world"
scs.StrToCamel(s) // helloWorld
scs.StrToPascal(s) // HelloWorld
scs.StrToSnake(s) // hello_world
scs.StrToKebab(s) // hello-world
// Text with abbreviations
s = "http to https"
scs.StrToCamel(s) // httpToHTTPS
scs.StrToPascal(s) // HTTPToHTTPS
scs.StrToSnake(s) // http_to_https
scs.StrToKebab(s) // http-to-https
// Converting
s = "http to https"
camel := scs.StrToCamel(s) // httpToHTTPS
pascal, _ := scs.CamelToPascal(camel) // HTTPToHTTPS <nil>
kebab, _ := scs.PascalToKebab(pascal) // http-to-https <nil>
snake, _ := scs.KebabToSnake(kebab) // http_to_https <nil>
// Use strings.ToUpper(snake) for convert to UPPER_SNAKE_CASE.
scs.SnakeToPascal(snake) // HTTPToHTTPS <nil>
scs.CamelToKebab(camel) // http-to-https <nil>
// Errors
scs.CamelToSnake(kebab) // value http-to-https isn't camelCase style
scs.PascalToCamel(camel) // value httpToHTTPS isn't PascalCase style
// Convert anything to anything correctly
scs.ToCamel(snake) // httpToHTTPS
scs.ToPascal(kebab) // HTTPToHTTPS
scs.ToSnake(s) // http_to_https
}
A safer way. Since each object knows what type it is and knows which conversion rules to use. This removes the need to return a second parameter as err when converting styles.
Example:
package main
import "github.com/goloop/scs"
func main() {
var s string
// Simple text
s = "hello world"
snake, _ := scs.New(scs.Snake) // scs.New(scs.Snake, s)
snake.Eat(s) // hello_world
snake.Set(s).Value() // hello_world
snake.IsCamel() // false
snake.IsSnake() // true
snake.Value() // hello_world
camel := snake.CopyToCamel()
camel.IsSnake() // false
camel.IsCamel() // true
camel.Value() // helloWorld
// Text with abbreviations
s = "http to https"
pascal, _ := scs.New(scs.Pascal, s)
pascal.Value() // HTTPToHTTPS
kebab := pascal.CopyToKebab()
kebab.Value() // http-to-https
}
-
CamelToKebab(camel string) (string, error)
CamelToKebab converts a camelCase-style string to kebab-case. The conversion will be invalid if the input string is not camelCase style.
-
CamelToPascal(camel string) (string, error)
CamelToPascal converts a camelCase-style string to PascalCase. The conversion will be invalid if the input string is not camelCase style.
-
CamelToSnake(camel string) (string, error)
CamelToSnake converts a camelCase-style string to snake_case. The conversion will be invalid if the input string is not camelCase style.
-
KebabToCamel(kebab string) (string, error)
KebabToCamel converts a kebab-case-style string to camelCase. The conversion will be invalid if the input string is not kebab-case style.
-
KebabToPascal(kebab string) (string, error)
KebabToPascal converts a kebab-case-style string to PascalCase. The conversion will be invalid if the input string is not kebab-case style.
-
KebabToSnake(kebab string) (string, error)
KebabToSnake converts a kebab-case-style string to snake_case. The conversion will be invalid if the input string is not kebab-case style.
-
PascalToCamel(pascal string) (string, error)
PascalToCamel converts a PascalCase-style string to camelCase. The conversion will be invalid if the input string is not PascalCase style.
-
PascalToKebab(pascal string) (string, error)
PascalToKebab converts a PascalCase-style string to kebab-case. The conversion will be invalid if the input string is not PascalCase style.
-
PascalToSnake(pascal string) (string, error)
PascalToSnake converts a PascalCase-style string to snake_case. The conversion will be invalid if the input string is not PascalCase style.
-
SnakeToCamel(snake string) (string, error)
SnakeToCamel converts a snake_case-style string to camelCase. The conversion will be invalid if the input string is not snake_case style.
-
SnakeToKebab(snake string) (string, error)
SnakeToKebab converts a snake_case-style string to kebab-case. The conversion will be invalid if the input string is not snake_case style.
-
SnakeToPascal(snake string) (string, error)
SnakeToPascal converts a snake_case-style string to PascalCase. The conversion will be invalid if the input string is not snake_case style.
-
StrIsCamel(s string) bool
StrIsCamel returns true if string is camelCase.
-
StrIsKebab(s string) bool
StrIsKebab returns true if string is kebab-case.
-
StrIsPascal(s string) bool
StrIsPascal returns true if string is PascalCase.
-
StrIsSnake(s string) bool
StrIsSnake returns true if string is snake_case.
-
StrToCamel(s string) string
StrToCamel converts a string to camelCase.
-
StrToKebab(s string) string
StrToKebab converts a string to kebab-case.
-
StrToPascal(s string) string
StrToPascal converts a string to PascalCase.
-
StrToSnake(s string) string
StrToSnake converts a string to snake_case.
-
ToCamel(s string) string
ToCamel converts a string to camelCase. Unlike the StrToCamel function, if the source string already has a certain format, it will be correctly converted to camelCase.
-
ToKebab(s string) string
ToKebab converts a string to kebab-case. Unlike the StrToKebab function, if the source string already has a certain format, it will be correctly converted to kebab-case.
-
ToPascal(s string) string
ToPascal converts a string to PascalCase. Unlike the StrToPascal function, if the source string already has a certain format, it will be correctly converted to PascalCase.
-
ToSnake(s string) string
ToSnake converts a string to snake_case. Unlike the StrToSnake function, if the source string already has a certain format, it will be correctly converted to snake_case.
-
Version() string
Version returns the version of the module.
-
New(style CaseStyle, value ...string) (*StringCaseStyle, error)
New returns a pointer to a string case style object. The style defines the string case style. a string (or list of strings) to format.
-
CopyToCamel() (*StringCaseStyle, error)
CopyToCamel converts an object to Camel Type StringCaseStyle and returns new pointer to it.
-
CopyToKebab() (*StringCaseStyle, error)
CopyToKebab converts an object to Kebab Type StringCaseStyle and returns new pointer to it.
-
CopyToPascal() (*StringCaseStyle, error)
CopyToPascal converts an object to Pascal Type StringCaseStyle and returns new pointer to it.
-
CopyToSnake() (*StringCaseStyle, error)
CopyToSnake converts an object to Snake Type StringCaseStyle and returns new pointer to it.
-
Eat(s string) string
Eat converts a string to the specified style and stores it as an object value.
-
IsCamel() bool
IsCamel returns true if object contains camelCase value.
-
IsKebab() bool
IsKebab returns true if object contains kebab-case value.
-
IsPascal() bool
IsPascal returns true if object contains PascalCase value.
-
IsSnake() bool
IsSnake returns true if object contains snake-case value.
-
IsValid() bool
IsValid returns true if StringCaseStyle is valid.
-
Set(s string) *StringCaseStyle
Set sets new value.
-
ToCamel() error
ToCamel converts an object to Camel Type StringCaseStyle.
-
ToKebab() error
ToKebab converts an object to Kebab Type StringCaseStyle.
-
ToPascal() error
ToPascal converts an object to Pascal Type StringCaseStyle.
-
ToSnake() error
ToSnake converts an object to Snake Type StringCaseStyle.
-
Value() string
Value returns value of the object.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.