-
Notifications
You must be signed in to change notification settings - Fork 0
/
function.js
134 lines (123 loc) · 2.5 KB
/
function.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
* 返回字符串打散后的小写字符数组
* @param {string} text
* @return {Array}
*/
function getTextArray (text) {
const style = getStyle(text)
if(style === 'php') {
return text.split('_')
} else if(style === 'camel') {
return text.replace(/([A-Z])/g, '_$1').toLowerCase().split('_')
} else if(style === 'pascal') {
return text.replace(/([A-Z])/g, '_$1').toLowerCase().split('_').slice(1)
} else if(style === 'constant') {
return text.split('_').map((item) => item.toLowerCase())
} else if(style === 'kebab') {
return text.split('-')
} else {
return [text]
}
}
function getStyle (text) {
if(isCamel(text)) {
return 'camel'
} else if(isPascal(text)) {
return 'pascal'
} else if(isPhp(text)) {
return 'php'
} else if(isConstant(text)) {
return 'constant'
} else if(isKebab(text)){
return 'kebab'
} else {
return 'unknown'
}
}
function isCamel(text) {
return text[0] === text[0].toLowerCase() && text !== text.toLowerCase()
}
function isPascal(text){
return text[0] === text[0].toUpperCase() && !text.includes('_')
}
function isPhp (text) {
return text[0] === text[0].toLowerCase() && text.includes('_')
}
function isConstant(text) {
return text[0] === text[0].toUpperCase() && text.includes('_')
}
function isKebab(text) {
return text.includes('-')
}
/**
* 转为驼峰式命名 textStyle
* @param {string} text
*/
function toCamelCase (text) {
if(isCamel(text)) {
return text
} else {
return getTextArray(text).map((item, i) => {
if(i>0){
item = item[0].toUpperCase() + item.substr(1)
return item
} else {
return item
}
}).join('')
}
}
/**
* 转为帕斯卡命名 TextStyle
* @param {string} text
*/
function toPascal (text) {
if(isPascal(text)) {
return text
} else {
return getTextArray(text).map((item, i) => {
item = item[0].toUpperCase() + item.substr(1)
return item
}).join('')
}
}
/**
* 转为php风格命名 text_style
* @param {string} text
*/
function toPhp (text) {
if(isPhp(text)) {
return text
} else {
return getTextArray(text).join('_')
}
}
/**
* 转为常量式命名 TEXT_STYLE
* @param {string} text
*/
function toConstant (text) {
if(isConstant(text)) {
return text
} else {
return getTextArray(text).join('_').toUpperCase()
}
}
/**
* 转为中横线命名 text-style
* @param {string} text
*/
function toKebab (text) {
if(isKebab(text)){
return text
} else {
return getTextArray(text).join('-')
}
}
module.exports = {
toCamelCase,
toPhp,
toConstant,
toPascal,
toKebab
}