Module:Tja

H萌娘,万物皆可H的百科全书!
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
local module = {}

local getArgs = require('Module:Arguments').getArgs

local kanas = {
	{'a', 'あ', 'ア'},	--清音
	{'i', 'い', 'イ'},
	{'u', 'う', 'ウ'},
	{'e', 'え', 'エ'},
	{'o', 'お', 'オ'},
	{'ka', 'か', 'カ'},
	{'ki', 'き', 'キ'},
	{'ku', 'く', 'ク'},
	{'ke', 'け', 'ケ'},
	{'ko', 'こ', 'コ'},
	{'sa', 'さ', 'サ'},
	{'shi', 'し', 'シ'},
	{'su', 'す', 'ス'},
	{'se', 'せ', 'セ'},
	{'so', 'そ', 'ソ'},
	{'ta', 'た', 'タ'},
	{'chi', 'ち', 'チ'},
	{'tsu', 'つ', 'ツ'},
	{'te', 'て', 'テ'},
	{'to', 'と', 'ト'},
	{'na', 'な', 'ナ'},
	{'ni', 'に', 'ニ'},
	{'nu', 'ぬ', 'ヌ'},
	{'ne', 'ね', 'ネ'},
	{'no', 'の', 'ノ'},
	{'ha', 'は', 'ハ'},
	{'hi', 'ひ', 'ヒ'},
	{'fu', 'ふ', 'フ'},
	{'he', 'へ', 'ヘ'},
	{'ho', 'ほ', 'ホ'},
	{'ma', 'ま', 'マ'},
	{'mi', 'み', 'ミ'},
	{'mu', 'む', 'ム'},
	{'me', 'め', 'メ'},
	{'mo', 'も', 'モ'},
	{'ya', 'や', 'ヤ'},
	{'yu', 'ゆ', 'ユ'},
	{'yo', 'よ', 'ヨ'},
	{'ra', 'ら', 'ラ'},
	{'ri', 'り', 'リ'},
	{'ru', 'る', 'ル'},
	{'re', 'れ', 'レ'},
	{'ro', 'ろ', 'ロ'},
	{'wa', 'わ', 'ワ'},
	{'wo', 'を', 'ヲ'},
	
	{'n', 'ん', 'ン'},	--拨音
	
	{'ga', 'が', 'ガ'},	--浊音
	{'gi', 'ぎ', 'ギ'},
	{'gu', 'ぐ', 'グ'},
	{'ge', 'げ', 'ゲ'},
	{'go', 'ご', 'ゴ'},
	{'za', 'ざ', 'ザ'},
	{'ji', 'じ', 'ジ'},
	{'zu', 'ず', 'ズ'},
	{'ze', 'ぜ', 'ゼ'},
	{'zo', 'ぞ', 'ゾ'},
	{'da', 'だ', 'ダ'},
	{'ji', 'ぢ', 'ヂ'},
	{'zu', 'づ', 'ヅ'},
	{'de', 'で', 'デ'},
	{'do', 'ど', 'ド'},
	{'ba', 'ば', 'バ'},
	{'bi', 'び', 'ビ'},
	{'bu', 'ぶ', 'ブ'},
	{'be', 'べ', 'ベ'},
	{'bo', 'ぼ', 'ボ'},
	
	{'pa', 'ぱ', 'パ'},	--半浊音
	{'pi', 'ぴ', 'ピ'},
	{'pu', 'ぷ', 'プ'},
	{'pe', 'ぺ', 'ペ'},
	{'po', 'ぽ', 'ポ'},
	
	{'vu', 'ゔ', 'ヴ'},	--外来语
	
	{'wi', 'ゐ', 'ヰ'},	--方言、古语
	{'we', 'ゑ', 'ヱ'},
	{'-', 'ー', '—'}	--长音
	}
	
