-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStrFunc.gawk
More file actions
60 lines (54 loc) · 1.44 KB
/
StrFunc.gawk
File metadata and controls
60 lines (54 loc) · 1.44 KB
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
# AWK String-processing functions
function RTrim(src) { sub(/[ \t]+$/, "", src); return src }
function LTrim(src) { sub(/^[ \t]+/, "", src); return src }
function Trim(src) { return LTrim(RTrim(src)) }
# GAWK ONLY!
#function Trim(src) {
# return gensub(/[ \t]+$/, "", 1, gensub(/^[ \t]+/, "", 1, src))
#}
function Repeat(rln, pchr, result) {
if (rln > 0) {
result = sprintf("%*s", rln, pchr)
gsub(/ /, pchr, result)
}
else result = ""
return result
}
function LPad(src, rln, pchr) {
return (Repeat(rln - length(src), pchr) src)
}
function RPad(src, rln, pchr) {
return (src Repeat(rln - length(src), pchr))
}
function ELength(src, tln) {
gsub(/[\t]/, Repeat(tln ? tln : 8, " "), src)
return length(src)
}
function Center(src, cln, pchr, rln) {
src = Trim(src)
cln = cln - length(src)
rln = int(cln / 2)
return (Repeat(rln, pchr) src Repeat(cln - rln, pchr))
}
################################################################################
## ToCamelCase
##
## Converts FOO_BAR_BAZ or foo_bar_baz to FooBarBaz.
################################################################################
function ToCamelCase(strInput)
{
strRes = ""
delete array
strTemp = toupper(strInput)
iLen = split(strTemp, array, "")
for (i = 2; i <= iLen; ++i)
{
if (array[i - 1] != "_")
array[i] = tolower(array[i])
}#for
for (i = 1; i <= iLen; ++i)
{
strRes = strRes array[i]
}#for
return strRes
}#ToCamelCase