View difference between Paste ID: h6s0nm9Q and UcGxKJJf
SHOW: | | - or go back to the newest paste.
1
page={}
2
3
function getsize(node)
4
5
end
6
7
function strip(s)
8
	return string.gsub(string.gsub(s,"^%s+",""),"%s+$","")
9
end
10
11
function copy(tab)
12
	if not tab then return end
13
	local t={}
14
	for k,v in pairs(tab) do
15
		if type(v) ~="table" then t[k]=v else t[k] = table.copy(v) end
16
	end
17
	return t
18
end
19
20
function parse(xmlPage)
21
	local t = {}
22
	
23
	for k,v in ipairs(xmlPage) do
24
		if type(v)=="table" then
25
			local data = copy(v.xarg)
26
			if data then
27
				data.pos=nil
28
				data.size=nil
29
			end
30
			
31
			t[#t+1] = layout.new(v.label,
32
								 v["pos"],
33
								 v["size"] or getsize(v),
34
								 data,
35
								 parse(v))
36
		else
37
			v = strip(v)
38
			
39
			t[#t+1] = layout.new("text",layout.nextpos(),{x=1,y=1},{},v)
40
		end
41
	end
42
	
43
	return t
44
end
45
46
function page.load(url)
47
	print("Loading '" .. url .. "'.")
48
	local proto,rest = string.gmatch(url,"(%a-)://(.+)")()
49
50
	local xmlPage = xml.parse(protocols[proto].load(rest))
51
	xmlPage=xmlPage[1]
52
	
53
	return parse(xmlPage)
54
end