local youon = {
	{'kya', 'きゃ', 'キャ'},	--拗音
	{'gya', 'ぎゃ', 'ギャ'},
	{'sha', 'しゃ', 'シャ'},
	{'ja', 'じゃ', 'ジャ'},
	{'cha', 'ちゃ', 'チャ'},
	{'ja', 'ぢゃ', 'ヂャ'},
	{'nya', 'にゃ', 'ニャ'},
	{'hya', 'ひゃ', 'ヒャ'},
	{'bya', 'びゃ', 'ビャ'},
	{'pya', 'ぴゃ', 'ピャ'},
	{'mya', 'みゃ', 'ミャ'},
	{'rya', 'りゃ', 'リャ'},
	{'kyu', 'きゅ', 'キュ'},
	{'gyu', 'ぎゅ', 'ギュ'},
	{'shu', 'しゅ', 'シュ'},
	{'ju', 'じゅ', 'ジュ'},
	{'chu', 'ちゅ', 'チュ'},
	{'ju', 'ぢゅ', 'ヂュ'},
	{'nyu', 'にゅ', 'ニュ'},
	{'hyu', 'ひゅ', 'ヒュ'},
	{'byu', 'びゅ', 'ビュ'},
	{'pyu', 'ぴゅ', 'ピュ'},
	{'myu', 'みゅ', 'ミュ'},
	{'ryu', 'りゅ', 'リュ'},
	{'kyo', 'きょ', 'キョ'},
	{'gyo', 'ぎょ', 'ギョ'},
	{'sho', 'しょ', 'ショ'},
	{'jo', 'じょ', 'ジョ'},
	{'cho', 'ちょ', 'チョ'},
	{'jo', 'ぢょ', 'ヂョ'},
	{'nyo', 'にょ', 'ニョ'},
	{'hyo', 'ひょ', 'ヒョ'},
	{'byo', 'びょ', 'ビョ'},
	{'pyo', 'ぴょ', 'ピョ'},
	{'myo', 'みょ', 'ミョ'},
	{'ryo', 'りょ', 'リョ'},
	
	{'yi', 'いぃ', 'イィ'},	--扩展假名,https://en.wikipedia.org/wiki/Hepburn_romanization#Extended_katakana
	{'ye', 'いぇ', 'イェ'},
	{'wa', 'うぁ', 'ウァ'},
	{'wi', 'うぃ', 'ウィ'},
	{'wu', 'うぅ', 'ウゥ'},
	{'we', 'うぇ', 'ウェ'},
	{'wo', 'うぉ', 'ウォ'},
	{'wyu', 'うゅ', 'ウュ'},
	{'va', 'ゔぁ', 'ヴァ'},
	{'vi', 'ゔぃ', 'ヴィ'},
	{'ve', 'ゔぇ', 'ヴェ'},
	{'vo', 'ゔぉ', 'ヴォ'},
	{'vya', 'ゔゃ', 'ヴャ'},
	{'vyu', 'ゔゅ', 'ヴュ'},
	{'vye', 'ゔぃぇ', 'ウィェ'},
	{'vyo', 'ゔょ', 'ヴョ'},
	{'kye', 'きぇ', 'キェ'},
	{'gye', 'ぎぇ', 'ギェ'},
	{'kwa', 'くぁ', 'クァ'},
	{'kwi', 'くぃ', 'クィ'},
	{'kwe', 'くぇ', 'クェ'},
	{'kwo', 'くぉ', 'クォ'},
	{'kwa', 'くゎ', 'クヮ'},
	{'gwa', 'ぐぁ', 'グァ'},
	{'gwi', 'ぐぃ', 'グィ'},
	{'gwe', 'ぐぇ', 'グェ'},
	{'gwo', 'ぐぉ', 'グォ'},
	{'gwa', 'ぐゎ', 'グヮ'},
	{'she', 'しぇ', 'シェ'},
	{'je', 'じぇ', 'ジェ'},
	{'si', 'すぃ', 'スィ'},
	{'zi', 'ずぃ', 'ズィ'},
	{'che', 'ちぇ', 'チェ'},
	{'tsa', 'つぁ', 'ツァ'},
	{'tsi', 'つぃ', 'ツィ'},
	{'tse', 'つぇ', 'ツェ'},
	{'tso', 'つぉ', 'ツォ'},
	{'tsyu', 'つゅ', 'ツュ'},
	{'ti', 'てぃ', 'ティ'},
	{'tu', 'とぅ', 'トゥ'},
	{'tyu', 'てゅ', 'テュ'},
	{'di', 'でぃ', 'ディ'},
	{'du', 'どぅ', 'ドゥ'},
	{'dyu', 'でゅ', 'デュ'},
	{'nye', 'にぇ', 'ニェ'},
	{'hye', 'ひぇ', 'ヒェ'},
	{'bye', 'びぇ', 'ビェ'},
	{'pye', 'ぴぇ', 'ピェ'},
	{'fa', 'ふぁ', 'ファ'},
	{'fi', 'ふぃ', 'フィ'},
	{'fe', 'ふぇ', 'フェ'},
	{'fo', 'ふぉ', 'フォ'},
	{'fya', 'ふゃ', 'フャ'},
	{'fyu', 'ふゅ', 'フュ'},
	{'fye', 'ふぃぇ', 'フィェ'},
	{'fyo', 'ふょ', 'フョ'},
	{'hu', 'ほぅ', 'ホゥ'},
	{'mye', 'みぇ', 'ミェ'},
	{'rye', 'りぇ', 'リェ'},
	{'va', 'わ゙', 'ヷ'},
	{'vi', 'ゐ゙', 'ヸ'},
	{'ve', 'ゑ゙', 'ヹ'},
	{'vo', 'を゙', 'ヺ'},
}

