Siirry sisältöön

Moduuli:artikkeliaakkostaja/perus

Wikisanakirjasta

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:artikkeliaakkostaja/perus/ohje

local p = {}

p.merkkimuunnokset = {
  ['0'] = '0', 
  ['1'] = '0', 
  ['2'] = '0', 
  ['3'] = '0', 
  ['4'] = '0', 
  ['5'] = '0', 
  ['6'] = '0', 
  ['7'] = '0', 
  ['8'] = '0', 
  ['9'] = '0', 
}

p.sallitut_merkit = ""

function p.asetukset(params)
   p.sallitut_merkit = params.aakkoset
   
   for k,v in pairs(params.muunnokset) do
      p.merkkimuunnokset[k] = v
   end
end

--- Testaa onko merkki sallittu kielen aakkostossa.
-- @param mk merkki
-- @return true, jos merkki sisältyy p.sallitut_merkit-stringiin, muuten false.
function p.on_sallittu_merkki(mk)
   if mw.ustring.find(p.sallitut_merkit, mk, 1, true) then
      return true
   end
   return false
end

--- Yksittäisen merkin kuvaaminen toiseksi.
-- Jos muunnostaulukossa on muunnos merkille, palauttaa sen. Jos merkissä on
-- tarkkeita, palauttaa merkin ilman tarkkeita. Muussa tapauksessa palauttaa
-- merkin itsensä.
-- @param mk merkki
-- @return   mahdollisesti muunnettu merkki
function p.kuvaa_merkki(mk)
   local muunnos = p.merkkimuunnokset[mk]
   local out
   
   if muunnos then
      return muunnos
   end

   if p.on_sallittu_merkki(mk) then
      return mk
   end
   
   -- Poistetaan tarkkeet.
   out = mw.ustring.gsub(mw.ustring.toNFD(mk), "%A", "")
   return out
end


--- Koko tekstiä muokkaava funktio.
-- Oletusimplementaatio käy merkit yksi kerrallaan läpi ja kysyy kuvaa_merkki
-- -metodilta mahdollisen korvaavan tekstin.
-- @param  str aakkostettava teksti
-- @return     muutettu merkkijono
function p.kuvaa_merkkijono(str)
   local out = {}

   str = mw.ustring.upper(str)
   
   -- Etsitään merkit, jotka eivät kuulu aakkostoon ja korvataan tai
   -- poistetaan ne.
   for cp in mw.ustring.gcodepoint(str) do
      table.insert(out, p.kuvaa_merkki(mw.ustring.char(cp)))
      --print(mw.ustring.char(cp))
   end

   return table.concat(out, "")
end


function p.kopioi( clone_object )
  if type( p ) ~= "table" then
    return clone_object or p 
  end

  clone_object = clone_object or {}
  clone_object.__index = p

  return setmetatable(clone_object, clone_object)
end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy