#/usr/bin/python2.7
#-*- coding: utf-8 -*-

import pywikibot, re

# seccions de llengua ordenades per nom
llengues = [u"caràcter","mul","ca","csc","roa-oca"] 
llenguesA = ["af","ay","gsw","sq","de","goh","hsb","alp","aie","amk","akg","en","ase","ang","ar","arz","an","hy","roa-rup","ast","tay","kud","az"]
llenguesB = ["nds","dsb","ba","bal","bjn","bm","eu","bar","bem","bn","bcl","my","be","bh","bcl","bi","smk","bs","br","bug","bg","bns"]
llenguesC = ["kab","ks","csb","es","osp","ceb","chr","ko","kw","co","gcf","gcr","ht","hr"]
llenguesD = ["da","dv"]
llenguesE = ["sco","sk","sl","eo","et","ee","ext"]
llenguesF = ["fo","fi","cri","fr","fsl","fro","frm","frp","fy","frr","fur","ff"]
llenguesG = ["gd","gag","sdn","gl","cy","gan","cab","ka","el","grc","gn","gu"]
llenguesH = ["ha","haw","he","hil","hi","hit","hu"]
llenguesI = ["xib","io","ig","ine","id","ia","iu","yo","ga","is","it"]
llenguesJ = ["ja","jv","yi"]
llenguesK = ["caw","kn","cak","kk","ksx","km","rw","ky","tlh","kok","ku"]
llenguesL = ["lld","lv","li","ln","lt","la","loj","lu","lb"]
llenguesM = ["mk","ms","ml","mt","gv","mi","mr","mdf","mn"]
llenguesN = ["nah","nhn","nci","nl","ne","new","no","nn"]
llenguesO = ["oc","pro","os"]
llenguesP = ["ps","pa","pap","fa","pl","pt"]
llenguesQ = ["qu"]
llenguesR = ["ro","rom","ru"]
llenguesS = ["smj","sm","sgs","sa","sr","sh","scn","si","so","su","sw","sv","swl","sux"]
llenguesT = ["tg","tl","ty","th","ta","tt","crh","te","tet","bo","tr","cs","mrj"]
llenguesU = ["uk","udm","ug","ur","uz"]
llenguesV = ["wa","vec","vi","vo"]
llenguesW = ["war"]
llenguesX = ["chy","zh","xh"]
llenguesY = []
llenguesZ = ["zu"]
for i in list(map(chr, range(ord('A'), ord('Z')+1))):
	llengues.extend(eval("llengues"+i))
		
def put_lang(lang, entrada, text, resum):
	# Entrada nova o afegir secció de llengua
	textno = ''
	try:
		paginaentrada = pywikibot.Page(pywikibot.Site("ca", "wiktionary"), entrada)
		contingut = paginaentrada.get()
		if re.search(u"== ?{{\-"+lang+"\-}} ?==", contingut):
			textno += u"\n<!-- Ja existeix " + entrada + u"#"+lang+" -->\n" + text
			pywikibot.output(u"%s#%s: ja existeix" % (entrada, lang))
		else:
			seccions = re.findall(u"== ?{{\-(.*?)\-}} ?==", contingut)
			indexlang = llengues.index(lang)
			langnext = ""
			for seccio in seccions:
				indexseccio = llengues.index(seccio)
				if indexseccio > indexlang:
					langnext = seccio
					break
			if langnext == "":
				contingut += "\n\n" + text
			else:
				seccionext = r"== ?{{\-" + re.escape(langnext) + r"\-}} ?=="
				noutext = text + "\n== {{-" + langnext + "-}} =="
				contingut = re.sub(seccionext, noutext, contingut, 1)
			paginaentrada.put(contingut, resum + u", text afegit")
	except pywikibot.NoPage:
		pywikibot.output(u"%s: a crear" % (entrada))
		paginaentrada.put(text, resum)
	except pywikibot.IsRedirectPage:
		pywikibot.output(u"%s: a crear" % (entrada))
		paginaentrada.put(text, resum)
	except pywikibot.LockedPage:
		pywikibot.output(u"%s: pàgina protegida" % (entrada))
		textno += u"\n<!-- Error en pàgina protegida: " + entrada + u" -->\n" + text
	except pywikibot.EditConflict:
		pywikibot.output(u"%s: conflicte d'edició" % (entrada))
		textno += u"\n<!-- Error per conflicte d'edició: " + entrada + u" -->\n" + text
	except pywikibot.SpamfilterError:
		pywikibot.output(u"%s: error en desar per spam" % (entrada))
		textno += u"\n<!-- Error en desar per spam: " + entrada + u" -->\n" + text
	except KeyboardInterrupt:
		exit()
	return textno