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/scsTo 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.