mirror of https://github.com/k3s-io/k3s
Adds github.com/fatih/camelcase dependency
parent
190a0cab89
commit
85bd965219
|
@ -986,6 +986,10 @@
|
||||||
"ImportPath": "github.com/exponent-io/jsonpath",
|
"ImportPath": "github.com/exponent-io/jsonpath",
|
||||||
"Rev": "d6023ce2651d8eafb5c75bb0c7167536102ec9f5"
|
"Rev": "d6023ce2651d8eafb5c75bb0c7167536102ec9f5"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "github.com/fatih/camelcase",
|
||||||
|
"Rev": "f6a740d52f961c60348ebb109adde9f4635d7540"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/fsnotify/fsnotify",
|
"ImportPath": "github.com/fsnotify/fsnotify",
|
||||||
"Comment": "v1.3.1-1-gf12c623",
|
"Comment": "v1.3.1-1-gf12c623",
|
||||||
|
|
|
@ -34163,6 +34163,34 @@ SOFTWARE.
|
||||||
================================================================================
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
================================================================================
|
||||||
|
= vendor/github.com/fatih/camelcase licensed under: =
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Fatih Arslan
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
= vendor/github.com/fatih/camelcase/LICENSE.md 4c59b216ce25dc182cdb837e07ba07c0 -
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
= vendor/github.com/fsnotify/fsnotify licensed under: =
|
= vendor/github.com/fsnotify/fsnotify licensed under: =
|
||||||
|
|
||||||
|
|
|
@ -144,6 +144,7 @@ filegroup(
|
||||||
"//vendor/github.com/emicklei/go-restful:all-srcs",
|
"//vendor/github.com/emicklei/go-restful:all-srcs",
|
||||||
"//vendor/github.com/evanphx/json-patch:all-srcs",
|
"//vendor/github.com/evanphx/json-patch:all-srcs",
|
||||||
"//vendor/github.com/exponent-io/jsonpath:all-srcs",
|
"//vendor/github.com/exponent-io/jsonpath:all-srcs",
|
||||||
|
"//vendor/github.com/fatih/camelcase:all-srcs",
|
||||||
"//vendor/github.com/fsnotify/fsnotify:all-srcs",
|
"//vendor/github.com/fsnotify/fsnotify:all-srcs",
|
||||||
"//vendor/github.com/garyburd/redigo/internal:all-srcs",
|
"//vendor/github.com/garyburd/redigo/internal:all-srcs",
|
||||||
"//vendor/github.com/garyburd/redigo/redis:all-srcs",
|
"//vendor/github.com/garyburd/redigo/redis:all-srcs",
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
language: go
|
||||||
|
go: 1.4
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
load(
|
||||||
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
|
"go_library",
|
||||||
|
)
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["camelcase.go"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "package-srcs",
|
||||||
|
srcs = glob(["**"]),
|
||||||
|
tags = ["automanaged"],
|
||||||
|
visibility = ["//visibility:private"],
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "all-srcs",
|
||||||
|
srcs = [":package-srcs"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
)
|
|
@ -0,0 +1,20 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Fatih Arslan
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
the Software without restriction, including without limitation the rights to
|
||||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,58 @@
|
||||||
|
# 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"]
|
||||||
|
```
|
|
@ -0,0 +1,90 @@
|
||||||
|
// Package camelcase is a micro package to split the words of a camelcase type
|
||||||
|
// string into a slice of words.
|
||||||
|
package camelcase
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unicode"
|
||||||
|
"unicode/utf8"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Split splits the camelcase word and returns a list of words. It also
|
||||||
|
// supports digits. Both lower camel case and upper camel case are supported.
|
||||||
|
// For more info please check: http://en.wikipedia.org/wiki/CamelCase
|
||||||
|
//
|
||||||
|
// Examples
|
||||||
|
//
|
||||||
|
// "" => [""]
|
||||||
|
// "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"]
|
||||||
|
//
|
||||||
|
// 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
|
||||||
|
func Split(src string) (entries []string) {
|
||||||
|
// don't split invalid utf8
|
||||||
|
if !utf8.ValidString(src) {
|
||||||
|
return []string{src}
|
||||||
|
}
|
||||||
|
entries = []string{}
|
||||||
|
var runes [][]rune
|
||||||
|
lastClass := 0
|
||||||
|
class := 0
|
||||||
|
// split into fields based on class of unicode character
|
||||||
|
for _, r := range src {
|
||||||
|
switch true {
|
||||||
|
case unicode.IsLower(r):
|
||||||
|
class = 1
|
||||||
|
case unicode.IsUpper(r):
|
||||||
|
class = 2
|
||||||
|
case unicode.IsDigit(r):
|
||||||
|
class = 3
|
||||||
|
default:
|
||||||
|
class = 4
|
||||||
|
}
|
||||||
|
if class == lastClass {
|
||||||
|
runes[len(runes)-1] = append(runes[len(runes)-1], r)
|
||||||
|
} else {
|
||||||
|
runes = append(runes, []rune{r})
|
||||||
|
}
|
||||||
|
lastClass = class
|
||||||
|
}
|
||||||
|
// handle upper case -> lower case sequences, e.g.
|
||||||
|
// "PDFL", "oader" -> "PDF", "Loader"
|
||||||
|
for i := 0; i < len(runes)-1; i++ {
|
||||||
|
if unicode.IsUpper(runes[i][0]) && unicode.IsLower(runes[i+1][0]) {
|
||||||
|
runes[i+1] = append([]rune{runes[i][len(runes[i])-1]}, runes[i+1]...)
|
||||||
|
runes[i] = runes[i][:len(runes[i])-1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// construct []string from results
|
||||||
|
for _, s := range runes {
|
||||||
|
if len(s) > 0 {
|
||||||
|
entries = append(entries, string(s))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
Loading…
Reference in New Issue