Jump to content

Module:Pag

From Wikisource
local p = {}

-- in nsPage gets a book page number and returns a link to matching nsPage page 
function p.b2dt(frame)
   local base = mw.title.getCurrentTitle()
   local pageData="Module:Data/"..base.rootText
   local pages = mw.loadData(pageData)
   frame=frame:getParent()
   result=pages.b2d[frame.args[1]]
   return result
end

-- in ns0 gets a book page number and returns a link to matching ns0 page pointed to the anchor of transcluded djvu page
function p.b2ns0(frame)
   local title=mw.title.getCurrentTitle()
   local text=title:getContent()
   local pageData="Module:Data/"..string.match(text,'index="([^"]-)"')
   local pages=mw.loadData(pageData)
   frame=frame:getParent()
   positionSource=pages.b2d[frame.args[1]]
   for i,v in pairs(pages.cap) do
      if positionSource>= v.from and positionSource<=v.to
	then
           return v.name.."#"..pages.d2b[positionSource]
        end
   end
   return positionSource 
end
-- in ns0 returns the index of any of the sub-chapters
function p.index(frame)
   local title=mw.title.getCurrentTitle()
   local text=title:getContent()
   local pageData="Index talk:"..string.match(text,'index="([^"]-)"')
   if pageData==nil then
           pageData="Index talk:"..string.match(text,"URL of the paper version on the face%s*=%s*Index:([^%c]+)%c-")
       end
   local pages=mw.loadData(pageData)
   local text="== INDEX ==\n"
   local y=0
   for i,v in pairs(pages.cap) do
       subchapter=string.match(v.name,title.text.."/(.+)")
       if subchapter ~= nil then
          subchapter,y=string.gsub(subchapter,"/","/")
          text=text..string.rep("*",y+1).." ''[["..v.name.."|"..v.title.."]]''\n"
       end    
   end
   if text=="== INDEX ==\n" then 
       text=""
    end
    return text   
end
   
return p