-- Questo modulo, richiamato nel [[Template:Sinogramma/Composti]], categorizza le sottocategorie dei composti dei caratteri cinesi in base al radicale

local p = {}
function p.sinogramma(frame)

-- variabili richiamate nel template
    tipo = frame.args["tipo"]
    radicale = frame.args["radicale"]
    tratti = frame.args["tratti"]
    titolo = mw.title.getCurrentTitle().subpageText --il titolo della pagina, ovvero della categoria
    
-- variabili interne al modulo
   cat = ""
   
   local carattere = mw.ustring.gsub((tostring(mw.title.getCurrentTitle().subpageText)), '([㐀-䶵一-鿌\239\164\128-\239\171\153𠀀-𯨟])々', '%1%1') --trova i caratteri nel titolo della pagina
		carattere = mw.ustring.gsub(carattere, '[^㐀-䶵一-鿌\239\164\128-\239\171\153𠀀-𯨟]',   '') --rimuove tutto quello che non è carattere cinese dal titolo (spero)
   
   -- lista dei radicali; inserendo come parametro un numero da 1 a 214 restituisce il radicale corrispondente, altrimenti genera un messaggio di errore
	if radicale == "1" then
		rad = "一"
	elseif radicale == "2" then
		rad = "丨"
	elseif radicale == "3" then
		rad = "丶"
	elseif radicale == "4" then
		rad = "丿"
	elseif radicale == "5" then
		rad = "乙"
	elseif radicale == "6" then
		rad = "亅"
	elseif radicale == "7" then
		rad = "二"
	elseif radicale == "8" then
		rad = "亠"
	elseif radicale == "9" then
		rad = "人"
	elseif radicale == "10" then
		rad = "儿"
	elseif radicale == "11" then
		rad = "入"
	elseif radicale == "12" then
		rad = "八"
	elseif radicale == "13" then
		rad = "冂"
	elseif radicale == "14" then
		rad = "冖"
	elseif radicale == "15" then
		rad = "冫"
	elseif radicale == "16" then
		rad = "几"
	elseif radicale == "17" then
		rad = "凵"
	elseif radicale == "18" then
		rad = "刀"
	elseif radicale == "19" then
		rad = "力"
	elseif radicale == "20" then
		rad = "勹"
	elseif radicale == "21" then
		rad = "匕"
	elseif radicale == "22" then
		rad = "匚"
	elseif radicale == "23" then
		rad = "匸"
	elseif radicale == "24" then
		rad = "十"
	elseif radicale == "25" then
		rad = "卜"
	elseif radicale == "26" then
		rad = "卩"
	elseif radicale == "27" then
		rad = "厂"
	elseif radicale == "28" then
		rad = "厶"
	elseif radicale == "29" then
		rad = "又"
	elseif radicale == "30" then
		rad = "口"
	elseif radicale == "31" then
		rad = "囗"
	elseif radicale == "32" then
		rad = "土"
	elseif radicale == "33" then
		rad = "士"
	elseif radicale == "34" then
		rad = "夂"
	elseif radicale == "35" then
		rad = "夊"
	elseif radicale == "36" then
		rad = "夕"
	elseif radicale == "37" then
		rad = "大"
	elseif radicale == "38" then
		rad = "女"
	elseif radicale == "39" then
		rad = "子"
	elseif radicale == "40" then
		rad = "宀"
	elseif radicale == "41" then
		rad = "寸"
	elseif radicale == "42" then
		rad = "小"
	elseif radicale == "43" then
		rad = "尢"
	elseif radicale == "44" then
		rad= "尸"
	elseif radicale == "45" then
		rad = "屮"
	elseif radicale == "46" then
		rad = "山"
	elseif radicale == "47" then
		rad = "巛"
	elseif radicale == "48" then
		rad = "工"
	elseif radicale == "49" then
		rad = "己"
	elseif radicale == "50" then
		rad = "巾"
	elseif radicale == "51" then
		rad = "干"
	elseif radicale == "52" then
		rad = "幺"
	elseif radicale == "53" then
		rad = "广"
	elseif radicale == "54" then
		rad = "廴"
	elseif radicale == "55" then
		rad = "廾"
	elseif radicale == "56" then
		rad = "弋"
	elseif radicale == "57" then
		rad = "弓"
	elseif radicale == "58" then
		rad = "彐"
	elseif radicale == "59" then
		rad = "彡"
	elseif radicale == "60" then
		rad = "彳"
	elseif radicale == "61" then
		rad ="心"
	elseif radicale == "62" then
		rad = "戈"
	elseif radicale == "63" then
		rad = "戶"
	elseif radicale == "64" then
		rad = "手"
	elseif radicale == "65" then
		rad = "支"
	elseif radicale == "66" then
		rad = "攴"
	elseif radicale == "67" then
		rad = "文"
	elseif radicale == "68" then
		rad = "斗"
	elseif radicale == "69" then
		rad = "斤"
	elseif radicale == "70" then
		rad = "方"
	elseif radicale == "71" then
		rad = "无"
	elseif radicale == "72" then
		rad = "日"
	elseif radicale == "73" then
		rad = "曰"
	elseif radicale == "74" then
		rad = "月"
	elseif radicale == "75" then
		rad = "木"
	elseif radicale == "76" then
		rad = "欠"
	elseif radicale == "77" then
		rad = "止"
	elseif radicale == "78" then
		rad = "歹"
	elseif radicale == "79" then
		rad = "殳"
	elseif radicale == "80" then
		rad = "毋"
	elseif radicale == "81" then
		rad = "比"
	elseif radicale == "82" then
		rad = "毛"
	elseif radicale == "83" then
		rad = "氏"
	elseif radicale == "84" then
		rad = "气"
	elseif radicale == "85" then
		rad = "水"
	elseif radicale == "86" then
		rad = "火"
	elseif radicale == "87" then
		rad = "爪"
	elseif radicale == "88" then
		rad = "父"
	elseif radicale == "89" then
		rad = "爻"
	elseif radicale == "90" then
		rad = "爿"
	elseif radicale == "91" then
		rad = "片"
	elseif radicale == "92" then
		rad = "牙"
	elseif radicale == "93" then
		rad = "牛"
	elseif radicale == "94" then
		rad = "犬"
	elseif radicale == "95" then
		rad = "玄"
	elseif radicale == "96" then
		rad = "玉"
	elseif radicale == "97" then
		rad = "瓜"
	elseif radicale == "98" then
		rad = "瓦"
	elseif radicale == "99" then
		rad = "甘"
	elseif radicale == "100" then
		rad = "生"
	elseif radicale == "101" then
		rad = "用"
	elseif radicale == "102" then
		rad = "田"
	elseif radicale == "103" then
		rad = "疋"
	elseif radicale == "104" then
		rad = "疒"
	elseif radicale == "105" then
		rad = "癶"
	elseif radicale == "106" then
		rad = "白"
	elseif radicale == "107" then
		rad = "皮"
	elseif radicale == "108" then
		rad = "皿"
	elseif radicale == "109" then
		rad = "目"
	elseif radicale == "110" then
		rad = "矛"
	elseif radicale == "111" then
		rad = "矢"
	elseif radicale == "112" then
		rad = "石"
	elseif radicale == "113" then
		rad = "示"
	elseif radicale == "114" then
		rad = "禸"
	elseif radicale == "115" then
		rad = "禾"
	elseif radicale == "116" then 
		rad = "穴"
	elseif radicale == "117" then
		rad = "立"
	elseif radicale == "118" then
		rad = "竹"
	elseif radicale == "119" then
		rad = "米"
	elseif radicale == "120" then
		rad = "糸"
	elseif radicale == "121" then
		rad = "缶"
	elseif radicale == "122" then
		rad = "网"
	elseif radicale == "123" then
		rad = "羊"
	elseif radicale == "124" then
		rad = "羽"
	elseif radicale == "125" then
		rad = "老"
	elseif radicale == "126" then
		rad = "而"
	elseif radicale == "127" then
		rad = "耒"
	elseif radicale == "128" then
		rad = "耳"
	elseif radicale == "129" then
		rad = "聿"
	elseif radicale == "130" then
		rad = "肉"
	elseif radicale == "131" then
		rad = "臣"
	elseif radicale == "132" then
		rad = "自"
	elseif radicale == "133" then
		rad = "至"
	elseif radicale == "134" then
		rad = "臼"
	elseif radicale == "135" then
		rad = "舌"
	elseif radicale == "136" then
		rad = "舛"
	elseif radicale == "137" then
		rad = "舟"
	elseif radicale == "138" then
		rad = "艮"
	elseif radicale == "139" then
		rad = "色"
	elseif radicale == "140" then
		rad = "艸"
	elseif radicale == "141" then
		rad = "虍"
	elseif radicale == "142" then
		rad = "虫"
	elseif radicale == "143" then
		rad = "血"
	elseif radicale == "144" then
		rad = "行"
	elseif radicale == "145" then
		rad = "衣"
	elseif radicale == "146" then
		rad = "西"
	elseif radicale == "147" then
		rad = "見"
	elseif radicale == "148" then
		rad = "角"
	elseif radicale == "149" then
		rad = "言"
	elseif radicale == "150" then
		rad = "谷"
	elseif radicale == "151" then
		rad = "豆"
	elseif radicale == "152" then
		rad = "豕"
	elseif radicale == "153" then
		rad = "豸"
	elseif radicale == "154" then
		rad = "貝"
	elseif radicale == "155" then
		rad = "赤"
	elseif radicale == "156" then
		rad = "走"
	elseif radicale == "157" then
		rad = "足"
	elseif radicale == "158" then
		rad = "身"
	elseif radicale == "159" then
		rad = "車"
	elseif radicale == "160" then
		rad = "辛"
	elseif radicale == "161" then
		rad = "辰"
	elseif radicale == "162" then
		rad = "辵"
	elseif radicale == "163" then
		rad = "邑"
	elseif radicale == "164" then
		rad = "酉"
	elseif radicale == "165" then
		rad = "釆"
	elseif radicale == "166" then
		rad = "里"
	elseif radicale == "167" then
		rad = "金"
	elseif radicale == "168" then
		rad = "長"
	elseif radicale == "169" then
		rad = "門"
	elseif radicale == "170" then
		rad = "阜"
	elseif radicale == "171" then
		rad = "隶"
	elseif radicale == "172" then
		rad = "隹"
	elseif radicale == "173" then
		rad = "雨"
	elseif radicale == "174" then
		rad = "青"
	elseif radicale == "175" then
		rad = "非"
	elseif radicale == "176" then
		rad = "面"
	elseif radicale == "177" then
		rad = "革"
	elseif radicale == "178" then
		rad = "韋"
	elseif radicale == "179" then
		rad = "韭"
	elseif radicale == "180" then
		rad = "音"
	elseif radicale == "181" then
		rad = "頁"
	elseif radicale == "182" then
		rad = "風"
	elseif radicale == "183" then
		rad = "飛"
	elseif radicale == "184" then
		rad = "食"
	elseif radicale == "185" then
		rad = "首"
	elseif radicale == "186" then
		rad = "香"
	elseif radicale == "187" then
		rad = "馬"
	elseif radicale == "188" then
		rad = "骨"
	elseif radicale == "189" then
		rad = "高"
	elseif radicale == "190" then
		rad = "髟"
	elseif radicale == "191" then
		rad = "鬥"
	elseif radicale == "192" then
		rad = "鬯" 
	elseif radicale == "193" then
		rad = "鬲"
	elseif radicale == "194" then
		rad = "鬼"
	elseif radicale == "195" then
		rad = "魚"
	elseif radicale == "196" then
		rad = "鳥"
	elseif radicale == "197" then
		rad = "鹵"
	elseif radicale == "198" then
		rad = "鹿"
	elseif radicale == "199" then
		rad = "麥"
	elseif radicale == "200" then
		rad = "麻"
	elseif radicale == "201" then
		rad = "黃"
	elseif radicale == "202" then
		rad = "黍"
	elseif radicale == "203" then
		rad = "黑"
	elseif radicale == "204" then
		rad = "黹"
	elseif radicale == "205" then
		rad = "黽"
	elseif radicale == "206" then
		rad = "鼎"
	elseif radicale == "207" then
		rad = "鼓"
	elseif radicale == "208" then
		rad = "鼠"
	elseif radicale == "209" then
		rad = "鼻"
	elseif radicale == "210" then
		rad = "齊"
	elseif radicale == "211" then
		rad = "齒"
	elseif radicale == "212" then
		rad = "龍"
	elseif radicale == "213" then
		rad = "龜"
	elseif radicale == "214" then
		rad = "龠"
	else error("radicale non riconosciuto! Inserisci solo il *numero* (da 1 a 214) corrispondente al radicale; trovi la lista in Appendice:Caratteri cinesi/Radicali")
