Module:User:Justinrleung/char-summary

This is a private module sandbox of Justinrleung, for his own experimentation. Items in this module may be added and removed at Justinrleung's discretion; do not rely on this module's stability.


--Based on [[Module:User:Wyang/char-summary]]
local export = {}

local match = mw.ustring.match

local char_list = "的一是不了人我在有他這中大來上國個到說們為子和你地出道也時年得就那要下以生會自著去之過家學對可她里后小麼心多天而能好都然沒日于起還發成事只作當想看文無開手十用主行方又如前所本見經頭面公同三已老從動兩長知民樣現分將外但身些與高意進把法此實回二理美點月明其種聲全工己話兒者向情部正名定女問力機給等几很業最間新甚打便位因重被走電四第門相次東政海口使教西再平真聽世氣信北少關并內加化由卻代軍產入先山五太水萬市眼體別處總纔場師書比住員九笑性通目華報立馬命張活難神數件安表原車白應路期叫死常提感金何更反合放做系計或司利受光王果親界及今京務制解各任至清物台象記邊共風戰干接它許八特覺望直服毛林題建南度統色字請交愛讓認算論佰吃義科怎元社術結六功指思非流每青管夫連遠資隊跟帶花快條院變聯言權往展該領傳近留紅治決周保達辦運武半候七必城父強步完革深區即求品士轉量空甚眾技輕程告江語英基派滿式李息寫呢識極令黃德收臉錢黨倒未持取設始版雙历越史商仟片容研像找友孩站廣改議形委早房音火際則首單據導影失拿網香似斯專石若兵弟誰校讀志飛觀爭究包組造落視濟喜離雖坐集編寶談府拉黑且隨格尽劍講布殺微怕母調局根曾准團段終樂切級克精哪官示冲竟乎男舉客證苦照注費足爾招群熱推晚響稱興待約陽哥驚嗎整支古漢突號絕選吧參刊亞复傷類備歡另港勢刻星斷陳掌農夜般唸价腦規底故省媽剛句顯消衣陸器確破具居批送澤緊幫線存願奇害增楊料州節左裝易著急久低歲需酒河初游嚴鐵族除份敢胡血企仍投聞斗紀腳右蘇標飯云病醫阿答土況境軟考娘村刀擊僅查引朝育續獨羅買戶護喝朋供責項背余希衛列圖室亂劉爺龍咱章席錯兄暗創排春须承案忙呼樹痛沉啊靈職鄉細訴態停印筆夏助福塊冷球姑划既質巴致灣演木韋怪圍靜旁園否副輯采食登夠賽米假較姐樓获孫宣穿詩歌速忽堂敵試謝央懷顧驗營止姓養麗屬景郭依威按惡慢座罪維漸勝藏皇街激異摘角瞧負施模草某銀露陣值班層修差味織藥館密亮律習田簡免毒歸波型屋換救寄帝退洋絲湖睡勞婦伯尼皮祖雄婚康評追哈絡店翻環禮跑超叶壓占均永烈獎婆趕富蘭錄畫遇頓藝普判源億素船繼尚嘴察雨優您險烟階擔散板钟訪妹伸佛限討臨吳搖跳曲練構玩玉犯廠肯協幸揮效齊封溫疑肉攻紙策充頂尋寧沙防抓例股賣順警夢劇善蒙票良范堅端靠雜貴怒稿拍率舊掉啦莫授守油恩積益縣哭罷庭窗揚忘午卡雪菜牌牛脫博丈彈洲松坏鄧鮮短畢置楚歐略智島抗妻抱載敗槍適虛預睛刺爹紛介括銷降魚奔忍宗盤耳野訊配禁索趙默徒架燈峰狀款移爸托洪升伙訂毫狐鎮床互套旅逃罵輸唱靖秘詞困淚熟財鬼骨申欲征私舞秋巨迎秀搞丁吸審遍牆朱聖避躍忌桌執悲域曉弄亡橋輩閃隱勁鬧恐呀付敬監廳庫震材冰醒慶綠腿述徐尊硬額誤借納折售遺暴缺迷魯探貨童緩偉君莊凡危燒彩搶控胸戲篇趣束謂概射課洞麻杯透郵榮懂擁獻洗休迫嘆狗偷陰汽拜橫鼓健厚簽丹洛喊蓉輪岸奶淡潮訓圓卷釋諸妙唯奪逐燕呆測浪抽蓋偏閱購途縱耶摸掛航擇恨舍拳竹唐譽乘弱檢宮儀旗含袁址擺奧番混滅握牙慮召猛寬盛核袋紹補典圈丰雅吉贊茶亦谷穩匯厲屆跡雷序寒附雞遭挑肩憶柔戴惜隔豪誠瑞減播麼針棋競臂挺操腰狂替梅固倫宋鋼諾殘延虎迅災悄岳喬川仇季吹糧聚譯珠叔謀礎仁損融輛凈敏伊仙巧零累享伴蕩珍勇末奮膽棄煩糊猶稅培抵僧鋒乃遙摩坦後眉餐慣憑冠抬碰幣啟碼冒汗俗灰督窮頗傾尖韓貿仿孤飄漫予紫側沿拔袖梁賞幕壁旦晨純閉涼掃尤炮碗貼插滾緣寺貝潤氏冬擴欄荒哲逼嚇堆撞郎倆藍閑辛鏡陪騎蛋促羊宜嘛顏貧幅駐萍污傑撲壯薩刑憂貌獄塞鳳孔觸戀豈森繁碎津俠隆遲輝狠析縮穴蕭怨磨伏辭泥齡徑鼻賴仰憤慕俄映詢慘麥宿倍粗騰稍截染烏愈崗柳鋪涉疾擋奉踏忠伍躲籍努朗箱裁帳兼彼霞豬悉扎勸薄築俊鞋距侵欣擠媒吐魂潔枝盈阻陷甲鄭鳴倘剩顆拖舒惠昏振戒喪焦爬凌慧偶晃桃赤爛騙措頁凶泰屍坡勒療塔塵躺殊慰坛甘咬拒彪炸井崇飲祝汪牢桂尾漂聊撒恰凝矛於賓緒彭肚匆描粉賊乏盾愁斜裂滑斐廢寂涌詳湯徹玄斤轟奸憐朵佳皆鳥邦扶毀聰辯瓶餓蛇捕搬沈楓舅幽魔琴掙聘彎墓欺悟蔣臣返違虧丟援赫魏耐佩酸盟胖傻繞哼秦屈辱昨瘦暫箭署赴遞猜潛鴻績耀塗割豆悶亭祥勵宇泛狼悔搭艦浮牽符肅奴爆姊幼夾邀瘋允惱租椅尺侍腐顫扭菲瓦擦辣奏殷埋摔盼吟渡衫跨醉艱掩荷蒼旋揭桑仗蓮鑽宏幻刃峽遼娃凱患障丐衡貓丑濤暖溜鍋奈罰拾濃鍵脈鎖鄰臭芳垂捉恢姆砍駕恭挨禍曹慈抖泉覽澳脏疼銅羞檔拋苗惑肥驅窩褲估胞柄闊杜勤舟帽瑪撤頻禪柯萊堪寸哀熊腹嘗敲勃巡盜籌扣池淺柴埃嫁枚稀雕厭瓜壽跌扯董錦鑒刷趨捐傲貫殿撥遜踢賠姿遷黎祭滴襲慌鞭茫逢屠昆柏駛咐植懼紐捷圳牲蹤叢漠銳喇乾霍濕睜仔吵悠溝墨串俱陶貢渾贏屁馳棒匹拼恆邪脆糟扮賢飾償拆纏攝擬滋嘿旨闖賀翠縫飽劫撫挖冊叛肖熙煉憲廟碧盒誼儲馮喚貪臥翼擾脅跪碑呵甜洒譜莎娜閣庸鵬覆玲侯抹盧礙綜丘暈攔燃昌吞嫌狄押舌琳霧曼恥柜攤削戚杆岩喂扔逝誕懸爽崔廷湊痴盆御酷艾唉姥籠顛姻攜愧芬穆扇郁擲怔芯鼠糾疆曰傅袍唇穌捧勾牧儒慨筋柱卑咽噸蟲繩廚冤漲皺疲賭饒礦暢煤腕噴遣浩翁咨鏢屏仲嘻吩棉孟撐爐泄葬搜添遵迪偽兆欠諒炎氛杖瞎釣腸披剝誓賺役泡逆矮吊填嘉燭廈夕衰液薛仆邁齒謹呈昂抄彌渴梯疏耗瞪斥誇蒂剪娶痕弗姚債妥璃掏剎晶衷膚鹿拓卓癥糖欽綿哩誘枯歇塑妨豫抑珊棍晉淋悅敦艷玻砸嚷盲辨葛罕矩泳宅貸膀捏頸踐脖賈轎脾堡嬌浙劣瀟賜陀蓄墳頌漏杭茅磚瞬鶴辟漁乖霸襄炒啞浦餅犧灘釘吁錫贈哄鈴頑殖鷹蔡催芙彬拚軌喲歉盯碩惹契愚帥惶憾懶姨喘獸陌罩獵嵩鹽飢凄喉宴腔翰膝陵蜂邏劈廉裹驕販繪崖辰涯戈坑遮擒蠻芷堵雇挽眠吻孝泊撕虹敘粹勉竭歪慎棵朴械溪莉斑磕寡循斬掠呂昔郊爵徽磁俯譚鼎拂俺嫂帕嗯凍婉桐駱潑匠艇謙妓菩廁俘毅嶺丫畏湘桶嗓煌鮑粒巷帘禿腊倉拐綁啥薦倪瑟廊鴨蜜診棚掀筒媳紋秒沾龐蹲騷歧艘芝嘩畝券趟巾淫謊寞灌籃妄擱侄廂叉俞伐宰瞞宙腫漆怖吾吼僑疊嘯罐肆裙泣脹賦熬趁咳愉懇辜肌嬰羽躬斃拘叮哇晴謎淮旺逸瓊姜嗚竄頒薪寨尿頰逮卜昭浸刮宛囑囊寓駁倡浴咕挪搏蓬晌渠兜喃夷滬賤魄舵晰僵糕裔秩倚塌恍鉤嘲傍裕煮乳勿豎懲睹株繡妖訝咖綱胎濱耕嗤艙娛匪鴉胃躁獅砰妮凜龜裸嫣甫窯塘纖寵鏈拱尹掘壩狹銘淳沐馨潘甩榜淵羡侮卿兀喧履猴枉襯畔凳緬弦畜粞溢摟乞旬縛燦輿雁倦酬韻媚堤攀竊嫩遂澄偵陝陋笨匙沫聳踩醬壺啡碌癢鄙殼貞霉蠢蘆胳矣焰脊囚輔賬佐僚雀撰耍枕撿涵逗糞朦肝蒸濫筷潰隸烤缸弓潭曠哎峻爪怯茂芒肢稻兔圾喻框繳蹈哨穎菊喀妝淹瓷淀蠟嚼劑逛驟暑襟廬蘋曬悼昧攏函朧膠抒乒諷歹旱葡惟揀耿廿樁乙謠墜滯孕誦梳岡肺丸霜汁紗銜膩甸啤坎稼禾愣脂萄撈攪屑傘蝶鑄軀稚腥藤陡燙梨哦漿僻坊焉隙淘垮滔釀鵝茲搗棟瑰敞癌纜爍玫詐煞膜焚粘摧疫幢汝毯挫紡朽錘兌辮墮笛覓蔽諧氓蔑沸藉卸熄扁炭慷篷眨譬叨蔬綢婿寥澆乓膏膛琢啪淑叭弊灶醋斌奠屯膨淪縷壤冶暇揉蘿翔蛛栗蔭譏蔥鞏粥齋迄幟菌鉛賄絨侶鍛譴洶敷宵諱鑼撼亨淌扛杉燥勻渺碟嵌沃剖姬綽嗦絞軸壘噪蘊邵咋坪傭卵晝憋奎捂煎瞅蝕熔蝦謬紳鑲聾募壟彥翹趴杏彰闡訟樞嶄蒲瀉儉橡溶瀑扒琛"

