#!/usr/bin/lua
--[[
A bemeno fajl sorai:
cim	\t	tobbi_parameter	\t

cim a kert_cikk elso parametere ugy, ahogy ott leirtak
tobbi_parameter parnev=ertek|... alaku, egy string az osszes tobbi parameternek
]]


function b1hossz(str)		-- vissza: az elso betu hossza bajtban es az elso betu
if (str or '') == '' then return 0, nil end
local elso = string.byte(str,1,1)
if elso >= 240
then	return 4, string.sub(str,1,4)
elseif elso >= 224
then	return 3, string.sub(str,1,3)
elseif elso >= 192
then	return 2, string.sub(str,1,2)
else	return 1, string.sub(str,1,1)	-- az elso byte nem eshetik 128..191-be
end	-- if vege
end	-- b1hossz vege

--				Betutipusok

nagytomb = {}	-- ekezetes nagybetuk
nagytomb["á"] = 'Á' nagytomb["é"] = 'É' nagytomb["í"] = 'Í'
nagytomb["ó"] = 'Ó' nagytomb["ö"] = 'Ö' nagytomb["ő"] = 'Ő'
nagytomb["ú"] = 'Ú' nagytomb["ü"] = 'Ü' nagytomb["ű"] = 'Ű'

tomb7 = {}	-- rendezesi ekvivalencia
tomb7["Á"] = 'A' tomb7["Ä"] = 'A' tomb7["Đ"] = 'D'
tomb7["Ə"] = 'E' tomb7["É"] = 'E' tomb7["Í"] = 'I' tomb7["Ł"] = 'L'
tomb7["Ó"] = 'O' tomb7["Ő"] = 'Ö' tomb7["Ş"] = 'S' tomb7["Ș"] = 'S' tomb7["Š"] = 'S'
tomb7["Ú"] = 'U' tomb7["Ű"] = 'Ü'

nembetu = {}	-- a rendezeskor a cim elejerol kihagyando karakterek
--nembetu['('] = true
nembetu['„'] = true

function nagy1betu(str)
local elso  = 1
local hossz = 0
repeat	elso = elso + hossz	-- megkeressuk az elso betut
	hossz, betu = b1hossz(string.sub(str,elso))
	--print(elso,hossz,betu,nembetu[betu])
until not( hossz == 1 and string.match(betu,'[%p%s]') or nembetu[betu] )
if not betu then return nil, nil end;

if hossz > 1	-- nagybeture alakitjuk az elso betut
then	nagybetu = nagytomb[betu] or betu
else	nagybetu = string.upper(betu)
end

if elso > 1 then ret = string.sub(str,1,elso-1) else ret = '' end
return ret..nagybetu..string.sub(str,elso+hossz), tomb7[nagybetu] or nagybetu
end

--[[
txt = {}
txt = { "Z", "zala", "Árenda", "ék", "„édes", "(záró)", "? (film)" }
for k,v in pairs(txt)
do	print(v,nagy1betu(v))
end
]]

--		Foprogram

elozo = nil
for sor in io.lines()
do	cim = string.match(sor,'^([^\t]+)\t')		-- kert_cikk elso parametere
	if cim
	then	cikk, betu = nagy1betu(cim)			-- az elso betut nagybeture alakitjuk

		if elozo ~= betu 		-- van-e betuvaltas
		then	print('\n== '..betu..' ==')
			elozo = betu
		end

		tobbi = string.gsub(string.match(sor,'^[^\t]+\t(.*)$') or '','\t','')
		if tobbi ~= '' then tobbi = '|'..tobbi end
		print('{{kért cikk|'..cikk..tobbi..'}} [[Speciális:Mi_hivatkozik_erre/'..cim..'|←]]')
	end
end
