Smart Contract

FindUtils

A.097bafa4e0b48eef.FindUtils

Deployed

2d ago
Feb 26, 2026, 03:12:51 AM UTC

Dependents

2 imports
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