local hebon = {
	{'kyā', 'きゃあ', 'キャア'},
	{'gyā', 'ぎゃあ', 'ギャア'},
	{'shā', 'しゃあ', 'シャア'},
	{'jā', 'じゃあ', 'ジャア'},
	{'chā', 'ちゃあ', 'チャア'},
	{'jā', 'ぢゃあ', 'ヂャア'},
	{'nyā', 'にゃあ', 'ニャア'},
	{'hyā', 'ひゃあ', 'ヒャア'},
	{'byā', 'びゃあ', 'ビャア'},
	{'pyā', 'ぴゃあ', 'ピャア'},
	{'myā', 'みゃあ', 'ミャア'},
	{'ryā', 'りゃあ', 'リャア'},
	{'kyū', 'きゅう', 'キュウ'},
	{'gyū', 'ぎゅう', 'ギュウ'},
	{'shū', 'しゅう', 'シュウ'},
	{'jū', 'じゅう', 'ジュウ'},
	{'chū', 'ちゅう', 'チュウ'},
	{'jū', 'ぢゅう', 'ヂュウ'},
	{'nyū', 'にゅう', 'ニュウ'},
	{'hyū', 'ひゅう', 'ヒュウ'},
	{'byū', 'びゅう', 'ビュウ'},
	{'pyū', 'ぴゅう', 'ピュウ'},
	{'myū', 'みゅう', 'ミュウ'},
	{'ryū', 'りゅう', 'リュウ'},
	{'kyō', 'きょう', 'キョウ'},
	{'gyō', 'ぎょう', 'ギョウ'},
	{'shō', 'しょう', 'ショウ'},
	{'jō', 'じょう', 'ジョウ'},
	{'chō', 'ちょう', 'チョウ'},
	{'jō', 'ぢょう', 'ヂョウ'},
	{'nyō', 'にょう', 'ニョウ'},
	{'hyō', 'ひょう', 'ヒョウ'},
	{'byō', 'びょう', 'ビョウ'},
	{'pyō', 'ぴょう', 'ピョウ'},
	{'myō', 'みょう', 'ミョウ'},
	{'ryō', 'りょう', 'リョウ'}
}

local sutegana = {
	{'la', 'ぁ', 'ァ'},	--小写假名
	{'li', 'ぃ', 'ィ'},
	{'lu', 'ぅ', 'ゥ'},
	{'le', 'ぇ', 'ェ'},
	{'lo', 'ぉ', 'ォ'},
	
	{'ltsu', 'っ', 'ッ'},
	
	{'lka', 'ゕ', 'ヵ'},
	{'lke', 'ゖ', 'ヶ'},
	
	{'lya', 'ゃ', 'ャ'},
	{'lyu', 'ゅ', 'ュ'},
	{'lyo', 'ょ', 'ョ'},
	
	{'lwa', 'ゎ', 'ヮ'},
	
	{'lku', 'ㇰ'},	--阿伊努语,朝鲜语和台湾话假名扩展,http://www.geocities.jp/aynuitak/kotoeri4_kanahenkan.htm
	{'lshi', 'ㇱ'},
	{'lsu', 'ㇲ'},
	{'lto', 'ㇳ'},
	{'ln', 'ㇴ'},
	{'lha', 'ㇵ'},
	{'lhi', 'ㇶ'},
	{'lfu', 'ㇷ'},
	{'lhe', 'ㇸ'},
	{'lho', 'ㇹ'},
	{'lp', 'ㇷ゚'},
	{'lm', 'ㇺ'},
	{'lra', 'ㇻ'},
	{'lri', 'ㇼ'},
	{'lru', 'ㇽ'},
	{'lre', 'ㇾ'},
	{'lro', 'ㇿ'}
}

