Module:ja-bungo-infl

Hello, you have come here looking for the meaning of the word Module:ja-bungo-infl. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:ja-bungo-infl, but we will also tell you about its etymology, its characteristics and you will know how to say Module:ja-bungo-infl in singular and plural. Everything you need to know about the word Module:ja-bungo-infl you have here. The definition of the word Module:ja-bungo-infl will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:ja-bungo-infl, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

This module is supposed to compose a wikitable containing Classical Japanese inflection information for templates.

It is used by {{ja-conj-bungo}}. It requires Module:ja.


local export = {}

local rm_spaces_hyphens = require("Module:ja").rm_spaces_hyphens
local kana_to_romaji = require("Module:Hrkt-translit").tr

function export.japanese_classical_conjugation(frame)
	local args = frame:getParent().args
	

	local function _i(t, i)
		if type(t) == 'table' then return t
		else return t end
	end

	local function behead(s)
		return mw.ustring.gsub(s, '', '', 1)
	end

	local function _l(s)
		return '<span class="Jpan" lang="ja-Jpan">]</span>'
	end

	local t = {
		 = {
			'か', 'き', 'く', 'く', 'け', 'け',
			 = { 'けり', 'きたり' }
		},
		 = {
			'が', 'ぎ', 'ぐ', 'ぐ', 'げ', 'げ',
			 = { 'げり', 'ぎたり' }
		},
		 = {
			'さ', 'し', 'す', 'す', 'せ', 'せ',
			 = { 'せり', 'したり' }
		},
		 = {
			'た', 'ち', 'つ', 'つ', 'て', 'て',
			 = { 'てり', 'ちたり' }
		},
		 = {
			'は', 'ひ', 'ふ', 'ふ', 'へ', 'へ',
			 = { 'へり', 'ひたり' }
		},
		 = {
			'ば', 'び', 'ぶ', 'ぶ', 'べ', 'べ',
			 = { 'べり', 'びたり' }
		},
		 = {
			'ま', 'み', 'む', 'む', 'め', 'め',
			 = { 'めり', 'みたり' }
		},
		 = {
			'ら', 'り', 'る', 'る', 'れ', 'れ',
			 = { 'れり', 'りたり' }
		},
		
		 = { 'き', 'き', 'く', 'くる', 'くれ', 'き.よ' },
		 = { 'ぎ', 'ぎ', 'ぐ', 'ぐる', 'ぐれ', 'ぎ.よ' },
		 = { 'じ', 'じ', 'ず', 'ずる', 'ずれ', 'じ.よ' },
		 = { 'ち', 'ち', 'つ', 'つる', 'つれ', 'ち.よ' },
		 = { 'ぢ', 'ぢ', 'づ', 'づる', 'づれ', 'ぢ.よ' },
		 = { 'ひ', 'ひ', 'ふ', 'ふる', 'ふれ', 'ひ.よ' },
		 = { 'び', 'び', 'ぶ', 'ぶる', 'ぶれ', 'び.よ' },
		 = { 'み', 'み', 'む', 'むる', 'むれ', 'み.よ' },
		 = { '.い', '.い', '.ゆ', '.ゆる', '.ゆれ', '.い.よ' },
		 = { 'り', 'り', 'る', 'るる', 'るれ', 'り.よ' },
		
		 = { '.え', '.え', '.う', '.うる', '.うれ', '.えよ' },
		 = { 'け', 'け', 'く', 'くる', 'くれ', 'けよ' },
		 = { 'げ', 'げ', 'ぐ', 'ぐる', 'ぐれ', 'げよ' },
		 = { 'せ', 'せ', 'す', 'する', 'すれ', 'せよ' },
		 = { 'ぜ', 'ぜ', 'ず', 'ずる', 'ずれ', 'ぜよ' },
		 = { 'て', 'て', 'つ', 'つる', 'つれ', 'てよ' },
		 = { 'で', 'で', 'づ', 'づる', 'づれ', 'でよ' },
		 = { 'ね', 'ね', 'ぬ', 'ぬる', 'ぬれ', 'ねよ' },
		 = { 'へ', 'へ', 'ふ', 'ふる', 'ふれ', 'へよ' },
		 = { 'べ', 'べ', 'ぶ', 'ぶる', 'ぶれ', 'べよ' },
		 = { 'め', 'め', 'む', 'むる', 'むれ', 'めよ' },
		 = { '.え', '.え', '.ゆ', '.ゆる', '.ゆれ', '.えよ' },
		 = { '.𛀁', '.𛀁', '.ゆ', '.ゆる', '.ゆれ', '.𛀁よ' },
		 = { 'れ', 'れ', 'る', 'るる', 'るれ', 'れよ' },
		 = { 'ゑ', 'ゑ', '.う', '.うる', '.うれ', 'ゑよ' },
		
		 = { 'き', 'き', 'きる', 'きる', 'きれ', 'き.よ' },
		 = { 'に', 'に', 'にる', 'にる', 'にれ', 'に.よ' },
		 = { 'ひ', 'ひ', 'ひる', 'ひる', 'ひれ', 'ひ.よ' },
		 = { 'み', 'み', 'みる', 'みる', 'みれ', 'み.よ' },
		 = { '.い', '.い', '.いる', '.いる', '.いれ', '.い.よ' },
		 = { 'ゐ', 'ゐ', 'ゐる', 'ゐる', 'ゐれ', 'ゐ.よ' },
		
		 = { 'け', 'け', 'ける', 'ける', 'けれ', 'けよ' },
		 = { 'くゑ', 'くゑ', 'くゑる', 'くゑる', 'くゑれ', 'くゑよ' },
		
		 = {
			'こ', 'き', 'く', 'くる', 'くれ', { 'こ', 'こよ' },
			 = { 'こし', 'きし' }
		},
		
		 = {
			'せ', 'し', 'す', 'する', 'すれ', 'せよ',
			 = { 'せり', 'したり' }
		},
		 = {
			'ぜ', 'じ', 'ず', 'ずる', 'ずれ', 'ぜよ',
			 = { 'ぜり', 'じたり' }
		},
		
		 = { 'な', 'に', 'ぬ', 'ぬる', 'ぬれ', 'ね' },
		
		 = { 'ら', 'り', 'り', 'る', 'れ', 'れ' },

		 = {
			{ 'く', 'から' }, { 'く', 'かり' }, 'し', { 'き', 'かる' }, 'けれ', 'かれ',
			 = 'く',  = 'から',  = 'く',  = 'かり', 
		},
		 = {
			{ 'しく', 'しから' }, { 'しく', 'しかり' }, 'し', { 'しき', 'しかる' }, 'しけれ', 'しかれ',
			 = 'しく',  = 'しから',  = 'しく',  = 'しかり', 
		},
		 = {
			{ 'じく', 'じから' }, { 'じく', 'じかり' }, 'じ', { 'じき', 'じかる' }, 'じけれ', 'じかれ',
			 = 'じく',  = 'じから',  = 'じく',  = 'じかり', 
		},
		 = {
			'なら', { 'に', 'なり' }, 'なり', 'なる', 'なれ', 'なれ',
			 = 'に',  = 'なり'
		},
		 = {
			'たら', { 'と', 'たり' }, 'たり', 'たる', 'たれ', 'たれ',
			 = 'と',  = 'たり',
		},
	}

	local t_note = {
		 = {  = 'Attributive form, as the terminal form (lemma) does not exist for this construction in this conjugation.' },

		 = {  = 'Often proscribed due to a redundancy of having 2 '.._l('あり')..'.' },

		 = { { 'Without auxiliary verb.', 'With auxiliary verb.' }, { 'Without auxiliary verb.', 'With auxiliary verb.' } },
		 = { { 'Without auxiliary verb.', 'With auxiliary verb.' }, { 'Without auxiliary verb.', 'With auxiliary verb.' } },
		 = { { 'Without auxiliary verb.', 'With auxiliary verb.' }, { 'Without auxiliary verb.', 'With auxiliary verb.' } },
		 = { nil, { 'Without auxiliary verb.', 'With auxiliary verb.' } },
		 = { nil, { 'Without auxiliary verb.', 'With auxiliary verb.' } },
	}

	local conj_name = {
		 = { '四段活用', 'カ行四段活用' },
		 = { '四段活用', 'ガ行四段活用' },
		 = { '四段活用', 'サ行四段活用' },
		 = { '四段活用', 'タ行四段活用' },
		 = { '四段活用', 'ハ行四段活用' },
		 = { '四段活用', 'バ行四段活用' },
		 = { '四段活用', 'マ行四段活用' },
		 = { '四段活用', 'ラ行四段活用' },
		
		 = { '上二段活用', 'カ行上二段活用' },
		 = { '上二段活用', 'ガ行上二段活用' },
		 = { '上二段活用', 'ザ行上二段活用' },
		 = { '上二段活用', 'タ行上二段活用' },
		 = { '上二段活用', 'ダ行上二段活用' },
		 = { '上二段活用', 'ハ行上二段活用' },
		 = { '上二段活用', 'バ行上二段活用' },
		 = { '上二段活用', 'マ行上二段活用' },
		 = { '上二段活用', 'ヤ行上二段活用' },
		 = { '上二段活用', 'ラ行上二段活用' },
		
		 = { '下二段活用', 'ア行下二段活用' },
		 = { '下二段活用', 'カ行下二段活用' },
		 = { '下二段活用', 'ガ行下二段活用' },
		 = { '下二段活用', 'サ行下二段活用' },
		 = { '下二段活用', 'ザ行下二段活用' },
		 = { '下二段活用', 'タ行下二段活用' },
		 = { '下二段活用', 'ダ行下二段活用' },
		 = { '下二段活用', 'ナ行下二段活用' },
		 = { '下二段活用', 'ハ行下二段活用' },
		 = { '下二段活用', 'バ行下二段活用' },
		 = { '下二段活用', 'マ行下二段活用' },
		 = { '下二段活用', 'ヤ行下二段活用' },
		 = { '下二段活用', 'ヤ行下二段活用' },
		 = { '下二段活用', 'ラ行下二段活用' },
		 = { '下二段活用', 'ワ行下二段活用' },
		
		 = { '上一段活用', 'カ行上一段活用' },
		 = { '上一段活用', 'ナ行上一段活用' },
		 = { '上一段活用', 'ハ行上一段活用' },
		 = { '上一段活用', 'マ行上一段活用' },
		 = { '上一段活用', 'ヤ行上一段活用' },
		 = { '上一段活用', 'ワ行上一段活用' },
		
		 = { '下一段活用', 'カ行下一段活用' },
		 = { '下一段活用', 'カ行下一段活用' },
		
		 = 'カ行変格活用',
		
		 = 'サ行変格活用',
		 = 'サ行変格活用',
		
		 = 'ナ行変格活用',
		
		 = 'ラ行変格活用',

		 = 'ク活用',
		 = 'シク活用',
		 = 'シク活用',
		 = 'ナリ活用',
		 = 'タリ活用',
	}

	local t_assumed_pagename_ending = {
		 = 'く',
		 = 'ぐ',
		 = 'す',
		 = 'つ',
		 = { 'ふ', 'う' },
		 = 'ぶ',
		 = 'む',
		 = 'る',
		
		 = { 'く', 'きる' },
		 = { 'ぐ', 'ぎる' },
		 = { 'ず', 'じる' },
		 = { 'つ', 'ちる' },
		 = { 'づ', 'ぢる', 'じる' },
		 = { 'ふ', 'いる', 'ひる' },
		 = { 'ぶ', 'びる' },
		 = { 'む', 'みる' },
		 = { 'ゆ', 'いる' },
		 = { 'りる', 'る' },
		
		 = { 'う', 'える' },
		 = { 'く', 'ける' },
		 = { 'ぐ', 'げる' },
		 = { 'す', 'せる' },
		 = { 'ず', 'ぜる' },
		 = { 'つ', 'てる' },
		 = { 'づ', 'でる' },
		 = { 'ぬ', 'ねる' },
		 = { 'ふ', 'える', 'へる' },
		 = { 'ぶ', 'べる' },
		 = { 'む', 'める' },
		 = { 'ゆ', 'える' },
		 = { 'ゆ', 'える', '𛀁る'},
		 = { 'れる', 'る' },
		 = { 'う', 'える', 'ゑる' },
		
		 = 'きる',
		 = 'にる',
		 = { 'ひる', 'いる' },
		 = 'みる',
		 = 'いる',
		 = { 'ゐる', 'いる' },
		
		 = 'ける',
		 = 'くゑる',
		
		 = { 'く', 'くる' },
		
		 = { 'す', 'する' },
		 = { 'ず', 'ずる', 'じる' },
		
		 = 'ぬ',
		
		 = { 'り', 'る' },

		 = { 'し', 'い' },
		 = { 'し', 'しい' },
		 = { 'じ', 'じい' },
		 = { 'なり', 'な' },
		 = { 'たり', 'と' },
	}

	local pagename = args or mw.title.getCurrentTitle().text

	local stem = args or args or args or ''
	local ctype = args or args or args or ''

	local kanji = args or args or args
	local suffix_in_kanji = args or args
	local lemma = args or args

	local function guess_kanji_from_pagename()
		
		local suf
		if type(t_assumed_pagename_ending) == 'table' then
			suf = t_assumed_pagename_ending
		else
			suf = { t_assumed_pagename_ending }
		end
		local lemma_ending

		if suffix_in_kanji then
			for _, v in ipairs(suf) do
				lemma_ending = behead(v)
				if lemma_ending ~= '' and string.sub(pagename, - string.len(lemma_ending)) == lemma_ending then
					kanji = kanji or string.sub(pagename, 1, - (string.len(lemma_ending) + 1))
					break
				end
			end
			kanji = kanji or pagename
			lemma = lemma or kanji .. behead(_i(t, 1))
		else
			for _, v in ipairs(suf) do
				lemma_ending = v
				if string.sub(pagename, - string.len(lemma_ending)) == lemma_ending then
					kanji = kanji or string.sub(pagename, 1, - (string.len(lemma_ending) + 1))
					break
				end
			end
			kanji = kanji or pagename
			lemma = lemma or kanji .. _i(t, 1)
		end

		return

	end

	if conj_name == nil then
		kanji = kanji or pagename
		lemma = lemma or pagename
	else
		guess_kanji_from_pagename()
	end

	local f_irr = args or args
	local f_adv = args or args
	local f_ter = args or args
	local f_adn = args or args
	local f_rea = args or args
	local f_imp = args or args

	local f_neg = args or args
	local f_conj_contr = args or args
	local f_conj_caus = args or args
	local f_conj_cond = args or args
	local f_t_pas_ki = args or args
	local f_t_pas_ker = args or args
	local f_t_per_t = args or args
	local f_t_per_n = args or args
	local f_t_percon = args or args
	local f_adverb = args or args
	local f_volit = args or args

	local f_irr__p = args
	local f_adv__p = args
	local f_ter__p = args
	local f_adn__p = args
	local f_rea__p = args
	local f_imp__p = args

	local f_neg__p = args
	local f_conj_contr__p = args
	local f_conj_caus__p = args
	local f_conj_cond__p = args
	local f_t_pas_ki__p = args
	local f_t_pas_ker__p = args
	local f_t_per_t__p = args
	local f_t_per_n__p = args
	local f_t_percon__p = args
	local f_adverb__p = args
	local f_volit__p = args

	local hide_key_constructions = args or args

	local notes = {}
	local notes_rev ={}
	local note_num = 0

	local function insert_note(note)
		local note_id
		note_id = notes_rev
		if note_id == nil then
			note_num = note_num + 1
			notes = note
			notes_rev = note_num
			note_id = note_num
		end
		return note_id
	end

	local function japanese_conj_row_classical_manual(form)

		local r1, r2, r3 = {}, {}, {}
		local form_no_note, kanji, kana, note

		local forms = {}

		local p1, p2
		local identical_kanji_kana = true

		string.gsub(form, '+', function(w) table.insert(forms, w) end)

		for _, form_single in ipairs(forms) do
			p1 = string.find(form_single, '?')
			if p1 then
				note = string.sub(form_single, p1 + 1)
				form_no_note = string.sub(form_single, 1, p1 - 1)
			else
				note = nil
				form_no_note = form_single
			end
	
			p2 = string.find(form_no_note, ':')
			if p2 then
				kanji = string.sub(form_no_note, 1, p2 - 1)
				kana = string.sub(form_no_note, p2 + 1)
			else
				kanji = form_no_note
				kana = form_no_note
			end

			identical_kanji_kana = identical_kanji_kana and kanji == kana

			if note then
				table.insert(r1,
					'<span class="Jpan" lang="ja-Jpan">'
					.. rm_spaces_hyphens(kanji)
					.. '</span><small><sup>['
					.. insert_note(note)
					.. ']</sup></small>')
			else
				table.insert(r1,
					'<span class="Jpan" lang="ja-Jpan">'
					.. rm_spaces_hyphens(kanji)
					.. '</span>')
			end
			table.insert(r2,
				'<span class="Jpan" lang="ja-Jpan">'
				.. rm_spaces_hyphens(kana)
				.. '</span>')
			table.insert(r3,
				'<span class="Latn" lang="ja-Latn">'
				.. kana_to_romaji(kana, "ja", nil, {hist = true})
				.. '</span>')
		end

		if identical_kanji_kana then
			return '| colspan ="2" |'
					.. table.concat(r1, '<br/>')
					.. '||'
					.. table.concat(r3, '<br/>')
		else
			return '||'
					.. table.concat(r1, '<br/>')
					.. '||'
					.. table.concat(r2, '<br/>')
					.. '||'
					.. table.concat(r3, '<br/>')
		end

	end

	local function japanese_conj_row_classical_auto(_stem, _kanji, _suffix, _suffix_in_kanji, _note, _tail)
		local result = {}
		
		if type(_suffix) ~= 'table' then
			if type(_suffix) == 'string' then
				_suffix = { _suffix }
			else
				return '-'
			end
		end
		_tail = _tail or ''

		if _suffix_in_kanji then
			if type(_note) == 'table' then
				for i, suf in ipairs(_suffix) do
					if _note then
						table.insert(result, _kanji .. behead(suf) .. _tail .. ':' .. _stem .. suf .. _tail .. '?' .. _note)
					else
						table.insert(result, _kanji .. behead(suf) .. _tail .. ':' .. _stem .. suf .. _tail)
					end
				end 
			elseif type(_note) == 'string' then
				for _, suf in ipairs(_suffix) do
					table.insert(result, _kanji .. behead(suf) .. _tail .. ':' .. _stem .. suf .. _tail .. '?' .. _note)
				end
			else
				for _, suf in ipairs(_suffix) do
					table.insert(result, _kanji .. behead(suf) .. _tail .. ':' .. _stem .. suf .. _tail)
				end
			end
		else
			if type(_note) == 'table' then
				for i, suf in ipairs(_suffix) do
					if _note then
						table.insert(result, _kanji .. suf .. _tail .. ':' .. _stem .. suf .. _tail .. '?' .. _note)
					else
						table.insert(result, _kanji .. suf .. _tail .. ':' .. _stem .. suf .. _tail)
					end
				end 
			elseif type(_note) == 'string' then
				for _, suf in ipairs(_suffix) do
					table.insert(result, _kanji .. suf .. _tail .. ':' .. _stem .. suf .. _tail .. '?' .. _note)
				end
			else
				for _, suf in ipairs(_suffix) do
					table.insert(result, _kanji .. suf .. _tail .. ':' .. _stem .. suf .. _tail)
				end
			end
		end

		return table.concat(result, ';')
	end

	f_irr = f_irr or japanese_conj_row_classical_auto(stem, kanji, _i(t, 1), suffix_in_kanji, _i(t_note, 1))
	f_adv = f_adv or japanese_conj_row_classical_auto(stem, kanji, _i(t, 2), suffix_in_kanji, _i(t_note, 2))
	f_ter = f_ter or japanese_conj_row_classical_auto(stem, kanji, _i(t, 3), suffix_in_kanji, _i(t_note, 3))
	f_adn = f_adn or japanese_conj_row_classical_auto(stem, kanji, _i(t, 4), suffix_in_kanji, _i(t_note, 4))
	f_rea = f_rea or japanese_conj_row_classical_auto(stem, kanji, _i(t, 5), suffix_in_kanji, _i(t_note, 5))
	f_imp = f_imp or japanese_conj_row_classical_auto(stem, kanji, _i(t, 6), suffix_in_kanji, _i(t_note, 6))

	if not hide_key_constructions and t then
		f_neg = f_neg or
			_i(t, 'neg') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 'neg'), suffix_in_kanji, _i(t_note, 'neg')) or
			japanese_conj_row_classical_auto(stem, kanji, _i(t, 'irr_2') or _i(t, 1), suffix_in_kanji, _i(t_note, 'neg'), 'ず')
		f_conj_contr = f_conj_contr or
			_i(t, 'conj_contr') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 'conj_contr'), suffix_in_kanji, _i(t_note, 'conj_contr')) or
			japanese_conj_row_classical_auto(stem, kanji, _i(t, 5), suffix_in_kanji, _i(t_note, 'conj_contr'), 'ど')
		f_conj_caus = f_conj_caus or
			_i(t, 'conj_caus') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 'conj_caus'), suffix_in_kanji, _i(t_note, 'conj_caus')) or
			japanese_conj_row_classical_auto(stem, kanji, _i(t, 5), suffix_in_kanji, _i(t_note, 'conj_caus'), 'ば')
		f_conj_cond = f_conj_cond or
			_i(t, 'conj_cond') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 'conj_cond'), suffix_in_kanji, _i(t_note, 'conj_cond')) or
			japanese_conj_row_classical_auto(stem, kanji, _i(t, 'irr_1') or _i(t, 1), suffix_in_kanji, _i(t_note, 'conj_cond'), 'ば')
		f_t_pas_ki = f_t_pas_ki or
			_i(t, 't_pas_ki') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 't_pas_ki'), suffix_in_kanji, _i(t_note, 't_pas_ki')) or
			japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adv_2') or _i(t, 2), suffix_in_kanji, _i(t_note, 't_pas_ki'), 'き')
		f_t_pas_ker = f_t_pas_ker or
			_i(t, 't_pas_ker') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 't_pas_ker'), suffix_in_kanji, _i(t_note, 't_pas_ker')) or
			japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adv_2') or _i(t, 2), suffix_in_kanji, _i(t_note, 't_pas_ker'), 'けり')
		if string.sub(ctype, 1, 3) == 'adj' then
			f_adverb = f_adverb or
				_i(t, 'adverb') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adverb'), suffix_in_kanji, _i(t_note, 'adverb')) or
				japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adv_1') or _i(t, 2), suffix_in_kanji, _i(t_note, 'adverb'))
		else
			f_t_per_t = f_t_per_t or
				_i(t, 't_per_t') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 't_per_t'), suffix_in_kanji, _i(t_note, 't_per_t')) or
				japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adv_2') or _i(t, 2), suffix_in_kanji, _i(t_note, 't_per_t'), 'つ')
			f_t_per_n = f_t_per_n or
				_i(t, 't_per_n') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 't_per_n'), suffix_in_kanji, _i(t_note, 't_per_n')) or
				japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adv_2') or _i(t, 2), suffix_in_kanji, _i(t_note, 't_per_n'), 'ぬ')
			f_t_percon = f_t_percon or
				_i(t, 't_percon') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 't_percon'), suffix_in_kanji, _i(t_note, 't_percon')) or
				japanese_conj_row_classical_auto(stem, kanji, _i(t, 'adv_2') or _i(t, 2), suffix_in_kanji, _i(t_note, 't_percon'), 'たり')
			f_volit = f_volit or
				_i(t, 'volit') and japanese_conj_row_classical_auto(stem, kanji, _i(t, 'volit'), suffix_in_kanji, _i(t_note, 'volit')) or
				japanese_conj_row_classical_auto(stem, kanji, _i(t, 'irr_1') or _i(t, 1), suffix_in_kanji, _i(t_note, 'volit'), 'む')
		end
	end

	f_irr = f_irr and f_irr__p and f_irr ..';'.. f_irr__p or f_irr or f_irr__p
	f_adv = f_adv and f_adv__p and f_adv ..';'.. f_adv__p or f_adv or f_adv__p
	f_ter = f_ter and f_ter__p and f_ter ..';'.. f_ter__p or f_ter or f_ter__p
	f_adn = f_adn and f_adn__p and f_adn ..';'.. f_adn__p or f_adn or f_adn__p
	f_rea = f_rea and f_rea__p and f_rea ..';'.. f_rea__p or f_rea or f_rea__p
	f_imp = f_imp and f_imp__p and f_imp ..';'.. f_imp__p or f_imp or f_imp__p
	f_neg = f_neg and f_neg__p and f_neg ..';'.. f_neg__p or f_neg or f_neg__p
	f_conj_contr = f_conj_contr and f_conj_contr__p and f_conj_contr ..';'.. f_conj_contr__p or f_conj_contr or f_conj_contr__p
	f_conj_caus = f_conj_caus and f_conj_caus__p and f_conj_caus ..';'.. f_conj_caus__p or f_conj_caus or f_conj_caus__p
	f_conj_cond = f_conj_cond and f_conj_cond__p and f_conj_cond ..';'.. f_conj_cond__p or f_conj_cond or f_conj_cond__p
	f_t_pas_ki = f_t_pas_ki and f_t_pas_ki__p and f_t_pas_ki ..';'.. f_t_pas_ki__p or f_t_pas_ki or f_t_pas_ki__p
	f_t_pas_ker = f_t_pas_ker and f_t_pas_ker__p and f_t_pas_ker ..';'.. f_t_pas_ker__p or f_t_pas_ker or f_t_pas_ker__p
	f_t_per_t = f_t_per_t and f_t_per_t__p and f_t_per_t ..';'.. f_t_per_t__p or f_t_per_t or f_t_per_t__p
	f_t_per_n = f_t_per_n and f_t_per_n__p and f_t_per_n ..';'.. f_t_per_n__p or f_t_per_n or f_t_per_n__p
	f_t_percon = f_t_percon and f_t_percon__p and f_t_percon ..';'.. f_t_percon__p or f_t_percon or f_t_percon__p

	local result = '<div class="NavFrame" style="border: 0; margin-bottom:0.1em">'
		.. '<div class="NavHead" align="left" style="font-size:105%; margin: 0; border: 1px solid var(--border-color-base, #a2a9b1); background-color: var(--wikt-palette-indigo-3, #e0defa);">'
		.. 'Classical conjugation of "<span class="Jpan" lang="ja-Jpan">'..rm_spaces_hyphens(lemma)..'</span>" '
		.. (conj_name and '('.._l(conj_name)..', see ].)</div>' or '(irregular)</div>')
		.. '<div class="NavContent" style="font-size:105%; border-top:0">\n'
		.. '{| class="wikitable" style="margin-top: 0; text-align: center; width: 100%; border-top:0" rules="all"\n|-\n'
		.. '! style="border-top:0" colspan="4" | Stem forms\n|-\n! style="width:20%;" |'
		.. 'Irrealis ('.._l('未然形')..')\n'
		.. japanese_conj_row_classical_manual(f_irr)
		.. '\n|-\n!Continuative ('.._l('連用形')..')\n'
		.. japanese_conj_row_classical_manual(f_adv)
		.. '\n|-\n!Terminal ('.._l('終止形')..')\n'
		.. japanese_conj_row_classical_manual(f_ter)
		.. '\n|-\n!Attributive ('.._l('連体形')..')\n'
		.. japanese_conj_row_classical_manual(f_adn)
		.. '\n|-\n!Realis ('.._l('已然形')..')\n'
		.. japanese_conj_row_classical_manual(f_rea)
		.. '\n|-\n!Imperative ('.._l('命令形')..')\n'
		.. japanese_conj_row_classical_manual(f_imp)
	
		.. (not hide_key_constructions and '\n|-\n! colspan="4" | Key constructions' or '')

		.. (f_neg and '\n|-\n! Negative\n' .. japanese_conj_row_classical_manual(f_neg) or '')
		.. (f_conj_contr and '\n|-\n! Contrasting conjunction\n' .. japanese_conj_row_classical_manual(f_conj_contr) or '')
		.. (f_conj_caus and '\n|-\n! Causal conjunction\n' .. japanese_conj_row_classical_manual(f_conj_caus) or '')
		.. (f_conj_cond and '\n|-\n! Conditional conjunction\n' .. japanese_conj_row_classical_manual(f_conj_cond) or '')
		.. (f_t_pas_ki and '\n|-\n! Past tense (firsthand knowledge)\n' .. japanese_conj_row_classical_manual(f_t_pas_ki) or '')
		.. (f_t_pas_ker and '\n|-\n! Past tense (secondhand knowledge)\n' .. japanese_conj_row_classical_manual(f_t_pas_ker) or '')
		.. (f_t_per_t and '\n|-\n! Perfect tense (conscious action)\n' .. japanese_conj_row_classical_manual(f_t_per_t) or '')
		.. (f_t_per_n and '\n|-\n! Perfect tense (natural event)\n' .. japanese_conj_row_classical_manual(f_t_per_n) or '')
		.. (f_t_percon and '\n|-\n! Perfect-continuative tense\n' .. japanese_conj_row_classical_manual(f_t_percon) or '')
		.. (f_adverb and '\n|-\n! Adverbial\n' .. japanese_conj_row_classical_manual(f_adverb) or '')
		.. (f_volit and '\n|-\n! Volitional\n' .. japanese_conj_row_classical_manual(f_volit) or '')

	if note_num > 0 then
		result = result .. '\n|-\n| style="text-align:left;" bgcolor="#FFFFFF" colspan="5" |<small>'
		for i, v in ipairs(notes) do
			result = result .. '<sup></sup>' .. v .. '<br/>'
		end
		result = result .. '</small>'
	end

	result = result .. '\n|}</div></div>'
	
	return result
end

return export