モジュール:山岳一覧

ナビゲーションに移動 検索に移動
モジュールの解説[作成]
local function join(list)
	local text=""
	for _,v in ipairs(list) do
		text=text..v
	end
	return text
end
return {
	_=function(frame)
		local ruby=require("Module:Ruby")
		local html={}
		for line in string.gmatch(mw.text.trim(frame:getParent().args[2]),"[^\n]+") do
			local ss=mw.text.split(mw.text.trim(line),",")
			local t=mw.text.split(mw.text.trim(ss[1]),"/")
			local p=mw.text.split(mw.text.trim(ss[2]),"/")
			local color=180-(tonumber(ss[4])-1000)/9
			local title=mw.title.new("File:"..string.gsub(ss[3],"%%2[cC]",","))
			local file=nil
			if title~=nil then
				file=title.file
			end
			table.insert(html,mw.text.tag("div",{style="text-align:center;background:linear-gradient(0deg,hsl("..color..",75%,85%), hsl("..color..",97%,97%));border:1px solid hsl("..color..",70%,70%);margin:2px;padding:0.2em;width:10em;min-width:168px;"},
					mw.text.tag("div",{style="height:2.5em;"},mw.text.tag("span",{style=mw.ustring.len(t[1])>=7 and "font-size:80%;" or ""},"[["..t[#t>=3 and 3 or 1].."|"..ruby(t[1],t[2]).."]]"))..
					mw.text.tag("div",{style="height:1.5em;font-size:80%;"},ss[4].."m")..
					mw.text.tag("div",{style="width:160px;margin:auto;overflow:hidden;"},
							file~=nil and mw.text.tag("div",{style="position:relative;left:"..math.floor(80-60*file.width/file.height).."px;"},"[[Image:"..ss[3].."|x120px]]") or ""
					)..
					mw.text.tag("div",{style="height:1.5em;font-size:70%;"},string.gsub(ss[5],"/","/"))..
					mw.text.tag("div",{style="height:1.5em;text-align:right;font-size:50%;",class="plainlinks"},"地図:[https://maps.gsi.go.jp/#15/"..p[2].."/"..p[1].." 地理院] [https://openstreetmap.jp/map#zoom=15&lat="..p[2].."&lon="..p[1].." OSM]")
			))
		end
		return mw.text.tag("div",{style="display:flex;flex-wrap:wrap;"},join(html))
	end
}