local inputSub = {	--输入辅助,该table中的替换规则在inputKana中具有最高优先级
	{'yi', 'い', 'イ'},
	{'wu', 'う', 'ウ'},
	{'wi', 'ゐ', 'ヰ'},
	{'we', 'ゑ', 'ヱ'},
	{'kwa', 'くぁ', 'クァ'},
	{'gwa', 'ぐぁ', 'グァ'},
	{'si', 'し', 'シ'},
	{'ji', 'じ', 'ジ'},
	{'zi', 'じ', 'ジ'},
	{'zu', 'ず', 'ズ'},
	{'ja', 'じゃ', 'ジャ'},
	{'ju', 'じゅ', 'ジュ'},
	{'jo', 'じょ', 'ジョ'},
	{'ti', 'ち', 'チ'},
	{'tu', 'つ', 'ツ'},
	{'tyu', 'ちゅ', 'チュ'},
	{'di', 'ぢ', 'ヂ'},
	{'du', 'づ', 'ヅ'},
	{'dyu', 'ぢゅ', 'ヂュ'},
	{'hu', 'ふ', 'フ'},
	{'va', 'ゔぁ', 'ヴァ'},
	{'vi', 'ゔぃ', 'ヴィ'},
	{'ve', 'ゔぇ', 'ヴェ'},
	{'vo', 'ゔぉ', 'ヴォ'},
	{'vye', 'ゔぇ', 'ヴェ'},
	{'wa', 'わ', 'ワ'},
	{'wo', 'を', 'ヲ'},
	
	{'wha', 'うぁ', 'ウァ'},	--罗马字输入表扩展,https://support.microsoft.com/ja-jp/help/883232
	{'whi', 'うぃ', 'ウィ'},
	{'whu', 'う', 'ウ'},
	{'whe', 'うぇ', 'ウェ'},
	{'who', 'うぉ', 'ウォ'},
	
	{'ca', 'か', 'カ'},
	{'cu', 'く', 'ク'},
	{'qu', 'く', 'ク'},
	{'co', 'こ', 'コ'},
	{'kyi', 'きぃ', 'キィ'},
	{'qya', 'くゃ', 'クャ'},
	{'qyu', 'くゅ', 'クュ'},
	{'qyo', 'くょ', 'クョ'},
	{'qwa', 'くぁ', 'クァ'},
	{'qa', 'くぁ', 'クァ'},
	{'qwi', 'くぃ', 'クィ'},
	{'qyi', 'くぃ', 'クィ'},
	{'qi', 'くぃ', 'クィ'},
	{'qwu', 'くぅ', 'クゥ'},
	{'kwu', 'くぅ', 'クゥ'},
	{'qwe', 'くぇ', 'クェ'},
	{'qye', 'くぇ', 'クェ'},
	{'qe', 'くぇ', 'クェ'},
	{'qwo', 'くぉ', 'クォ'},
	{'qo', 'くぉ', 'クォ'},
	{'gyi', 'ぎぃ', 'ギィ'},
	{'gwu', 'ぐぅ', 'グゥ'},
	
	{'ci', 'し', 'シ'},
	{'ce', 'せ', 'セ'},
	{'sya', 'しゃ', 'シャ'},
	{'syi', 'しぃ', 'シィ'},
	{'syu', 'しゅ', 'シュ'},
	{'sye', 'しぇ', 'シェ'},
	{'syo', 'しょ', 'ショ'},
	{'swa', 'すぁ', 'スァ'},
	{'swi', 'すぃ', 'スィ'},
	{'swu', 'すぅ', 'スゥ'},
	{'swe', 'すぇ', 'スェ'},
	{'swo', 'すぉ', 'スォ'},
	{'zya', 'じゃ', 'ジャ'},
	{'jya', 'じゃ', 'ジャ'},
	{'zyi', 'じぃ', 'ジィ'},
	{'jyi', 'じぃ', 'ジィ'},
	{'zyu', 'じゅ', 'ジュ'},
	{'jyu', 'じゅ', 'ジュ'},
	{'zye', 'じぇ', 'ジェ'},
	{'jye', 'じぇ', 'ジェ'},
	{'zyo', 'じょ', 'ジョ'},
	{'jyo', 'じょ', 'ジョ'},
	
	{'tya', 'ちゃ', 'チャ'},
	{'cya', 'ちゃ', 'チャ'},
	{'tyi', 'ちぃ', 'チィ'},
	{'cyi', 'ちぃ', 'チィ'},
	{'cyu', 'ちゅ', 'チュ'},
	{'tye', 'ちぇ', 'チェ'},
	{'cye', 'ちぇ', 'チェ'},
	{'tyo', 'ちょ', 'チョ'},
	{'cyo', 'ちょ', 'チョ'},
	{'tha', 'てゃ', 'テャ'},
	{'thi', 'てぃ', 'ティ'},
	{'thu', 'てゅ', 'テュ'},
	{'the', 'てぇ', 'テェ'},
	{'tho', 'てょ', 'テョ'},
	{'twa', 'とぁ', 'トァ'},
	{'twi', 'とぃ', 'トィ'},
	{'twu', 'とぅ', 'トゥ'},
	{'twe', 'とぇ', 'トェ'},
	{'two', 'とぉ', 'トォ'},
	{'dya', 'ぢゃ', 'ヂャ'},
	{'dyi', 'ぢぃ', 'ヂィ'},
	{'dye', 'ぢぇ', 'ヂェ'},
	{'dyo', 'ぢょ', 'ヂョ'},
	{'dha', 'でゃ', 'デャ'},
	{'dhi', 'でぃ', 'ディ'},
	{'dhu', 'でゅ', 'デュ'},
	{'dhe', 'でぇ', 'デェ'},
	{'dho', 'でょ', 'デョ'},
	{'dwa', 'どぁ', 'ドァ'},
	{'dwi', 'どぃ', 'ドィ'},
	{'dwu', 'どぅ', 'ドゥ'},
	{'dwe', 'どぇ', 'ドェ'},
	{'dwo', 'どぉ', 'ドォ'},
	
	{'nyi', 'にぃ', 'ニィ'},
	
	{'hyi', 'ひぃ', 'ヒィ'},
	{'fwa', 'ふぁ', 'ファ'},
	{'fwi', 'ふぃ', 'フィ'},
	{'fyi', 'ふぃ', 'フィ'},
	{'fwu', 'ふぅ', 'フゥ'},
	{'fwe', 'ふぇ', 'フェ'},
	{'fye', 'ふぇ', 'フェ'},
	{'fwo', 'ふぉ', 'フォ'},
	{'byi', 'びぃ', 'ビィ'},
	{'vyi', 'ゔぃ', 'ヴィ'},
	{'pyi', 'ぴぃ', 'ピィ'},
	
	{'myi', 'みぃ', 'ミィ'},
	
	{'ryi', 'りぃ', 'リィ'},
	
	{'nn', 'ん', 'ン'},
	{'xn', 'ん', 'ン'},
	
	{'xa', 'ぁ', 'ァ'},	--小写假名输入扩展
	{'xi', 'ぃ', 'ィ'},
	{'lyi', 'ぃ', 'ィ'},
	{'xyi', 'ぃ', 'ィ'},
	{'xu', 'ぅ', 'ゥ'},
	{'xe', 'ぇ', 'ェ'},
	{'lye', 'ぇ', 'ェ'},
	{'xye', 'ぇ', 'ェ'},
	{'xo', 'ぉ', 'ォ'},
	
	{'xka', 'ゕ', 'ヵ'},
	{'xke', 'ゖ', 'ヶ'},
	
	{'ltu', 'っ', 'ッ'},
	{'xtu', 'っ', 'ッ'},
	{'xtsu', 'っ', 'ッ'},
	
	{'xya', 'ゃ', 'ャ'},
	{'xyu', 'ゅ', 'ュ'},
	{'xyo', 'ょ', 'ョ'},
	
	{'xwa', 'ゎ', 'ヮ'},
	
	{'xku', 'ㇰ'},	--阿伊努语,朝鲜语和台湾话假名输入扩展
	{'xshi', 'ㇱ'},
	{'lsi', 'ㇱ'},
	{'xsi', 'ㇱ'},
	{'xsu', 'ㇲ'},
	{'xto', 'ㇳ'},
	{'xn', 'ㇴ'},
	{'lnu', 'ㇴ'},
	{'xnu', 'ㇴ'},
	{'xha', 'ㇵ'},
	{'xhi', 'ㇶ'},
	{'xfu', 'ㇷ'},
	{'lhu', 'ㇷ'},
	{'xhu', 'ㇷ'},
	{'xhe', 'ㇸ'},
	{'xho', 'ㇹ'},
	{'xp', 'ㇷ゚'},
	{'lpu', 'ㇷ゚'},
	{'xpu', 'ㇷ゚'},
	{'xm', 'ㇺ'},
	{'lmu', 'ㇺ'},
	{'xmu', 'ㇺ'},
	{'xra', 'ㇻ'},
	{'xri', 'ㇼ'},
	{'xru', 'ㇽ'},
	{'xre', 'ㇾ'},
	{'xro', 'ㇿ'}
}