function export.main(frame)
	local result = {
		"Summary of entries for the most common Chinese characters. See [[Module:User:Justinrleung/char-summary]].",
		"\n{| class=\"wikitable sortable\" style=\"text-align:center; font-size:120%\"",
		"\n|-\n!n!!Character!!Han etym!!Oracle bone!!Bronze!!Bamboo and silk!!Big seal!!Small seal!!Mandarin!!Sichuanese!!Cantonese!!Taishanese!!Gan!!Sixian!!Meixian!!Jin!!Min Bei!!Min Dong!!Hokkien!!Teochew!!Leizhou!!Wu!!Xiang"
	}
	local tick, cross = "<span style=\"color:green\">✓</span>", "<span style=\"color:red\">✘</span>"
	local i = 0
	for cp in mw.ustring.gcodepoint(char_list, 1, 100) do
		local found = false
		i = i + 1
		local char_info = {}
		local ch = mw.ustring.char(cp)
		local content = mw.title.new(ch):getContent()
		local sections = mw.text.split(content, '%-%-%-%-')
		for _, section in ipairs(sections) do
			if match(section, "==Chinese==") then
				found = true
				table.insert(char_info, match(section, "{{Han ety[lm]}}") and tick or cross)
				table.insert(char_info, "[[File:" .. ch .. "-oracle.svg|30px]]")
				table.insert(char_info, "[[File:" .. ch .. "-bronze.svg|30px]]")
				table.insert(char_info, "[[File:" .. ch .. "-silk.svg|30px]]")
				table.insert(char_info, "[[File:" .. ch .. "-bigseal.svg|30px]]")
				table.insert(char_info, "[[File:" .. ch .. "-seal.svg|30px]]")
				table.insert(char_info, match(section, "|m=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|m%-s=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|c=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|c%-t=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|g=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "pfs=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "gd=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|j=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|mb=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|md=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|mn=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|mn%-t=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|mn%-l=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|w=[^%s|]") and tick or cross)
				table.insert(char_info, match(section, "|x=[^%s|]") and tick or cross)
				break
			end
		end
		table.insert(result, "\n|-\n!"..i.."\n![["..ch.."]]\n|"..
			(found and table.concat(char_info, "\n|") or "colspan=8|Chinese section not found"))
	end
	return table.concat(result, "")
end

return export