Modul:mpeekruangnama

Dokumentasi untuk modul ini dapat dibuat di Modul:mpeekruangnama/doc

--[===[

MODULE "MPEEKRUANGNAMA" (peek ruang nama)

"eo.wiktionary.org/wiki/Modulo:mpeekruangnama" <!--2019-Jun-19-->
"id.wiktionary.org/wiki/Modul:mpeekruangnama"

Purpose: peeks amount of pages in given namespace
         (using "mw.site.stats.pagesInNamespace")

Utilo: ellegas kvanton da pagxoj en donita nomspaco
       (per "mw.site.stats.pagesInNamespace")

Manfaat: membaca jumlah halaman dalam ruang nama yang dimasukkan
         (melalui "mw.site.stats.pagesInNamespace")

Used by templates / Uzata far sxablonoj:
- no templates, but page "Helpo:Nomspaco" (EO) or "Wiktionary:Ruang nama" (ID)

Required submodules / Bezonataj submoduloj:
- none / neniuj

Incoming: - 1 anonymous obligatory parameter:
            - index of namespace (0...2000)

Returned: - string containing the number, at worst "=" if an error occurs

]===]

local peekruangnama = {}

------------------------------------------------------------------------

---- ORDINARY LOCAL LOW LEVEL FUNCTIONS ----

------------------------------------------------------------------------

-- Local function LFBUNCH

-- Add digit bunching to raw decimal number string

local function lfbunch (strnomorin)
  local strnomorut = ""
  local numlenn = 0
  local numindeex = 0 -- ZERO-based counts up
  local numcaar = 0 -- char of string
  numlenn = string.len(strnomorin)
  while (true) do
    if (numindeex==numlenn) then
      break
    end--if
    numcaar = string.byte(strnomorin,(numlenn-numindeex),(numlenn-numindeex))
    if (((numindeex%3)==0) and (numindeex~=0)) then
      strnomorut = "'" .. strnomorut -- prefix by apo
    end--if
    strnomorut = string.char(numcaar) .. strnomorut -- prefix by digit
    numindeex = numindeex + 1
  end--while
  return strnomorut
end--function lfbunch

------------------------------------------------------------------------

---- MAIN EXPORTED FUNCTION ----

------------------------------------------------------------------------

function peekruangnama.ek (arxframent)

  -- general unknown type "var"

  local vartmp = 0     -- variable without type multipurpose

  -- special type "args" AKA "arx"

  local arxourown = 0  -- metaized "args" from our own "frame" (NOT caller's)

  -- general "str"

  local strret    = ""  -- output string
  local strtmp    = ""

  -- general "num"

  local numtemp   = 0  -- length of parameter and amount of pages
  local numindx   = 0  -- index of namespace

  -- general "boo"

  local booerr    = false  -- fatal error flag

  ---- SEIZE 1 OBLIGATORY ARGUMENT SUBMITTED TO US ----

  arxourown = arxframent.args -- "args" from our own "frame"

  if ((arxourown[1]==nil) or (arxourown[2])) then
    booerr = true -- need 1 obligatory param, 2 are not appreciated
  else
    strtmp = arxourown[1] -- 0...2000
    numtemp = string.len(strtmp)
    if ((numtemp==0) or (numtemp>4)) then
      booerr = true
    else
      numindx = tonumber(strtmp)
      if ((numindx<0) or (numindx>2000)) then
        booerr = true
      end--if
    end--if
  end--if

  ---- CARRY OUT THE HARD WORK ----

  if (booerr==false) then
    vartmp = mw.site.stats.pagesInNamespace(numindx)
    if (vartmp) then
      numtemp = tonumber(vartmp)
      if ((numtemp<0) or (numtemp>200000000)) then -- need 0...200M
        booerr = true
      end--if
    else
      booerr = true
    end--if
  end--if

  if (booerr) then
    strret = "=" -- damn (hardcoded error string)
  else
    strret = lfbunch(tostring(numtemp))
  end--if

  ---- RETURN THE JUNK STRING ----

  return strret

end--function

  ---- RETURN THE JUNK LUA TABLE ----

return peekruangnama