Jump to content

Module:Ko-utils

Permanently protected module
From Wikipedia, the free encyclopedia
This is the current revision of this page, as edited by MusikBot II (talk | contribs) at 18:01, 28 May 2025 (Protected "Module:Ko-utils": High-risk template or module: 529 transclusions (more info) ([Edit=Require autoconfirmed or confirmed access] (indefinite))). The present address (URL) is a permanent link to this version.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
local p = {}
local find = mw.ustring.find
local hanja_ranges = "[〇㐀-䶿一-鿿﨎﨏﨑﨓﨔﨟﨡﨣﨤﨧-﨩𠀀-𪛟𪜀-𮹟𰀀-𲎯]"

-- Decomposes Hangul into jamo (e.g. 한 (U+D55C) → ᄒ (U+1112), ᅡ (U+1161), ᆫ (U+11AB))
function p.decompose_hangul(text)
	return mw.ustring.gsub(text, "[가-힣]", mw.ustring.toNFD)
end

-- Returns boolean on whether input contains any Hangul text at all
function p.contains_hangul(text)
	local hangul_ranges = "[ᄀ-ᇿ〮〯ㄱ-ㆎ㈀-㈞㉠-㉾ꥠ-꥿가-힣ힰ-퟿]"
	return text ~= nil and text ~= "" and find(text, hangul_ranges)
end

-- Returns boolean on whether input contains any Hanja text at all
function p.contains_hanja(text)
	return text ~= nil and text ~= "" and find(text, hanja_ranges)
end

-- Returns boolean on whether input only contains Hanja text
function p.all_hanja(text)
    for i = 1, #text do
        local c = text:sub(i, i)
        if not find(c, hanja_ranges) then
            return false
        end
    end
    return true
end

-- Returns boolean on whether input directly contains a Wikipedia reference
function p.contains_reference(text)
	return find(text, "'\"`UNIQ--") or find(text, "-QINU`\"'")
end

return p