1
2
3 package strings
4
5 import (
6 "cuelang.org/go/internal/core/adt"
7 "cuelang.org/go/internal/pkg"
8 )
9
10 func init() {
11 pkg.Register("strings", p)
12 }
13
14 var _ = adt.TopKind
15
16 var p = &pkg.Package{
17 Native: []*pkg.Builtin{{
18 Name: "ByteAt",
19 Params: []pkg.Param{
20 {Kind: adt.BytesKind | adt.StringKind},
21 {Kind: adt.IntKind},
22 },
23 Result: adt.IntKind,
24 Func: func(c *pkg.CallCtxt) {
25 b, i := c.Bytes(0), c.Int(1)
26 if c.Do() {
27 c.Ret, c.Err = ByteAt(b, i)
28 }
29 },
30 }, {
31 Name: "ByteSlice",
32 Params: []pkg.Param{
33 {Kind: adt.BytesKind | adt.StringKind},
34 {Kind: adt.IntKind},
35 {Kind: adt.IntKind},
36 },
37 Result: adt.BytesKind | adt.StringKind,
38 Func: func(c *pkg.CallCtxt) {
39 b, start, end := c.Bytes(0), c.Int(1), c.Int(2)
40 if c.Do() {
41 c.Ret, c.Err = ByteSlice(b, start, end)
42 }
43 },
44 }, {
45 Name: "Runes",
46 Params: []pkg.Param{
47 {Kind: adt.StringKind},
48 },
49 Result: adt.ListKind,
50 Func: func(c *pkg.CallCtxt) {
51 s := c.String(0)
52 if c.Do() {
53 c.Ret = Runes(s)
54 }
55 },
56 }, {
57 Name: "MinRunes",
58 Params: []pkg.Param{
59 {Kind: adt.StringKind},
60 {Kind: adt.IntKind},
61 },
62 Result: adt.BoolKind,
63 Func: func(c *pkg.CallCtxt) {
64 s, min := c.String(0), c.Int(1)
65 if c.Do() {
66 c.Ret = MinRunes(s, min)
67 }
68 },
69 }, {
70 Name: "MaxRunes",
71 Params: []pkg.Param{
72 {Kind: adt.StringKind},
73 {Kind: adt.IntKind},
74 },
75 Result: adt.BoolKind,
76 Func: func(c *pkg.CallCtxt) {
77 s, max := c.String(0), c.Int(1)
78 if c.Do() {
79 c.Ret = MaxRunes(s, max)
80 }
81 },
82 }, {
83 Name: "ToTitle",
84 Params: []pkg.Param{
85 {Kind: adt.StringKind},
86 },
87 Result: adt.StringKind,
88 Func: func(c *pkg.CallCtxt) {
89 s := c.String(0)
90 if c.Do() {
91 c.Ret = ToTitle(s)
92 }
93 },
94 }, {
95 Name: "ToCamel",
96 Params: []pkg.Param{
97 {Kind: adt.StringKind},
98 },
99 Result: adt.StringKind,
100 Func: func(c *pkg.CallCtxt) {
101 s := c.String(0)
102 if c.Do() {
103 c.Ret = ToCamel(s)
104 }
105 },
106 }, {
107 Name: "SliceRunes",
108 Params: []pkg.Param{
109 {Kind: adt.StringKind},
110 {Kind: adt.IntKind},
111 {Kind: adt.IntKind},
112 },
113 Result: adt.StringKind,
114 Func: func(c *pkg.CallCtxt) {
115 s, start, end := c.String(0), c.Int(1), c.Int(2)
116 if c.Do() {
117 c.Ret, c.Err = SliceRunes(s, start, end)
118 }
119 },
120 }, {
121 Name: "Compare",
122 Params: []pkg.Param{
123 {Kind: adt.StringKind},
124 {Kind: adt.StringKind},
125 },
126 Result: adt.IntKind,
127 Func: func(c *pkg.CallCtxt) {
128 a, b := c.String(0), c.String(1)
129 if c.Do() {
130 c.Ret = Compare(a, b)
131 }
132 },
133 }, {
134 Name: "Count",
135 Params: []pkg.Param{
136 {Kind: adt.StringKind},
137 {Kind: adt.StringKind},
138 },
139 Result: adt.IntKind,
140 Func: func(c *pkg.CallCtxt) {
141 s, substr := c.String(0), c.String(1)
142 if c.Do() {
143 c.Ret = Count(s, substr)
144 }
145 },
146 }, {
147 Name: "Contains",
148 Params: []pkg.Param{
149 {Kind: adt.StringKind},
150 {Kind: adt.StringKind},
151 },
152 Result: adt.BoolKind,
153 Func: func(c *pkg.CallCtxt) {
154 s, substr := c.String(0), c.String(1)
155 if c.Do() {
156 c.Ret = Contains(s, substr)
157 }
158 },
159 }, {
160 Name: "ContainsAny",
161 Params: []pkg.Param{
162 {Kind: adt.StringKind},
163 {Kind: adt.StringKind},
164 },
165 Result: adt.BoolKind,
166 Func: func(c *pkg.CallCtxt) {
167 s, chars := c.String(0), c.String(1)
168 if c.Do() {
169 c.Ret = ContainsAny(s, chars)
170 }
171 },
172 }, {
173 Name: "LastIndex",
174 Params: []pkg.Param{
175 {Kind: adt.StringKind},
176 {Kind: adt.StringKind},
177 },
178 Result: adt.IntKind,
179 Func: func(c *pkg.CallCtxt) {
180 s, substr := c.String(0), c.String(1)
181 if c.Do() {
182 c.Ret = LastIndex(s, substr)
183 }
184 },
185 }, {
186 Name: "IndexAny",
187 Params: []pkg.Param{
188 {Kind: adt.StringKind},
189 {Kind: adt.StringKind},
190 },
191 Result: adt.IntKind,
192 Func: func(c *pkg.CallCtxt) {
193 s, chars := c.String(0), c.String(1)
194 if c.Do() {
195 c.Ret = IndexAny(s, chars)
196 }
197 },
198 }, {
199 Name: "LastIndexAny",
200 Params: []pkg.Param{
201 {Kind: adt.StringKind},
202 {Kind: adt.StringKind},
203 },
204 Result: adt.IntKind,
205 Func: func(c *pkg.CallCtxt) {
206 s, chars := c.String(0), c.String(1)
207 if c.Do() {
208 c.Ret = LastIndexAny(s, chars)
209 }
210 },
211 }, {
212 Name: "SplitN",
213 Params: []pkg.Param{
214 {Kind: adt.StringKind},
215 {Kind: adt.StringKind},
216 {Kind: adt.IntKind},
217 },
218 Result: adt.ListKind,
219 Func: func(c *pkg.CallCtxt) {
220 s, sep, n := c.String(0), c.String(1), c.Int(2)
221 if c.Do() {
222 c.Ret = SplitN(s, sep, n)
223 }
224 },
225 }, {
226 Name: "SplitAfterN",
227 Params: []pkg.Param{
228 {Kind: adt.StringKind},
229 {Kind: adt.StringKind},
230 {Kind: adt.IntKind},
231 },
232 Result: adt.ListKind,
233 Func: func(c *pkg.CallCtxt) {
234 s, sep, n := c.String(0), c.String(1), c.Int(2)
235 if c.Do() {
236 c.Ret = SplitAfterN(s, sep, n)
237 }
238 },
239 }, {
240 Name: "Split",
241 Params: []pkg.Param{
242 {Kind: adt.StringKind},
243 {Kind: adt.StringKind},
244 },
245 Result: adt.ListKind,
246 Func: func(c *pkg.CallCtxt) {
247 s, sep := c.String(0), c.String(1)
248 if c.Do() {
249 c.Ret = Split(s, sep)
250 }
251 },
252 }, {
253 Name: "SplitAfter",
254 Params: []pkg.Param{
255 {Kind: adt.StringKind},
256 {Kind: adt.StringKind},
257 },
258 Result: adt.ListKind,
259 Func: func(c *pkg.CallCtxt) {
260 s, sep := c.String(0), c.String(1)
261 if c.Do() {
262 c.Ret = SplitAfter(s, sep)
263 }
264 },
265 }, {
266 Name: "Fields",
267 Params: []pkg.Param{
268 {Kind: adt.StringKind},
269 },
270 Result: adt.ListKind,
271 Func: func(c *pkg.CallCtxt) {
272 s := c.String(0)
273 if c.Do() {
274 c.Ret = Fields(s)
275 }
276 },
277 }, {
278 Name: "Join",
279 Params: []pkg.Param{
280 {Kind: adt.ListKind},
281 {Kind: adt.StringKind},
282 },
283 Result: adt.StringKind,
284 Func: func(c *pkg.CallCtxt) {
285 elems, sep := c.StringList(0), c.String(1)
286 if c.Do() {
287 c.Ret = Join(elems, sep)
288 }
289 },
290 }, {
291 Name: "HasPrefix",
292 Params: []pkg.Param{
293 {Kind: adt.StringKind},
294 {Kind: adt.StringKind},
295 },
296 Result: adt.BoolKind,
297 Func: func(c *pkg.CallCtxt) {
298 s, prefix := c.String(0), c.String(1)
299 if c.Do() {
300 c.Ret = HasPrefix(s, prefix)
301 }
302 },
303 }, {
304 Name: "HasSuffix",
305 Params: []pkg.Param{
306 {Kind: adt.StringKind},
307 {Kind: adt.StringKind},
308 },
309 Result: adt.BoolKind,
310 Func: func(c *pkg.CallCtxt) {
311 s, suffix := c.String(0), c.String(1)
312 if c.Do() {
313 c.Ret = HasSuffix(s, suffix)
314 }
315 },
316 }, {
317 Name: "Repeat",
318 Params: []pkg.Param{
319 {Kind: adt.StringKind},
320 {Kind: adt.IntKind},
321 },
322 Result: adt.StringKind,
323 Func: func(c *pkg.CallCtxt) {
324 s, count := c.String(0), c.Int(1)
325 if c.Do() {
326 c.Ret = Repeat(s, count)
327 }
328 },
329 }, {
330 Name: "ToUpper",
331 Params: []pkg.Param{
332 {Kind: adt.StringKind},
333 },
334 Result: adt.StringKind,
335 Func: func(c *pkg.CallCtxt) {
336 s := c.String(0)
337 if c.Do() {
338 c.Ret = ToUpper(s)
339 }
340 },
341 }, {
342 Name: "ToLower",
343 Params: []pkg.Param{
344 {Kind: adt.StringKind},
345 },
346 Result: adt.StringKind,
347 Func: func(c *pkg.CallCtxt) {
348 s := c.String(0)
349 if c.Do() {
350 c.Ret = ToLower(s)
351 }
352 },
353 }, {
354 Name: "Trim",
355 Params: []pkg.Param{
356 {Kind: adt.StringKind},
357 {Kind: adt.StringKind},
358 },
359 Result: adt.StringKind,
360 Func: func(c *pkg.CallCtxt) {
361 s, cutset := c.String(0), c.String(1)
362 if c.Do() {
363 c.Ret = Trim(s, cutset)
364 }
365 },
366 }, {
367 Name: "TrimLeft",
368 Params: []pkg.Param{
369 {Kind: adt.StringKind},
370 {Kind: adt.StringKind},
371 },
372 Result: adt.StringKind,
373 Func: func(c *pkg.CallCtxt) {
374 s, cutset := c.String(0), c.String(1)
375 if c.Do() {
376 c.Ret = TrimLeft(s, cutset)
377 }
378 },
379 }, {
380 Name: "TrimRight",
381 Params: []pkg.Param{
382 {Kind: adt.StringKind},
383 {Kind: adt.StringKind},
384 },
385 Result: adt.StringKind,
386 Func: func(c *pkg.CallCtxt) {
387 s, cutset := c.String(0), c.String(1)
388 if c.Do() {
389 c.Ret = TrimRight(s, cutset)
390 }
391 },
392 }, {
393 Name: "TrimSpace",
394 Params: []pkg.Param{
395 {Kind: adt.StringKind},
396 },
397 Result: adt.StringKind,
398 Func: func(c *pkg.CallCtxt) {
399 s := c.String(0)
400 if c.Do() {
401 c.Ret = TrimSpace(s)
402 }
403 },
404 }, {
405 Name: "TrimPrefix",
406 Params: []pkg.Param{
407 {Kind: adt.StringKind},
408 {Kind: adt.StringKind},
409 },
410 Result: adt.StringKind,
411 Func: func(c *pkg.CallCtxt) {
412 s, prefix := c.String(0), c.String(1)
413 if c.Do() {
414 c.Ret = TrimPrefix(s, prefix)
415 }
416 },
417 }, {
418 Name: "TrimSuffix",
419 Params: []pkg.Param{
420 {Kind: adt.StringKind},
421 {Kind: adt.StringKind},
422 },
423 Result: adt.StringKind,
424 Func: func(c *pkg.CallCtxt) {
425 s, suffix := c.String(0), c.String(1)
426 if c.Do() {
427 c.Ret = TrimSuffix(s, suffix)
428 }
429 },
430 }, {
431 Name: "Replace",
432 Params: []pkg.Param{
433 {Kind: adt.StringKind},
434 {Kind: adt.StringKind},
435 {Kind: adt.StringKind},
436 {Kind: adt.IntKind},
437 },
438 Result: adt.StringKind,
439 Func: func(c *pkg.CallCtxt) {
440 s, old, new, n := c.String(0), c.String(1), c.String(2), c.Int(3)
441 if c.Do() {
442 c.Ret = Replace(s, old, new, n)
443 }
444 },
445 }, {
446 Name: "Index",
447 Params: []pkg.Param{
448 {Kind: adt.StringKind},
449 {Kind: adt.StringKind},
450 },
451 Result: adt.IntKind,
452 Func: func(c *pkg.CallCtxt) {
453 s, substr := c.String(0), c.String(1)
454 if c.Do() {
455 c.Ret = Index(s, substr)
456 }
457 },
458 }},
459 }
460
View as plain text