function _main(args)
	local roma = args[1]
	
	local space = ''
	if args['s'] == '1' then
		space = ' '	
	end
	
	roma = string.gsub(roma, "'", '/_delimit_/')
	
	for i=1, mw.ustring.len(roma) do
	local kana = mw.ustring.sub(roma, i, i)
	
	if mw.ustring.find(kana, '[っッんン]') then
		local next = mw.ustring.sub(roma, i + 1, i + 1)
		for k, v in ipairs(kanas) do
			for key, val in ipairs(v) do
				if kana == 'っ' or kana == 'ッ' then
					if next == val then
						local nextRomaFirst = string.sub(v[1], 1, 1)
						if string.find(nextRomaFirst, '[^an]') then
				  		roma = mw.ustring.gsub(roma, '[っッ]', nextRomaFirst, 1)
						end
					end
				end
			end
		end
	end
	end
	
	for i=1, mw.ustring.len(roma) do
		local kana = mw.ustring.sub(roma, i, i)
	local next = mw.ustring.sub(roma, i + 1, i + 1)
		if kana == 'ん' or kana == 'ン' then
			if mw.ustring.find(next, '[あいうえおアイウエオやゆよヤユヨ]') then
				local left = mw.ustring.sub(roma, 1, i - 1)
				local right = mw.ustring.sub(roma, i, -1)
				right = mw.ustring.gsub(right, '[んン]', "n'", 1)
				roma = left..right
			end
		end
	end
	
	function iter(str, table)
	for k, v in ipairs(table) do
		for ind, val in ipairs(v) do
			repeat 
				if ind == 1 then break end 
				str = mw.ustring.gsub(str, val, v[1]..space)
			until true
		end
	end
	return str
	end
	
	if args['s'] ~= '1' then
		roma = iter(roma, hebon)
	end
	roma = iter(roma, youon)
	roma = iter(roma, kanas)
	
	if args['s'] == '1' then
		roma = string.reverse(roma):gsub(space, '', 1):reverse()
	end

	roma = string.gsub(roma, 'cchi', 'tchi'):gsub('ccha', 'tcha'):gsub('cchu', 'tchu'):gsub('ccho', 'tcho')
	roma = mw.ustring.gsub(roma, '[っッ]', '')
	roma = mw.ustring.gsub(roma, 'a%-', 'ā'):gsub('i%-', 'ī'):gsub('u%-', 'ū'):gsub('e%-', 'ē'):gsub('o%-', 'ō')
	:gsub('aa', 'ā'):gsub('uu', 'ū'):gsub('ee', 'ē'):gsub('ou', 'ō'):gsub('oo', 'ō')
	roma = string.gsub(roma, '/_delimit_/', '')
	
	return roma
end

function _inputKana(args)
	for i, v in ipairs(args) do
		args[i] = mw.text.split(v, ' ')
	end
	
	function iter(frag, index, roma, tbe)
		for i, v in ipairs(tbe) do
			for i, value in ipairs(v) do
				if roma == value[1] then
					if frag[1] ~= 'k' then
						frag[index] = value[2]
					else
						frag[index] = value[3] or value[2]
					end
					return
				end
			end
		end
	end
	
	for i, frag in ipairs(args) do
		for index, roma in ipairs(frag) do
			iter(frag, index, roma, {
				inputSub, youon, kanas, sutegana
			})
		end
	end
	
	local str = ''
	for i, v in ipairs(args) do
		for i, v in ipairs(v) do
			str = str..v
		end
	end
	str = mw.ustring.gsub(str, '—', 'ー'):gsub('k', '')
	return str
end

function module.main(frame)
	local args = getArgs(frame, {wrappers='Template:Tja'})
	return _main(args)
end

function module.inputKana(frame)
	local args = getArgs(frame)
	return _inputKana(args)	
end

return module