Moduuli:Hiekkalaatikko

Wikisanakirjasta

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

local m = {}

function testi(t)
	return t[1]
end

function m.Testi(frame)
	if mw.wikibase then
		mw.log("wikibase on")
	else
		mw.log("wikibase ei ole")
	end
	
	local entity = mw.wikibase.getEntityObject("P21")

	if entity == nil then
		return "no entity"
	end

	entity = mw.wikibase.getEntity( 'L56314' )	
	mw.log(entity:getLemma())
	mw.log(entity.label)
	
	entity = mw.wikibase.getEntity( 'L1' )
	mw.log(entity:getLemma())
	mw.log("LEMMAT:")
	for i, lemma in ipairs(entity:getLemmas()) do
		mw.logObject(lemma[1])
	end
	
	mw.log("SENSSIT:")
	for i, sense in ipairs(entity:getSenses()) do
		--mw.logObject(sense)	
	end
	for k, v in ipairs(entity:getSenses()) do
		mw.logObject(k)	
	end
	mw.log(entity:getSenses()[1]['glosses']['fi']['value'])
end

function m.Lemma(frame)
	local l = frame.args[1]
	local entity = mw.wikibase.getEntityObject(l)
	
	local lemmas = entity:getLemmas()
	local lemma = lemmas[1]
	return lemma[1]
end

function m.Sense(frame)
	local l = frame.args[1]
	local entity = mw.wikibase.getEntityObject(l)
	
	local sense = entity:getSenses()[1]
	if not sense['glosses'] or not sense['glosses']['fi'] or not sense['glosses']['fi']['value'] then
		return "{{määritelmä/puuttuu}}"
	end
	return sense['glosses']['fi']['value']
end

local kielilinkki = require("Moduuli:Kielilinkki")

function m.Yhdyssanat(frame)
    local pframe = frame:getParent()

    local kieli = pframe.args[1]

	local vikaindeksi = #pframe.args
	
	local fpituudet = {}
    local linkit = {}
    for i, sana in ipairs(pframe.args) do
    	sana = mw.text.trim( sana )
    	local l = #sana
    	if not fpituudet[l] then
    		fpituudet[l] = 1
    	else
    		fpituudet[l] = fpituudet[l] + 1
    	end
    	if i > 1 then
    		if i == vikaindeksi then
        		table.insert(linkit, '<span class="test">' .. kielilinkki.linkki(kieli, sana) .. "</span>")
        	else	
        		table.insert(linkit, '<span class="test">' .. kielilinkki.linkki(kieli, sana) .. ",</span>")
        	end
        end
    end
    
    local m = 0
    local moodi = 0
    local mx = 0
    for l, n in pairs(fpituudet) do
    	if n > m then
    		m = n
    		moodi = l
    	end
    	mx = math.max(mx, l)
    end
	
	w = mx * 0.66
	table.insert(linkit, "moodi:" .. moodi)
	table.insert(linkit, "max:" .. mx)

	if #linkit <= 10 then
		return "*" .. table.concat(linkit, " ")
	end
	
	if #linkit <= 50 then
		return [=[
          <div class="mw-collapsible" data-expandtext="näytä" data-collapsetext="piilota">
          <p class="cols" style="columns: ]=] .. w .. [=[em;">
        ]=] .. table.concat(linkit, " ") .. [=[
          </p>
          </div>
        ]=]
    end
	
    return [=[
      <div class="mw-collapsible mw-collapsed" data-expandtext="näytä" data-collapsetext="piilota">
      <p class="cols" style="columns: ]=] .. w .. [=[em;">
    ]=] .. table.concat(linkit, " ") .. [=[
      </p>
      </div>
    ]=]
end


return m