Modul:zh-sortkey/data

Üdvözlöm, Ön a Modul:zh-sortkey/data szó jelentését keresi. A DICTIOUS-ban nem csak a Modul:zh-sortkey/data szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Modul:zh-sortkey/data szót egyes és többes számban mondani. Minden, amit a Modul:zh-sortkey/data szóról tudni kell, itt található. A Modul:zh-sortkey/data szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AModul:zh-sortkey/data és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

A modult a Modul:zh-sortkey/data/doc lapon tudod dokumentálni

local export = {}

local function getBlock(char)
	if type(char) ~= "number" then
		char = mw.ustring.codepoint(char)
	end
	
	-- Don't return a block not currently serviced by ] (or an unassigned one).
	if 0x3400 <= char and char <= 0x9FEA or 0x20000 <= char and char <= 0x2EBE0 then
		return require("Module:Unicode data").lookup_block(char)
	else
		return nil
	end
end

-- A sortkey module applies to the code points of at most two blocks.
local function getBlocks(moduleNumber, start, moduleStart)
	local firstChar = ( moduleNumber - moduleStart ) * 500 + start
	local lastChar = firstChar + 500 - 1
	
	local blocks = {}
	table.insert( blocks, getBlock(firstChar) )
	table.insert( blocks, getBlock(lastChar) )
	
--	mw.log(firstChar, lastChar, blocks, blocks)
	
	return blocks
end

local function getCodePoints(title)
	local moduleTitle = title.fullText:match(".+%d+")
	local moduleContent = moduleTitle
		and mw.title.new(moduleTitle):getContent()
	if moduleContent then
		return tonumber(moduleContent:match("%")),
			tonumber(moduleContent:match(".+%"))
	end
end

function export.getDescription(frame)
	local title = mw.title.getCurrentTitle()
	local namespace = title.nsText
	local pagename = title.text
	local subpage = title.subpageText
	
	local moduleNumber = pagename:match("^zh%-sortkey/data/(%d+)")
	if moduleNumber then
		moduleNumber = tonumber(moduleNumber)
	else
		require("Module:debug").track("zh-sortkey/failed")
		return nil
	end
	
	local blocks
	
	if moduleNumber <= 56 then
		blocks = getBlocks(moduleNumber, 0x3400, 1)
	elseif moduleNumber <= 177 then
		blocks = getBlocks(moduleNumber, 0x20000, 57)
	else
		require("Module:debug").track("zh-sortkey/failed")
		return nil
	end
	
	local function link(block_name)
		return "] block "
			.. "(])"
			.. (subpage ~= "documentation" and "]"
				or "")
	end
	
	local out = {}
	-- Link any unique blocks that were found.
	for i = 1, 2 do
		if blocks then
			-- Don't insert the same block twice.
			if not blocks] then
				table.insert( out, link(blocks) )
			end
			blocks] = true
		end
	end
	if #out > 0 then
		out = table.concat(out, " and ")
	else
		require("Module:debug").track("zh-sortkey/failed")
		return nil
	end
	
	local firstCodePoint, lastCodePoint = getCodePoints(title)
	local codePointText
	if firstCodePoint and lastCodePoint then
		codePointText = ("(code points U+%04X&ndash;U+%04X) "):format(firstCodePoint, lastCodePoint)
	else
		codePointText = ""
	end
	
	return " These are sortkeys for Chinese characters " .. codePointText
		.. "from " .. out .. ", indexed by Unicode code point (in decimal base)."
end

return export