end

	if tonumber(tratti) > 0 and tonumber(tratti) < 10 then 
		numerotratti = "0".. tratti.. " tratti"
	else
		numerotratti = tratti.. " tratti"
	end

	if tipo == "kanji" then
		cat = "Questa categoria raccoglia i composti del carattere <big><big>[[" .. carattere .. "#Giapponese|".. carattere .. "]]</big></big> in giapponese [[Categoria:Composti dei kanji|".. rad .. "]]"
	elseif tipo == "hanzi" then
		cat = "Questa categoria raccoglia i composti del carattere <big><big>[[" .. carattere .. "#Cinese|".. carattere .. "]]</big></big> in cinese [[Categoria:Composti degli hanzi|".. rad .. "]]"
	elseif tipo == "hanja" then
		cat = "Questa categoria raccoglia i composti del carattere <big><big>[[" .. carattere .. "#Coreano|".. carattere .. "]]</big></big> in coreano  [[Categoria:Composti degli hanja|".. rad .. "]]"
	else error("il parametro 'tipo' ammette solo 'hanzi', 'kanji' o 'hanja'")
	end
	
	link = "Per un elenco ragionato ed editabile degli stessi composti, si veda [[Appendice:Caratteri cinesi/Composti/" .. numerotratti .. "/".. carattere .. "]]"
	
	return
		cat .. "<br/><br/>".. link
	end

	return p