Módulo:Zona de pruebas/Miguillen/Parse

De Wikipedia, la enciclopedia libre
Este módulo no tiene página de documentación[crear]
-- Módulo de prueba
local p = {}
local columna = {}
local cont = 0
local wikibase = require 'Module:Wikibase'
local Coor = require 'Module:Coordenadas'

function p.wb(frame)
	--local ent = wikibase.getEntityObject (frame.args[1]) 
    --local wb = ent:getProperty (frame.args[2])
local w = mw.wikibase.entity:getProperties()
return w
    --return wb
end

function p.imagenc(frame)
           local respuesta = {}
           local comprobar = frame.args[1]
           local patron = frame.args[2]
           local cadena = string.find(comprobar,patron) 
    if cadena ~= nil then
           respuesta = ('encontrado')
    else
           respuesta = ('no encontrado')
    end
   return respuesta
end

function p.formatnum(frame)
    local s = frame.args[1] 
    local idioma = {}   
    if s ~= '' or s ~= nil then
        if frame.args[2] then 
            idioma = frame.args[2]
        else
            idioma = 'es'
        end 
        local num = string.gsub(string.gsub(s,',',''),' ','') -- cambiamo coma por punto y quitamos espacio bruto
        local formatnum = {}
        if type(tonumber(num)) == 'number' then
            if string.len(num) == 4 or mw.ustring.find(num,'%.') == 5 then
                if idioma == 'es' then
                    formatnum = string.gsub(num,'%.',',')
                else 
                    formatnum = mw.language.new(idioma):formatNum(tonumber(num)) 
                end
            else
                formatnum = mw.language.new(idioma):formatNum(tonumber(num)) 
            end
            return formatnum
        else 
            return  s --'<strong class="error">Número no válido</strong> [[Categoría:Wikipedia:Errores de formatnum]]'
        end
   else
       return ''
   end
end

function p.coordenadas(frame)
      local par = {}
            par.args = { frame.args[1],  frame.args[2], frame.args[3], frame.args[4], frame.args[5], frame.args[6], frame.args[7], frame.args[8],
            display='inline,title',format="dms",'type:city',gf=frame} 

        return Coor.coord2(par)
        --return par[1]
    
 end  
function p.existe(frame) --Comprueba si una página existe
    local existente = {}
    if mw.title.new(frame.args[1]).exists  then
        existente = '[['.. frame.args[1] .. ']]'
    else 
        existente = 'no encontrado'
    end
    return  existente  
 end

function p.wikidata(frame) -- Enlazar propiedad de Wikidata
    local tabla = {}
    funcion = mw.wikibase.getEntity()
    --local propiedad = funcion[frame.args[1]]
    if funcion ~= nil then
        --return funcion.id
        --local v = 1
        tabla1 = funcion.claims.p131[1]
        tabla2 = tabla1.qualifiers.p132
        tabla3 = tabla2[0]
        tabla4 = tabla3.datavalue.value
        tabla = mw.wikibase.label('q' .. tabla4['numeric-id'])
        
        --local cont = 0
        --local formato = {}
        --for k, v in pairs(tabla) do
        --      cont = cont + 1
        --      formato[cont] = v
           -- table.insert(formato,tabla)
       -- end
       -- local devolver1 = formato[2]
        --local devolver = devolver1[1]
       -- local devolver = devolver.datavalue.value
        --formato[1] = mw.wikibase.label('q' .. formato[1])
        return tabla-- mw.text.listToText(formato)

        --return mw.wikibase.label('q' .. tabla['numeric-id'])
        
    else 
        return '<strong class="error">Página no enlazada a Wikidata</strong>'
    end

end

function p.mayuscula(frame) -- Convierte en mayúnculas la primera letra que aparece en la edición de una cadena 
    local cadena = frame.args[1]
    local cambio = {}
    local modo = {}
    if string.find(cadena, '|') ~= nil then -- Enlaces con etiqueta
        modo = string.upper(string.match(cadena,'(|%a)'))
        cambio = string.gsub(cadena,'|%a', modo,1)
    elseif string.find(cadena, '[[]') ~= nil then -- Enlaces sin etiqueta
        modo = string.upper(string.match(cadena,'^(..%a)'))
        cambio = string.gsub(cadena,'^..%a', modo,1)
    else -- Sin enlace
       modo = string.upper(string.match(cadena,'^(%a)'))
       cambio = string.gsub(cadena,'^%a', modo,1)
    end
    return cambio
