https://github.com/startdusk/strnaming
Package strnaming is used to convert string naming to camelCase, snake_case, kebab-case.
https://github.com/startdusk/strnaming
camel camel-case camelcase cli command-line-tool go go-style golang golang-package json kebab kebab-case kebabcase snake snake-case snake-casing snakecase strnaming toolkit useful
Last synced: 4 months ago
JSON representation
Package strnaming is used to convert string naming to camelCase, snake_case, kebab-case.
- Host: GitHub
- URL: https://github.com/startdusk/strnaming
- Owner: startdusk
- License: mit
- Created: 2021-09-02T12:44:53.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-10-24T05:53:57.000Z (almost 4 years ago)
- Last Synced: 2025-01-20T19:15:52.622Z (9 months ago)
- Topics: camel, camel-case, camelcase, cli, command-line-tool, go, go-style, golang, golang-package, json, kebab, kebab-case, kebabcase, snake, snake-case, snake-casing, snakecase, strnaming, toolkit, useful
- Language: Go
- Homepage:
- Size: 116 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# strnaming
[](https://godoc.org/github.com/startdusk/strnaming) [](https://goreportcard.com/report/github.com/startdusk/strnaming) [](https://github.com/startdusk/strnaming/actions?query=branch%3Amain) [](https://github.com/startdusk/strnaming/blob/main/LICENSE) [](https://github.com/startdusk/strnaming/releases/latest) [](https://goproxy.cn/stats/github.com/startdusk/strnaming/badges/download-count.svg)
Package strnaming is used to Convert string to camelCase, snake_case, kebab-case.
## Contents
- [strnaming](#strnaming)
- [Contents](#contents)
- [API Examples](#api-examples)
- [Install](#install)
- [Quick start](#quick-start)
- [camel](#camel)
- [using golang style](#using-golang-style)
- [snake](#snake)
- [kebab](#kebab)
- [CLI Examples](#cli-examples)
- [Install](#install-1)
- [Quick start](#quick-start-1)
- [Help](#help)
- [TODO](#todo)## API Examples
### Install
To start using strnaming, install Go and run `go get`:
```bash
$ go get -u github.com/startdusk/strnaming
```This will retrieve the library.
### Quick start
#### camel
```go
package mainimport (
"fmt""github.com/startdusk/strnaming"
)func main() {
// camel case
camel := strnaming.NewCamel()
fmt.Println(camel.Convert("camelcase_key")) // camelcaseKeyfmt.Println(camel.Convert("user_id")) // userId
camel.WithDelimiter('-')
fmt.Println(camel.Convert("user-id")) // userIdcamel.WithUpperFirst(true)
fmt.Println(camel.Convert("user_id")) // UserIdcamel.WithCache("user_id", "UserID")
fmt.Println(camel.Convert("user_id")) // UserIDfmt.Println(camel.Convert("json_data")) // JsonData
fmt.Println(camel.Convert("http_test")) // HttpTestcamel.WithPrefix("My")
camel.WithUpperFirst(false)
fmt.Println(camel.Convert("user_name")) // MyuserName
}```
##### using golang style
```go
package mainimport (
"fmt""github.com/startdusk/strnaming"
"github.com/startdusk/strnaming/style"
)func main() {
camel := strnaming.NewCamel()
fmt.Println(camel.Convert("json_data")) // JsonData
fmt.Println(camel.Convert("http_test")) // HttpTest
camel.WithStyle(style.NewGolang())
fmt.Println(camel.Convert("json_data")) // JSONData
fmt.Println(camel.Convert("http_test")) // HTTPTest
}```
#### snake
```go
package mainimport (
"fmt""github.com/startdusk/strnaming"
)func main() {
// snake case
snake := strnaming.NewSnake()
fmt.Println(snake.Convert("SnakeKey")) // snake_keysnake.WithIgnore('-')
fmt.Println(snake.Convert("My-IDCard")) // my-id_cardsnake.WithScreaming(true)
fmt.Println(snake.Convert("SnakeKey")) // SNAKE_KEYsnake.WithCache("UserID", "userid")
fmt.Println(snake.Convert("UserID")) // useridsnake.WithPrefix("go")
snake.WithScreaming(false)
fmt.Println(snake.Convert("PageSize")) // go_page_size
}```
#### kebab
```go
package mainimport (
"fmt""github.com/startdusk/strnaming"
)func main() {
// kebab case
kebab := strnaming.NewKebab()
fmt.Println(kebab.Convert("KebabKey")) // kebab-keykebab.WithIgnore('@', '.')
fmt.Println(kebab.Convert("ben_love@gmail.com")) // ben-love@gmail.comkebab.WithScreaming(true)
fmt.Println(kebab.Convert("KebabKey")) // KEBAB-KEYkebab.WithCache("UserID", "User-Id")
fmt.Println(kebab.Convert("UserID")) // User-Idkebab.WithPrefix("go")
kebab.WithScreaming(false)
fmt.Println(kebab.Convert("PageSize")) // go-page-size
}```
## CLI Examples
### Install
To start using strnaming in command line, install Go and run `go get`:
```bash
$ go get -u github.com/startdusk/strnaming/cmd/strnaming
```### Quick start
convert json keys to camelcase keys, like:
```json
// ./testdata/test.json{
"test_url": "http://json-schema.org/draft-04/schema",
"another_case": [
{
"sub_case": [
{
"for_ready": 1234,
"bba_media": "hahahaha"
}
]
},
{
"sub_url_two": [
{
"for_ready_two": "ben",
"bba_media_two": 2021,
"key_space": [
[
[
{
"low_code": true
}
]
]
]
}
]
}
]
}
```command:
```bash
$ strnaming c -f=./testdata/test.json
```output:
```json
{
"anotherCase": [
{
"subCase": [
{
"bbaMedia": "hahahaha",
"forReady": 1234
}
]
},
{
"subUrlTwo": [
{
"bbaMediaTwo": 2021,
"forReadyTwo": "ben",
"keySpace": [
[
[
{
"lowCode": true
}
]
]
]
}
]
}
],
"testUrl": "http://json-schema.org/draft-04/schema"
}
```### Help
using main command:
```bash
$ strnaming help
```output:
```bash
NAME:
strnaming - a cli tool to convert string nameUSAGE:
strnaming [global options] command [command options] [arguments...]VERSION:
v0.4.0 linux/amd64COMMANDS:
camel, c convert to camel string
snake, s convert to snake string
kebab, k convert to kabab string
help, h Shows a list of commands or help for one commandGLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
```using sub command like camel:
```bash
$ strnaming c -help
```output:
```bash
NAME:
strnaming camel - convert to camel stringUSAGE:
strnaming camel [command options] [arguments...]OPTIONS:
--file value, -f value input a json file path (eg: /path/to/strnaming.json)
--json value, -j value input a json
--delimiter value, -d value using custom delimiter (default: _)
--upperFirst, --uf using first char upper (default: false)
--prefix value, -p value using prefix
--cache value, -c value using cache (eg: -c="user_id" -c="UserID")
--help, -h show help (default: false)
```## TODO
- [x] Add prefix for string
- [x] Cli for command line access
- [x] Support Golang language naming style
- [ ] Support Golang language naming style for cli tool