mirror of https://github.com/dmarkham/enumer.git
59 lines
2.1 KiB
Markdown
59 lines
2.1 KiB
Markdown
# CamelCase [![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/fatih/camelcase) [![Build Status](http://img.shields.io/travis/fatih/camelcase.svg?style=flat-square)](https://travis-ci.org/fatih/camelcase)
|
|
|
|
CamelCase is a Golang (Go) package to split the words of a camelcase type
|
|
string into a slice of words. It can be used to convert a camelcase word (lower
|
|
or upper case) into any type of word.
|
|
|
|
## Splitting rules:
|
|
|
|
1. If string is not valid UTF-8, return it without splitting as
|
|
single item array.
|
|
2. Assign all unicode characters into one of 4 sets: lower case
|
|
letters, upper case letters, numbers, and all other characters.
|
|
3. Iterate through characters of string, introducing splits
|
|
between adjacent characters that belong to different sets.
|
|
4. Iterate through array of split strings, and if a given string
|
|
is upper case:
|
|
* if subsequent string is lower case:
|
|
* move last character of upper case string to beginning of
|
|
lower case string
|
|
|
|
## Install
|
|
|
|
```bash
|
|
go get github.com/fatih/camelcase
|
|
```
|
|
|
|
## Usage and examples
|
|
|
|
```go
|
|
splitted := camelcase.Split("GolangPackage")
|
|
|
|
fmt.Println(splitted[0], splitted[1]) // prints: "Golang", "Package"
|
|
```
|
|
|
|
Both lower camel case and upper camel case are supported. For more info please
|
|
check: [http://en.wikipedia.org/wiki/CamelCase](http://en.wikipedia.org/wiki/CamelCase)
|
|
|
|
Below are some example cases:
|
|
|
|
```
|
|
"" => []
|
|
"lowercase" => ["lowercase"]
|
|
"Class" => ["Class"]
|
|
"MyClass" => ["My", "Class"]
|
|
"MyC" => ["My", "C"]
|
|
"HTML" => ["HTML"]
|
|
"PDFLoader" => ["PDF", "Loader"]
|
|
"AString" => ["A", "String"]
|
|
"SimpleXMLParser" => ["Simple", "XML", "Parser"]
|
|
"vimRPCPlugin" => ["vim", "RPC", "Plugin"]
|
|
"GL11Version" => ["GL", "11", "Version"]
|
|
"99Bottles" => ["99", "Bottles"]
|
|
"May5" => ["May", "5"]
|
|
"BFG9000" => ["BFG", "9000"]
|
|
"BöseÜberraschung" => ["Böse", "Überraschung"]
|
|
"Two spaces" => ["Two", " ", "spaces"]
|
|
"BadUTF8\xe2\xe2\xa1" => ["BadUTF8\xe2\xe2\xa1"]
|
|
```
|