aboutsummaryrefslogtreecommitdiff
path: root/testes/pm.lua
diff options
context:
space:
mode:
Diffstat (limited to 'testes/pm.lua')
-rw-r--r--testes/pm.lua32
1 files changed, 17 insertions, 15 deletions
diff --git a/testes/pm.lua b/testes/pm.lua
index 94bb63ca..795596d4 100644
--- a/testes/pm.lua
+++ b/testes/pm.lua
@@ -9,12 +9,12 @@ local function checkerror (msg, f, ...)
9end 9end
10 10
11 11
12function f(s, p) 12local function f (s, p)
13 local i,e = string.find(s, p) 13 local i,e = string.find(s, p)
14 if i then return string.sub(s, i, e) end 14 if i then return string.sub(s, i, e) end
15end 15end
16 16
17a,b = string.find('', '') -- empty patterns are tricky 17local a,b = string.find('', '') -- empty patterns are tricky
18assert(a == 1 and b == 0); 18assert(a == 1 and b == 0);
19a,b = string.find('alo', '') 19a,b = string.find('alo', '')
20assert(a == 1 and b == 0) 20assert(a == 1 and b == 0)
@@ -88,7 +88,7 @@ assert(f("alo alo", "%C+") == "alo alo")
88print('+') 88print('+')
89 89
90 90
91function f1(s, p) 91local function f1 (s, p)
92 p = string.gsub(p, "%%([0-9])", function (s) 92 p = string.gsub(p, "%%([0-9])", function (s)
93 return "%" .. (tonumber(s)+1) 93 return "%" .. (tonumber(s)+1)
94 end) 94 end)
@@ -113,7 +113,7 @@ local abc = string.char(range(0, 127)) .. string.char(range(128, 255));
113 113
114assert(string.len(abc) == 256) 114assert(string.len(abc) == 256)
115 115
116function strset (p) 116local function strset (p)
117 local res = {s=''} 117 local res = {s=''}
118 string.gsub(abc, p, function (c) res.s = res.s .. c end) 118 string.gsub(abc, p, function (c) res.s = res.s .. c end)
119 return res.s 119 return res.s
@@ -147,7 +147,7 @@ assert(string.gsub('ülo ülo', 'ü', 'x') == 'xlo xlo')
147assert(string.gsub('alo úlo ', ' +$', '') == 'alo úlo') -- trim 147assert(string.gsub('alo úlo ', ' +$', '') == 'alo úlo') -- trim
148assert(string.gsub(' alo alo ', '^%s*(.-)%s*$', '%1') == 'alo alo') -- double trim 148assert(string.gsub(' alo alo ', '^%s*(.-)%s*$', '%1') == 'alo alo') -- double trim
149assert(string.gsub('alo alo \n 123\n ', '%s+', ' ') == 'alo alo 123 ') 149assert(string.gsub('alo alo \n 123\n ', '%s+', ' ') == 'alo alo 123 ')
150t = "abç d" 150local t = "abç d"
151a, b = string.gsub(t, '(.)', '%1@') 151a, b = string.gsub(t, '(.)', '%1@')
152assert('@'..a == string.gsub(t, '', '@') and b == 5) 152assert('@'..a == string.gsub(t, '', '@') and b == 5)
153a, b = string.gsub('abçd', '(.)', '%0@', 2) 153a, b = string.gsub('abçd', '(.)', '%0@', 2)
@@ -184,6 +184,7 @@ do
184 local function setglobal (n,v) rawset(_G, n, v) end 184 local function setglobal (n,v) rawset(_G, n, v) end
185 string.gsub("a=roberto,roberto=a", "(%w+)=(%w%w*)", setglobal) 185 string.gsub("a=roberto,roberto=a", "(%w+)=(%w%w*)", setglobal)
186 assert(_G.a=="roberto" and _G.roberto=="a") 186 assert(_G.a=="roberto" and _G.roberto=="a")
187 _G.a = nil; _G.roberto = nil
187end 188end
188 189
189function f(a,b) return string.gsub(a,'.',b) end 190function f(a,b) return string.gsub(a,'.',b) end
@@ -195,20 +196,21 @@ assert(string.gsub("alo $a='x'$ novamente $return a$",
195 "$([^$]*)%$", 196 "$([^$]*)%$",
196 dostring) == "alo novamente x") 197 dostring) == "alo novamente x")
197 198
198x = string.gsub("$x=string.gsub('alo', '.', string.upper)$ assim vai para $return x$", 199local x = string.gsub("$x=string.gsub('alo', '.', string.upper)$ assim vai para $return x$",
199 "$([^$]*)%$", dostring) 200 "$([^$]*)%$", dostring)
200assert(x == ' assim vai para ALO') 201assert(x == ' assim vai para ALO')
201 202_G.a, _G.x = nil
202t = {} 203
203s = 'a alo jose joao' 204local t = {}
204r = string.gsub(s, '()(%w+)()', function (a,w,b) 205local s = 'a alo jose joao'
205 assert(string.len(w) == b-a); 206local r = string.gsub(s, '()(%w+)()', function (a,w,b)
206 t[a] = b-a; 207 assert(string.len(w) == b-a);
207 end) 208 t[a] = b-a;
209 end)
208assert(s == r and t[1] == 1 and t[3] == 3 and t[7] == 4 and t[13] == 4) 210assert(s == r and t[1] == 1 and t[3] == 3 and t[7] == 4 and t[13] == 4)
209 211
210 212
211function isbalanced (s) 213local function isbalanced (s)
212 return not string.find(string.gsub(s, "%b()", ""), "[()]") 214 return not string.find(string.gsub(s, "%b()", ""), "[()]")
213end 215end
214 216
@@ -251,7 +253,7 @@ if not _soft then
251end 253end
252 254
253-- recursive nest of gsubs 255-- recursive nest of gsubs
254function rev (s) 256local function rev (s)
255 return string.gsub(s, "(.)(.+)", function (c,s1) return rev(s1)..c end) 257 return string.gsub(s, "(.)(.+)", function (c,s1) return rev(s1)..c end)
256end 258end
257 259