Documentation[voir] [modifier] [historique] [purger]

Usage

Ce module permet de renvoyer les informations des sinogrammes (caractères chinois).

Importation dans un module : local sinogramme = require("Module:sinogramme")

Fonctions utilisables dans les modules :

chaine_radical_trait(str)
renvoie le radical et le nombre des traits d’un sinogramme donné.

Fonctions utilisables dans un modèle ou dans une page :

radical_trait(frame)
utilisé dans {{radical trait}}.
regex(frame)
utilisé dans {{regex han}}.

Données

Notes

Le regex des sinogrammes est :

[⺀-⿕々-〇ヶ㐀-䶿一-鿿﨎-﨩𠀀-𪜇𪜉-𬻿𬼁-𯿿]

comprenant les caractères suivants :

  • U+2E80-2FD5
  • U+3005-3007
  • U+30F6
  • U+3400-4DBF
  • U+4E00-9FFF
  • U+FA0E-FA29
  • U+20000-2A707
  • U+2A709-2CEFF
  • U+2CF01-2FFFF

Cette liste est basée sur Unicode Utilities: UnicodeSet: \p{Han} avec les modifications suivantes :

Exclus :

  • Numéraux Suzhou (U+3021-303A) : pas des sinogrammes
  • (U+303B) : un hiragana
  • Idéogrammes de compatibilité CJC (U+F900-FA0D, U+FA2A-FAD9) : pas disponibles sur MediaWiki (voir Discussion module:sinogramme/radical trait F000)
  • 𪜈 (U+2A708) : un katakana
  • 𬼀 (U+2CF00) : un katakana

Inclus :

  • (U+3006) : effectivement un sinogramme comme (U+4E44)
  • (U+30F6) : effectivement un sinogramme comme (U+7B87)

local sinogramme = {}

local chaine_regex = "⺀-⿕々-〇ヶ㐀-䶿一-鿿﨎-﨩𠀀-𪜇𪜉-𬻿𬼁-𯿿"
local tableau_radical_trait = {}

local function code_radical_trait(char)
	local code = mw.ustring.codepoint(char)
	local page = math.floor(code / 0x1000)
	local tableau = tableau_radical_trait[page]
	if not tableau then
		tableau = mw.loadData(mw.ustring.format("Module:sinogramme/radical trait %X000", page))
		tableau_radical_trait[page] = tableau
	end
	return tableau[char]
end

function sinogramme.chaine_radical_trait(str)
	str = mw.ustring.gsub(str, "([" .. chaine_regex .. "])", code_radical_trait)
	return str
end

-- Fonctions pour des modèles.
function sinogramme.radical_trait(frame)
	local str = frame.args[1] or ""
	return sinogramme.chaine_radical_trait(str)
end

function sinogramme.regex(frame)
	return chaine_regex
end

return sinogramme