A text case converter
casec is a text case converter for programmers. casec now supports upper, lower, title, camel, pascal, snake, kebab (or lisp) cases.
It also provides case conversion library not only command line tool.
Go version 1.10 or higher is required.
go get github.com/mingrammer/casec/...
If you want to only download the casec library
go get github.com/mingrammer/casec
Using homebrew
brew tap mingrammer/casec
brew install casec
Download gzip file from Github Releases according to your OS. Then, copy the unzipped executable to under system path.
Convert all words to snake case.
$ casec -t snake main.pyConvert all snake case to camel case.
$ casec -f snake -t camel internal.goConvert only 20~50 lines from snake case to camel case.
$ casec -f snake -t camel -l 20:50 internal.goShow how would have been converted. (dry-run)
$ casec -f snake -t kebab -n match.lispConvert all camel case to snake case except for words you don't want to convert. It is useful for preventing the keywords (reserved words) or conventions from converting.
$ casec -f snake -t pascal -i '^package|var|const|if|for|range|return|func|go$' redis.goYou can pass multiple ignore expressions.
$ casec -f snake -t pascal -i '^package|var|const|if|for|range|return|func|go$' -i '^github|com$' redis.goSee details in GoDoc
package main
import (
"fmt"
"github.com/mingrammer/casec"
)
func main() {
fmt.Println(casec.IsSnake("this_is_snake"))
// Output: true
fmt.Println(casec.IsCamel("thisIsNot_camelCase"))
// Output: false
fmt.Println(casec.Invert("Invert Me"))
// Output: iNVERT mE
fmt.Println(casec.ToCamel("write_rune"))
// Output: writeRune
fmt.Println(casec.ToSnake("IPAddress"))
// Output: ip_address
fmt.Println(casec.ToKebab("simpleJSONParser"))
// Output: simple-json-parser
}casec separates the words with non-letters (except - and _) including . and / letters. So, the ignore option of casec can not recognize the dot-or-slash separated word (ex. "github.com/mingrammer/cfmt") as a single chunk. So if you want to prevent the import path of Go source code, for example, import "github.com/mingrammer/cfmt" from converting, you should pass the ignore expression as -i "^(github|com|mingrammer|cfmt)$".
Here is a (maybe) solution for solving this issue.
- Treat the string surrounded with quotes ("" or '') as a single word optionally.
MIT