end
function p.sinD(frame) -- Convierte en mayúnculas la primera letra que aparece en la edición de una cadena 
    local cadena = frame.args[1]
    local cambio = {}
    if string.find(cadena, '|') ~= nil then -- Enlaces con etiqueta
        cambio = string.gsub(cadena,'|%a+%sde%d(%D+)', '%1')
    elseif string.find(cadena, '[[]') ~= nil then -- Enlaces sin etiqueta
        cambio = string.gsub(cadena,'(^..%a+%sde%s)(%D+)', '%1%2|%2')
    else -- Sin enlace
     
       cambio = string.gsub(cadena,'^%a+%sde%s%(%D+)','%1')
    end
    return cambio
end
function p.imagen(frame)
    local s = frame.args[1]
    local imagen = {}
    if s ~= nil then
        if string.find(s, '[Aa]rchivo') then
            imagen = string.gsub(s,'..[Aa]rchivo:(.*\.%a%a%a)|.*','%1')
        elseif string.find(s, '[Ff]ile') then
            imagen = string.gsub(s,'..[Ff]ile:(.*\.%a%a%a)|.*','%1')
        elseif string.find(s, '[Ii]magen') then
            imagen = string.gsub(s,'..[Ii]magen:(.*\.%a%a%a)|.*','%1')
        elseif string.find(s, '[Ii]mage') then
            imagen = string.gsub(s,'..[Ii]mage:(.*\.%a%a%a)|.*','%1')
        else 
            imagen = s
        end
    else
        imagen = ''
    end
    return imagen
end

function p.si(frame)
    local condicion = frame.args[1]
    local parametro = frame.args[2]
    local verdadero = frame.args[3]
    local espacio = string.rep (' ', 17 - mw.ustring.len(parametro))
    if condicion ~= '' then
        local vuelta = '\n| ' .. parametro .. espacio .. '= ' .. verdadero
        return vuelta
    end
end
function p.url(frame)
local s = frame.args[1]
local cambio = {}
    if string.find(s, '%[') then
        local cambio1 = string.gsub(s,'[%[ | %]]','')
        cambio = string.gsub(cambio1,'http:%/%/','')
    elseif string.find(s, 'http:%/%/') then 
        cambio = string.gsub(s,'http:%/%/','')
    else
        cambio = s
    end
    return cambio
end
function p.pruebaNum(frame)
    local s = frame.args[1]
    local num = {}
    local nums = mw.ustring.gcodepoint( s,1, mw.ustring.len( s,mw.ustring.match(s, '%d*')))
for codepoint in nums do
   num[codepoint] = nums
end
return next(num)
end

function p.ordenar(frame)
    local ordenar = frame.args[1]
    if ordenar then
        local nombreParametro = {}
        mw.ustring.sub(ordenar, 1, mw.ustring.find(ordenar,',')-1)
        local cont = 0  
        --for w in string.gmatch(ordenar, '%a+') do
           --cont = cont + 1 
          -- nombreParametro[cont] = w
        --end
        nombreParametro = mw.text.split (ordenar,',')
        return table.concat(nombreParametro,'<br>')
    end
end
function p.firma(frame)
    local enlace = frame:preprocess('~~~')
    return enlace
end
function p.usuario(frame)
    local usuario = mw.ustring.gsub(frame.args[1],'%[%[Usuario:([a-z A-Z 0-9]*)|.*','%1')
    return usuario
end

 wikibase.getEntity = function ()
   local id = php.getEntityId( tostring( mw.title.getCurrentTitle().prefixedText ) )
   if id == nil then return nil end
   local entity = php.getEntity( id )
   return entity
 end
function p.item(frame)
   item = function()
   return item
end
end
function p.wikidata2(frame) -- Enlazar propiedad de Wikidata
    local tabla = {}
    funcion = mw.wikibase.getEntity()
    --local propiedad = funcion[frame.args[1]]
    if funcion ~= nil then
        --return funcion.id
        --local v = 1
        tabla1 = funcion.claims.p1082[1]
        tabla = tabla1.mainsnak.datavalue.value
        --tabla = tabla2['unit']
        
        local cont = 0
        local formato = {}
        for k, v in pairs(tabla) do
              cont = cont + 1
              formato[cont] = k ..'='.. v
              --table.insert(formato,tabla)
        end
       -- local devolver1 = formato[2]
        --local devolver = devolver1[1]
       -- local devolver = devolver.datavalue.value
        --formato[1] = mw.wikibase.label('q' .. formato[1])
        return mw.text.listToText(formato,', ')

        --return mw.wikibase.label('q' .. tabla['numeric-id'])
        
    else 
        return '<strong class="error">Página no enlazada a Wikidata</strong>'
    end

end

    
return p