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 |