Smart Contract
FindUtils
A.097bafa4e0b48eef.FindUtils
1access(all) contract FindUtils {
2
3 access(all) fun deDupTypeArray(_ arr:[Type]) : [Type] {
4 let removeElement = fun (_ arr: [Type], _ element: Type): [Type] {
5 var i = arr.firstIndex(of: element)
6 let firstIndex = i
7 while i != nil {
8 arr.remove(at: i!)
9 i = arr.firstIndex(of: element)
10 }
11 if firstIndex != nil {
12 arr.insert(at: firstIndex!, element)
13 }
14 return arr
15 }
16
17 var arr = arr
18 var c = 0
19 while c < arr.length - 1 {
20 arr = removeElement(arr, arr[c])
21 c = c + 1
22 }
23 return arr
24 }
25
26 access(all) fun joinString(_ arr:[String], sep: String) : String {
27 var message=""
28 for i, key in arr {
29 if i > 0 {
30 message=message.concat(sep)
31 }
32 message=message.concat(key)
33 }
34 return message
35 }
36
37 access(all) fun joinMapToString( _ map:{String:String}) : String {
38 var message=""
39 for i, key in map.keys {
40 if i > 0 {
41 message=message.concat(" ")
42 }
43 message=message.concat(key.concat("=").concat(map[key]!))
44 }
45 return message
46 }
47
48 access(all) fun containsChar(_ string: String, char: Character) : Bool {
49 if var index = string.utf8.firstIndex(of: char.toString().utf8[0]) {
50 return true
51 }
52 return false
53 }
54
55 access(all) fun contains(_ string: String, element: String) : Bool {
56 if element.length == 0 {
57 return true
58 }
59 if var index = string.utf8.firstIndex(of: element.utf8[0]) {
60 while index <= ( string.length - element.length) {
61 if string[index] == element[0] && string.slice(from: index, upTo: index + element.length) == element {
62 return true
63 }
64 index = index + 1
65 }
66 }
67
68 return false
69 }
70
71 access(all) fun trimSuffix(_ name: String, suffix: String) : String {
72 if !self.hasSuffix(name, suffix:suffix) {
73 return name
74 }
75 let pos = name.length - suffix.length
76 return name.slice(from: 0, upTo: pos)
77 }
78
79 access(all) fun hasSuffix(_ string: String, suffix: String) : Bool {
80 if suffix.length > string.length {
81 return false
82 }
83 return string.slice(from: string.length - suffix.length, upTo: string.length) == suffix
84 }
85
86 access(all) fun hasPrefix(_ string: String, prefix: String) : Bool {
87 if prefix.length > string.length {
88 return false
89 }
90 return string.slice(from: 0, upTo: prefix.length) == prefix
91 }
92
93 access(all) fun splitString(_ string: String, sep: Character) : [String] {
94 if var index = string.utf8.firstIndex(of: sep.toString().utf8[0]) {
95 let first = string.slice(from: 0, upTo: index)
96 let second = string.slice(from: index + 1, upTo: string.length)
97 let res = [first]
98 res.appendAll(self.splitString(second, sep: sep))
99 return res
100 }
101 return [string]
102 }
103
104 access(all) fun toUpper(_ string: String) : String {
105 let map = FindUtils.getLowerCaseToUpperCase()
106 var res = ""
107 var i = 0
108 while i < string.length {
109 let c = map[string[i].toString()] ?? string[i].toString()
110 res = res.concat(c)
111 i = i + 1
112 }
113 return res
114 }
115
116 access(all) fun firstUpperLetter(_ string: String) : String {
117 if string.length < 1 {
118 return string
119 }
120 let map = FindUtils.getLowerCaseToUpperCase()
121 if let first = map[string[0].toString()] {
122 return first.concat(string.slice(from: 1, upTo: string.length))
123
124 }
125 return string
126 }
127
128 access(all) fun to_snake_case(_ string: String) : String {
129 var res = ""
130 var i = 0
131 let map = FindUtils.getUpperCaseToLowerCase()
132 var spaced = false
133 while i < string.length {
134 if string[i] == " " {
135 res = res.concat("_")
136 spaced = true
137 i = i + 1
138 continue
139 }
140 if let lowerCase = map[string[i].toString()] {
141 if i > 0 && !spaced {
142 res = res.concat("_")
143 }
144 res = res.concat(lowerCase)
145 i = i + 1
146 spaced == false
147 continue
148 }
149 res = res.concat(string[i].toString())
150 i = i + 1
151 }
152 return res
153 }
154
155 access(all) fun toCamelCase(_ string: String) : String {
156 var res = ""
157 var i = 0
158 let map = FindUtils.getLowerCaseToUpperCase()
159 var upper = false
160 let string = string.toLower()
161 while i < string.length {
162 if string[i] == " " || string[i] == "_" {
163 upper = true
164 i = i + 1
165 continue
166 }
167 if upper {
168 if let upperCase = map[string[i].toString()] {
169 res = res.concat(upperCase)
170 upper = false
171 i = i + 1
172 continue
173 }
174 }
175 res = res.concat(string[i].toString())
176 i = i + 1
177 }
178 return res
179 }
180
181 access(all) fun getLowerCaseToUpperCase() : {String : String} {
182 return {
183 "a" : "A",
184 "b" : "B",
185 "c" : "C",
186 "d" : "D",
187 "e" : "E",
188 "f" : "F",
189 "g" : "G",
190 "h" : "H",
191 "i" : "I",
192 "j" : "J",
193 "k" : "K",
194 "l" : "L",
195 "m" : "M",
196 "n" : "N",
197 "o" : "O",
198 "p" : "P",
199 "q" : "Q",
200 "r" : "R",
201 "s" : "S",
202 "t" : "T",
203 "u" : "U",
204 "v" : "V",
205 "w" : "W",
206 "x" : "X",
207 "y" : "Y",
208 "z" : "Z"
209 }
210 }
211
212 access(all) fun getUpperCaseToLowerCase() : {String : String} {
213 return {
214 "A" : "a",
215 "B" : "b",
216 "C" : "c",
217 "D" : "d",
218 "E" : "e",
219 "F" : "f",
220 "G" : "g",
221 "H" : "h",
222 "I" : "i",
223 "J" : "j",
224 "K" : "k",
225 "L" : "l",
226 "M" : "m",
227 "N" : "n",
228 "O" : "o",
229 "P" : "p",
230 "Q" : "q",
231 "R" : "r",
232 "S" : "s",
233 "T" : "t",
234 "U" : "u",
235 "V" : "v",
236 "W" : "w",
237 "X" : "x",
238 "Y" : "y",
239 "Z" : "z"
240 }
241 }
242}
243
244