模块:沙盒/Vesekskiy/LinkCJK

来自Local Chinese Wikipedia
跳转到导航 跳转到搜索

此模块的文档可以在Module:沙盒/Vesekskiy/LinkCJK/doc创建

local p = {}

local function isSingleChar(s)
    return mw.ustring.len(s) == 1
end

function p.main(frame)
    local args = frame.args
    if not args[1] then
        args = frame:getParent().args
    end

    local result = {}
    local prevSingle = nil
    local i = 1
    while true do
        local val = args[i]
        if not val then break end
        val = mw.text.trim(val)
		if isSingleChar(val) then
			if prevSingle then
				table.insert(result, "[[wikt:" .. prevSingle .. "|-{" .. prevSingle .. "}-]]")
			end
			prevSingle = val
		else
			if prevSingle then
				local expanded
				if val == "" then
					expanded = frame:preprocess("{{僻字|" .. prevSingle .. "}}")
				else
					expanded = frame:preprocess("{{僻字|" .. prevSingle .. "|-{" .. val .. "}-}}")
				end
				table.insert(result, "[[wikt:" .. prevSingle .. "|" .. expanded .. "]]")
				prevSingle = nil
			else
				return frame:preprocess(string.format("{{Error|错误:第%d个参数有误}}", i))
			end
        end
        i = i + 1
    end

    if prevSingle then
        table.insert(result, "[[wikt:" .. prevSingle .. "|-{" .. prevSingle .. "}-]]")
    end

    return table.concat(result)
end

return p