blob: 1a97f08cd18019c877d971b7a2d91ba193da2b79 (
plain)
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
|
# Requires util.tnsl
;struct Path {
{}{}charp dirs,
{}charp file
}
/; method Path
/; rel_file ({}charp rpath) [Path]
;{}{}charp spl = split(rpath, '/')
;Path out = {{}, ""}
/; loop (int i = 0; i < len (self.dirs)) [i++]
;out.dirs.append(self.dirs{i})
;/
/; loop (int i = 0; i < len spl - 1) [i++]
;out.dirs.append(spl{i})
;/
;out.file = spl{len spl - 1}
;return out
;/
/; full_path [{}charp]
;{}charp out = join((self.dirs), '/')
/; if (len (self.dirs) > 0)
;out.append('/')
;/
;add_strings(~out, ~(self.file))
;return out
;/
/; open_w [tnsl.io.File]
;return tnsl.io.writeFile(self.full_path())
;/
/; open_r [tnsl.io.File]
;return tnsl.io.readFile(self.full_path())
;/
/; extension_is ({}charp chk) [bool]
;{}charp ext = ""
;int dot = -1
/; loop (int i = len (self.file) - 1; i > 0) [i = i - 1]
/; if (self.file{i} == '.')
;dot = i
;break
;/
;/
/; if (dot > 0)
;dot++
/; loop (dot < len (self.file)) [dot++]
;ext.append(self.file{dot})
;/
;/
;return string_equate(chk, ext)
;/
;/
/; split({}charp str, charp c) [{}{}charp]
;{}{}charp out = {}
;{}charp tmp = ""
/; loop (int i = 0; i < len str) [i++]
/; if (str{i} == c)
;out.append(tmp)
;{}charp tmp = ""
;true # work around for interpreter bug
;; else
;tmp.append(str{i})
;/
;/
;out.append(tmp)
;return out
;/
/; join ({}{}charp s, charp jc) [{}charp]
;{}charp out = ""
/; loop (int i = 0; i < len s) [i++]
/; loop (int j = 0; j < len s{i}) [j++]
;out.append(s{i}{j})
;/
/; if (i < len s - 1)
;out.append(jc)
;/
;/
;return out
;/
/; path_from_str ({}charp f) [Path]
;{}{}charp spl = split(f, '/')
;Path out = {{}, ""}
/; loop (int i = 0; i < len spl - 1) [i++]
;out.dirs.append(spl{i})
;/
;out.file = spl{len spl - 1}
;return out
;/
|