Changeset 868 for lang/lua

Show
Ignore:
Timestamp:
10/30/07 10:01:12 (13 months ago)
Author:
mattn
Message:

lang/lua/LuaScraper/luascraper.lua: added result handler.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/lua/LuaScraper/luascraper.lua

    r867 r868  
    88end 
    99-- not supported 
    10 function result(self) 
    11   self.name = "result" 
    12   return self 
     10function result(t) 
     11  return {name="result",list=t} 
    1312end 
    1413-- return scraper structure 
     
    3938      if (type(v) == "table" and v.name == "process") then 
    4039        if (type(v.process.scraper) == "table") then 
     40          local newres = {} 
    4141          for k1,v1 in pairs(ctx.doc:select(v.process.xpath)) do 
    4242            local newctx = {top=ctx.top, doc=v1} 
    43             self.res[#(self.res)+1] = v.process.scraper.scrape(uri, newctx) 
     43            newres[#(newres)+1] = v.process.scraper.scrape(uri, newctx) 
    4444          end 
     45          self.res[v.process.name] = newres 
    4546        else 
    4647          local node = ctx.doc:select(v.process.xpath) 
     
    5253              attr = string.sub(attr, 2) 
    5354              val = node[1]:attribute(attr) 
    54                           nname = node[1]:name() 
     55              nname = node[1]:name() 
    5556              if (nname == "img" and attr == "src") or (nname == "a" and attr == "href") then 
    5657                  if string.sub(uri, -1) == "/" then 
     
    6667      end 
    6768    end 
     69    for k,v in pairs(self) do 
     70      if (type(v) == "table" and v.name == "result") then 
     71        rres = {} 
     72        if type(v.list) == "table" then 
     73          for k1,v1 in pairs(v.list) do 
     74            rres[k1] = self.res[k1] 
     75          end 
     76        else 
     77          rres[v.list] = self.res[v.list] 
     78        end 
     79        self.res = rres 
     80      end 
     81    end 
    6882    return self.res 
    6983  end