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.py
Convert all snake case to camel case.
$ casec -f snake -t camel internal.go
Convert only 20~50 lines from snake case to camel case.
$ casec -f snake -t camel -l 20:50 internal.go
Show how would have been converted. (dry-run)
$ casec -f snake -t kebab -n match.lisp
Convert 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.go
You can pass multiple ignore expressions.
$ casec -f snake -t pascal -i '^package|var|const|if|for|range|return|func|go$' -i '^github|com$' redis.go
See 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