Hi, These patches add non-intrusive sentence/grammar checking to the English and Hungarian dictionary extensions based on the Lightproof Python environment, see the attached test file/documentation. It uses LibreOffice resources (Hunspell spell checker, Calc functions etc.) for complex tasks: dictionary lookup, morphological analysis or optional measurement conversion. Recent English dictionaries of LibreOffice have contained only partial part-of-speech and morphological data, yet, but extending the dictionary, we will be able to add more complex grammar rules, too (like the Hungarian and French Lightproof based extensions). PDF version of the test file: http://www.numbertext.org/tmp/sentencecheck.pdf, Standalone extensions for testing: http://www.numbertext.org/lightproof/lightproof-en-0.1.oxt, http://www.numbertext.org/lightproof/lightproof-hu_HU-1.4.oxt. Best regards, László
From 711f98ca1ee1e2bab4feb7921864c6da459503f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20N=C3=A9meth?= <nemeth@numbertext.org> Date: Mon, 5 Dec 2011 06:01:16 +0100 Subject: [PATCH] English sentence checking --- dictionaries/en/Lightproof.py | 410 ++++++++++++++++++++ dictionaries/en/Linguistic.xcu | 18 + dictionaries/en/README_lightproof_en.txt | 3 + dictionaries/en/description.xml | 2 +- dictionaries/en/dialog/OptionsDialog.xcs | 74 ++++ dictionaries/en/dialog/OptionsDialog.xcu | 37 ++ dictionaries/en/dialog/en.xdl | 26 ++ dictionaries/en/dialog/en_en_US.properties | 37 ++ dictionaries/en/makefile.mk | 16 +- dictionaries/en/manifest.xml | 9 + dictionaries/en/pythonpath/lightproof_en.py | 1 + .../en/pythonpath/lightproof_handler_en.py | 121 ++++++ dictionaries/en/pythonpath/lightproof_impl_en.py | 6 + dictionaries/en/pythonpath/lightproof_opts_en.py | 4 + 14 files changed, 761 insertions(+), 3 deletions(-) create mode 100644 dictionaries/en/Lightproof.py create mode 100644 dictionaries/en/Linguistic.xcu create mode 100644 dictionaries/en/README_lightproof_en.txt create mode 100644 dictionaries/en/dialog/OptionsDialog.xcs create mode 100644 dictionaries/en/dialog/OptionsDialog.xcu create mode 100644 dictionaries/en/dialog/en.xdl create mode 100644 dictionaries/en/dialog/en_en_US.default create mode 100644 dictionaries/en/dialog/en_en_US.properties create mode 100644 dictionaries/en/pythonpath/lightproof_en.py create mode 100644 dictionaries/en/pythonpath/lightproof_handler_en.py create mode 100644 dictionaries/en/pythonpath/lightproof_impl_en.py create mode 100644 dictionaries/en/pythonpath/lightproof_opts_en.py diff --git a/dictionaries/en/Lightproof.py b/dictionaries/en/Lightproof.py new file mode 100644 index 0000000..7a58f3d --- /dev/null +++ b/dictionaries/en/Lightproof.py @@ -0,0 +1,410 @@ +# -*- encoding: UTF-8 -*- +# Lightproof grammar checker for LibreOffice and OpenOffice.org +# http://launchpad.net/lightproof +# version 1.4.1 (2011-06-10) +# +# 2009-2011 (c) László Németh (nemeth at numbertext org), license: GNU LGPL + +import uno, unohelper, sys, traceback, re +from lightproof_impl_en import locales +from lightproof_impl_en import pkg +import lightproof_handler_en +from string import join + +from com.sun.star.linguistic2 import XProofreader, XSupportedLocales +from com.sun.star.linguistic2 import ProofreadingResult, SingleProofreadingError +from com.sun.star.lang import XServiceInfo, XServiceName, XServiceDisplayName +from com.sun.star.lang import Locale +from com.sun.star.text.TextMarkupType import PROOFREADING + +# loaded rules +langrule = {} +# ignored rules +ignore = {} + +# cache for morphogical analyses +analyses = {} +stems = {} +suggestions = {} + +# assign Calc functions +calcfunc = None + +# check settings +def option(lang, opt): + return lightproof_handler_en.get_option(lang.Language + "_" + lang.Country, opt) + +# filtering affix fields (ds, is, ts etc.) +def onlymorph(st): + if st != None: + st = re.sub(r"^.*(st:|po:)", r"\1", st) # keep last word part + st = re.sub(r"\b(?=[dit][sp]:)","@", st) # and its affixes + st = re.sub(r"(?<!@)\b\w\w:\w+","", st).replace('@','').strip() + return st + +# if the pattern matches all analyses of the input word, +# return the last matched substring +def _morph(rLoc, word, pattern, all, onlyaffix): + global analyses + if word == None: + return None + if word not in analyses: + x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ()) + if not x: + return None + t = x.getAlternatives() + if not t: + t = [""] + analyses[word] = t[0] + a = analyses[word].split("</a>")[:-1] + result = None + p = re.compile(pattern) + for i in a: + if onlyaffix: + i = onlymorph(i) + result = p.search(i) + if result: + result = result.group(0) + if not all: + return result + elif all: + return None + return result + +def morph(rLoc, word, pattern, all=True): + return _morph(rLoc, word, pattern, all, False) + +def affix(rLoc, word, pattern, all=True): + return _morph(rLoc, word, pattern, all, True) + +def spell(rLoc, word): + if word == None: + return None + return spellchecker.isValid(word, rLoc, ()) + +# get the tuple of the stem of the word or an empty array +def stem(rLoc, word): + global stems + if word == None: + return [] + if not word in stems: + x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ()) + if not x: + return [] + t = x.getAlternatives() + if not t: + t = [] + stems[word] = list(t) + return stems[word] + +# get the tuple of the morphological generation of a word or an empty array +def generate(rLoc, word, example): + if word == None: + return [] + x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ()) + if not x: + return [] + t = x.getAlternatives() + if not t: + t = [] + return list(t) + +# get suggestions +def suggest(rLoc, word): + global suggestions + if word == None: + return word + if word not in suggestions: + x = spellchecker.spell("_" + word, rLoc, ()) + if not x: + return word + t = x.getAlternatives() + suggestions[word] = join(t, "\n") + return suggestions[word] + +# get the nth word of the input string or None +def word(s, n): + a = re.match("(?u)( [-.\w%]+){" + str(n-1) + "}( [-.\w%]+)", s) + if not a: + return None + return a.group(2)[1:] + +# get the (-)nth word of the input string or None +def wordmin(s, n): + a = re.search("(?u)([-.\w%]+ )([-.\w%]+ ){" + str(n-1) + "}$", s) + if not a: + return None + return a.group(1)[:-1] + +def calc(funcname, par): + global calcfunc + global SMGR + if calcfunc == None: + calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess") + if calcfunc == None: + return None + return calcfunc.callFunction(funcname, par) + +def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ): + global ignore + aErrs = [] + s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos] + for i in get_rule(LOCALE): + if i[0] and not str(i[0]) in ignore: + for m in i[0].finditer(s): + if not i[3] or eval(i[3]): + aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" ) + aErr.nErrorStart = nStartOfSentencePos + m.start(0) # nStartOfSentencePos + aErr.nErrorLength = m.end(0) - m.start(0) + aErr.nErrorType = PROOFREADING + aErr.aRuleIdentifier = str(i[0]) + iscap = (i[4] and m.group(0)[0:1].isupper()) + if i[1][0:1] == "=": + aErr.aSuggestions = tuple(cap(eval(i[1][1:]).split("\n"), iscap, LOCALE)) + else: + aErr.aSuggestions = tuple(cap(m.expand(i[1]).split("\n"), iscap, LOCALE)) + comment = i[2] + if comment[0:1] == "=": + comment = eval(comment[1:]) + aErr.aShortComment = comment.split("\n")[0] + aErr.aFullComment = comment.split("\n")[-1] + aErr.aProperties = () + aErrs = aErrs + [aErr] + return tuple(aErrs) + +def cap(a, iscap, rLoc): + if iscap: + for i in range(0, len(a)): + if a[i][0:1] == "i": + if rLoc.Language == "tr" or rLoc.Language == "az": + a[i] = u"\u0130" + a[i][1:] + elif a[i][1:2] == "j" and rLoc.Language == "nl": + a[i] = "IJ" + a[i][2:] + else: + a[i] = "I" + a[i][1:] + else: + a[i] = a[i].capitalize() + return a + +def get_rule(rLocale): + module = rLocale.Language + if rLocale.Country != "": + module = module + "_" + rLocale.Country + try: + return langrule[module] + except: + try: + module = rLocale.Language + return langrule[module] + except: + try: + d = __import__("lightproof_" + pkg) + except: + print "Error: missing language data: " + module + return None + # compile regular expressions + for i in d.dic: + try: + if re.compile("[(][?]iu[)]").match(i[0]): + i += [True] + i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0]) + else: + i += [False] + i[0] = re.compile(i[0]) + except: + print "Lightproof: bad rule -- ", i[0] + i[0] = None + langrule[module] = d.dic + return langrule[module] + +class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales): + + def __init__( self, ctx, *args ): + global spellchecker + global SMGR + self.ctx = ctx + self.ServiceName = "com.sun.star.linguistic2.Proofreader" + self.ImplementationName = "org.openoffice.comp.pyuno.Lightproof." + pkg + self.SupportedServiceNames = (self.ServiceName, ) + self.locales = [] + for i in locales: + l = locales[i] + self.locales += [Locale(l[0], l[1], l[2])] + self.locales = tuple(self.locales) + currentContext = uno.getComponentContext() + SMGR = currentContext.ServiceManager + spellchecker = SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext) + lightproof_handler_en.load(currentContext) + + # XServiceName method implementations + def getServiceName(self): + return self.ImplementationName + + # XServiceInfo method implementations + def getImplementationName (self): + return self.ImplementationName + + def supportsService(self, ServiceName): + return (ServiceName in self.SupportedServiceNames) + + def getSupportedServiceNames (self): + return self.SupportedServiceNames + + # XSupportedLocales + def hasLocale(self, aLocale): + if aLocale in self.locales: + return True + for i in self.locales: + if (i.Country == aLocale.Country or i.Country == "") and aLocale.Language == i.Language: + return True + return False + + def getLocales(self): + return self.locales + + # XProofreader + def isSpellChecker(self): + return False + + def doProofreading(self, nDocId, rText, rLocale, nStartOfSentencePos, \ + nSuggestedSentenceEndPos, rProperties): + aRes = uno.createUnoStruct( "com.sun.star.linguistic2.ProofreadingResult" ) + aRes.aDocumentIdentifier = nDocId + aRes.aText = rText + aRes.aLocale = rLocale + aRes.nStartOfSentencePosition = nStartOfSentencePos + aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos + l = rText[nSuggestedSentenceEndPos:nSuggestedSentenceEndPos+1] + while l == " ": + aRes.nStartOfNextSentencePosition = aRes.nStartOfNextSentencePosition + 1 + l = rText[aRes.nStartOfNextSentencePosition:aRes.nStartOfNextSentencePosition+1] + if aRes.nStartOfNextSentencePosition == nSuggestedSentenceEndPos and l!="": + aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos + 1 + aRes.nBehindEndOfSentencePosition = aRes.nStartOfNextSentencePosition + + try: + aRes.aErrors = proofread( nDocId, rText, rLocale, \ + nStartOfSentencePos, aRes.nBehindEndOfSentencePosition, rProperties) + except: + traceback.print_exc(file=sys.stdout) + aRes.aErrors = () + aRes.aProperties = () + aRes.xProofreader = self + return aRes + + def ignoreRule(self, rid, aLocale): + global ignore + ignore[rid] = 1 + + def resetIgnoreRules(self): + global ignore + ignore = {} + + # XServiceDisplayName + def getServiceDisplayName(self, aLocale): + return "Lightproof Grammar Checker (" + pkg + ")" + +g_ImplementationHelper = unohelper.ImplementationHelper() +g_ImplementationHelper.addImplementation( Lightproof, \ + "org.openoffice.comp.pyuno.Lightproof." + pkg, + ("com.sun.star.linguistic2.Proofreader",),) + +g_ImplementationHelper.addImplementation( lightproof_handler_en.LightproofOptionsEventHandler, \ + "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg, + ("com.sun.star.awt.XContainerWindowEventHandler",),) +# pattern matching for common English abbreviations +abbrev = re.compile("(?i)\\b([a-z]|acct|approx|appt|apr|apt|assoc|asst|aug|ave|avg|co(nt|rp)?|ct|dec|defn|dept|dr|eg|equip|esp|est|etc|excl|ext|feb|fri|ft|govt?|hrs?|ib(id)?|ie|in(c|t)?|jan|jr|jul|lit|ln|mar|max|mi(n|sc)?|mon|Mrs?|mun|natl?|neg?|no(rm|s|v)?|nw|obj|oct|org|orig|pl|pos|prev|proj|psi|qty|rd|rec|rel|reqd?|resp|rev|sat|sci|se(p|pt)?|spec(if)?|sq|sr|st|subj|sun|sw|temp|thurs|tot|tues|univ|var|vs)\\.") + + +punct = { "?": "question mark", "!": "exclamation mark", + ",": "comma", ":": "colon", ";": "semicolon", + "(": "opening parenthesis", ")": "closing parenthesis", + "[": "opening square bracket", "]": "closing square bracket", + u"\u201c": "opening quoation mark", u"\u201d": "closing quoation mark"} + + +aA = set(["eucalypti", "eucalyptus", "Eucharist", "Eucharistic", +"euchre", "euchred", "euchring", "Euclid", "euclidean", "Eudora", +"eugene", "Eugenia", "eugenic", "eugenically", "eugenicist", +"eugenicists", "eugenics", "Eugenio", "eukaryote", "Eula", "eulogies", +"eulogist", "eulogists", "eulogistic", "eulogized", "eulogizer", +"eulogizers", "eulogizing", "eulogy", "eulogies", "Eunice", "eunuch", +"eunuchs", "Euphemia", "euphemism", "euphemisms", "euphemist", +"euphemists", "euphemistic", "euphemistically", "euphonious", +"euphoniously", "euphonium", "euphony", "euphoria", "euphoric", +"Euphrates", "euphuism", "Eurasia", "Eurasian", "Eurasians", "eureka", +"eurekas", "eurhythmic", "eurhythmy", "Euridyce", "Euripides", "euripus", +"Euro", "Eurocentric", "Euroclydon", "Eurocommunism", "Eurocrat", +"eurodollar", "Eurodollar", "Eurodollars", "Euromarket", "Europa", +"Europe", "European", "Europeanisation", "Europeanise", "Europeanised", +"Europeanization", "Europeanize", "Europeanized", "Europeans", "europium", +"Eurovision", "Eustace", "Eustachian", "Eustacia", "euthanasia", +"Ewart", "ewe", "Ewell", "ewer", "ewers", "Ewing", "once", "one", +"oneness", "ones", "oneself", "onetime", "oneway", "oneyear", "u", +"U", "UART", "ubiquitous", "ubiquity", "Udale", "Udall", "UEFA", +"Uganda", "Ugandan", "ugric", "UK", "ukase", "Ukraine", "Ukrainian", +"Ukrainians", "ukulele", "Ula", "ululated", "ululation", "Ulysses", +"UN", "unanimity", "unanimous", "unanimously", "unary", "Unesco", +"UNESCO", "UNHCR", "uni", "unicameral", "unicameralism", "Unicef", +"UNICEF", "unicellular", "Unicode", "unicorn", "unicorns", "unicycle", +"unicyclist", "unicyclists", "unidimensional", "unidirectional", +"unidirectionality", "unifiable", "unification", "unified", "unifier", +"unifilar", "uniform", "uniformally", "uniformed", "uniformer", +"uniforming", "uniformisation", "uniformise", "uniformitarian", +"uniformitarianism", "uniformity", "uniformly", "uniformness", "uniforms", +"unify", "unifying", "unijugate", "unilateral", "unilateralisation", +"unilateralise", "unilateralism", "unilateralist", "unilaterally", +"unilinear", "unilingual", "uniliteral", "uniliteralism", "uniliteralist", +"unimodal", "union", "unionism", "unionist", "unionists", "unionisation", +"unionise", "unionised", "unionising", "unionization", "unionize", +"unionized", "unionizing", "unions", "unipolar", "uniprocessor", +"unique", "uniquely", "uniqueness", "uniquer", "Uniroyal", "unisex", +"unison", "Unisys", "unit", "Unitarian", "Unitarianism", "Unitarians", +"unitary", "unite", "united", "unitedly", "uniter", "unites", "uniting", +"unitize", "unitizing", "unitless", "units", "unity", "univ", "Univac", +"univalent", "univalve", "univariate", "universal", "universalisation", +"universalise", "universalised", "universaliser", "universalisers", +"universalising", "universalism", "universalist", "universalistic", +"universality", "universalisation", "universalization", "universalize", +"universalized", "universalizer", "universalizers", "universalizing", +"universally", "universalness", "universe", "universes", "universities", +"university", "univocal", "Unix", "uracil", "Urals", "uranium", "Uranus", +"uranyl", "urate", "urea", "uremia", "uremic", "ureter", "urethane", +"urethra", "urethral", "urethritis", "Urey", "Uri", "uric", "urinal", +"urinalysis", "urinary", "urinated", "urinating", "urination", "urine", +"urogenital", "urokinase", "urologist", "urologists", "urology", +"Uruguay", "Uruguayan", "Uruguayans", "US", "USA", "usable", "usage", +"usages", "use", "used", "useful", "usefulness", "usefully", "useless", +"uselessly", "uselessness", "Usenet", "user", "users", "uses", "using", +"usual", "usually", "usurer", "usurers", "usuress", "usurial", "usurious", +"usurp", "usurpation", "usurped", "usurper", "usurping", "usurps", +"usury", "Utah", "utensil", "utensils", "uterine", "uterus", "Utica", +"utilitarian", "utilitarianism", "utilities", "utility", "utilizable", +"utilization", "utilize", "utilized", "utilizes", "utilizing", "utopia", +"utopian", "utopians", "utopias", "Utrecht", "Uttoxeter", "uvula", +"uvular"]) + +aAN = set(["f", "F", "FBI", "FDA", "heir", "heirdom", "heired", +"heirer", "heiress", "heiring", "heirloom", "heirship", "honest", +"honester", "honestly", "honesty", "honor", "honorable", "honorableness", +"honorably", "honorarium", "honorary", "honored", "honorer", "honorific", +"honoring", "honors", "honour", "honourable", "honourableness", +"honourably", "honourarium", "honourary", "honoured", "honourer", +"honourific", "honouring", "Honours", "hors", "hour", "hourglass", "hourlong", +"hourly", "hours", "l", "L", "LCD", "m", "M", "MBA", "MP", "mpg", "mph", +"MRI", "MSc", "MTV", "n", "N", "NBA", "NBC", "NFL", "NGO", "NHL", "r", +"R", "s", "S", "SMS", "sos", "SOS", "SPF", "std", "STD", "SUV", "x", +"X", "XML"]) + +aB = set(["H", "hallucination", "haute", "hauteur", "herb", "herbaceous", "herbal", +"herbalist", "herbalism", "heroic", "hilarious", "historian", "historic", "historical", +"homage", "homophone", "horrendous", "hospitable", "horrific", "hotel", "hypothesis", "Xmas"]) + +def measurement(mnum, min, mout, mstr, decimal, remove): + if min == "ft" or min == "in" or min == "mi": + mnum = mnum.replace(" 1/2", ".5").replace(u" \xbd", ".5").replace(u"\xbd",".5") + m = calc("CONVERT_ADD", (float(eval(mnum.replace(remove, "").replace(decimal, ".").replace(u"\u2212", "-"))), min, mout)) + a = list(set([str(calc("ROUND", (m, 0)))[:-2], str(calc("ROUND", (m, 1))), str(calc("ROUND", (m, 2))), str(m)])) # remove duplicated rounded items + a.sort(lambda x, y: len(x) - len(y)) # sort by string length + return join(a, mstr + "\n").replace(".", decimal).replace("-", u"\u2212") + mstr + diff --git a/dictionaries/en/Linguistic.xcu b/dictionaries/en/Linguistic.xcu new file mode 100644 index 0000000..211a7a3 --- /dev/null +++ b/dictionaries/en/Linguistic.xcu @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<oor:component-data oor:name="Linguistic" + oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" + xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <node oor:name="ServiceManager"> + + <node oor:name="GrammarCheckers"> + <node oor:name="org.openoffice.comp.pyuno.Lightproof.en" + oor:op="fuse"> + <prop oor:name="Locales" oor:type="oor:string-list"> + <value>en-GB en-US en-PH en-ZA en-NA en-ZW en-AU en-CA en-IE en-IN en-BZ en-BS en-GH en-JM en-NZ en-TT</value> + </prop> + </node> + </node> + + </node> + +</oor:component-data> diff --git a/dictionaries/en/README_lightproof_en.txt b/dictionaries/en/README_lightproof_en.txt new file mode 100644 index 0000000..5fe9286 --- /dev/null +++ b/dictionaries/en/README_lightproof_en.txt @@ -0,0 +1,3 @@ +English sentence checker for LibreOffice +see http://launchpad.net/lightproof and http://numbertext.org/lightproof +2011 (c) László Németh, license: GNU LGPL diff --git a/dictionaries/en/description.xml b/dictionaries/en/description.xml index 99f3b94..dc300ce 100644 --- a/dictionaries/en/description.xml +++ b/dictionaries/en/description.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> - <version value="2010.03.16" /> + <version value="2011.12.05" /> <identifier value="org.openoffice.en.hunspell.dictionaries" /> <display-name> <name lang="en">English spelling and hyphenation dictionaries and thesaurus</name> diff --git a/dictionaries/en/dialog/OptionsDialog.xcs b/dictionaries/en/dialog/OptionsDialog.xcs new file mode 100644 index 0000000..286c45e --- /dev/null +++ b/dictionaries/en/dialog/OptionsDialog.xcs @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8"?> +<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +oor:name="Lightproof_en" oor:package="org.openoffice" xml:lang="en-US"> +<info> +<author></author> +<desc>Contains the options data used for the test extensions.</desc> +</info> +<templates> + + <group oor:name="en"> + <info> + <desc>The data for one leaf.</desc> + </info> +<prop oor:name="grammar" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="cap" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="dup" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="pair" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="spaces" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="mdash" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="quotation" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="times" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="spaces2" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="ndash" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="apostrophe" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="ellipsis" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="spaces3" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="minus" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="metric" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="numsep" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="nonmetric" oor:type="xs:string"> + <value></value> +</prop> + </group> + </templates> + <component> + <group oor:name="Leaves"> + + <node-ref oor:name="en" oor:node-type="en"/> + </group> + </component> + +</oor:component-schema> diff --git a/dictionaries/en/dialog/OptionsDialog.xcu b/dictionaries/en/dialog/OptionsDialog.xcu new file mode 100644 index 0000000..e492e2c --- /dev/null +++ b/dictionaries/en/dialog/OptionsDialog.xcu @@ -0,0 +1,37 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd"> +<oor:component-data oor:name="OptionsDialog" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <node oor:name="Nodes"> + <node oor:name="org.openoffice.lightproof" oor:op="fuse"> + <prop oor:name="Label"> + <value xml:lang="en">Dictionaries</value> + <value xml:lang="hu">Szótárak</value> + </prop> + <node oor:name="Leaves"> + + <node oor:name="org.openoffice.lightproof.en" oor:op="fuse"> + + <prop oor:name="Id"> + <value>org.openoffice.en.hunspell.dictionaries</value> + </prop> + + <prop oor:name="Label"> + + <value xml:lang="en">English sentence checking</value> + + </prop> + + <prop oor:name="OptionsPage"> + <value>%origin%/en.xdl</value> + </prop> + + <prop oor:name="EventHandlerService"> + <value>org.openoffice.comp.pyuno.LightproofOptionsEventHandler.en</value> + </prop> + + </node> + + </node> + </node> + </node> +</oor:component-data> diff --git a/dictionaries/en/dialog/en.xdl b/dictionaries/en/dialog/en.xdl new file mode 100644 index 0000000..6e161bd --- /dev/null +++ b/dictionaries/en/dialog/en.xdl @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd"> +<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="en" dlg:left="101" dlg:top="52" dlg:width="196" dlg:height="72" dlg:closeable="true" dlg:moveable="true" dlg:withtitlebar="false"> + <dlg:bulletinboard> +<dlg:fixedline dlg:id="spelling" dlg:tab-index="0" dlg:left="5" dlg:top="5" dlg:width="240" dlg:height="10" dlg:value="&spelling"/> +<dlg:checkbox dlg:id="grammar" dlg:tab-index="1" dlg:left="10" dlg:top="15" dlg:width="60" dlg:height="10" dlg:value="&grammar" dlg:checked="false" dlg:help-text="&hlp_grammar"/> +<dlg:checkbox dlg:id="cap" dlg:tab-index="2" dlg:left="70" dlg:top="15" dlg:width="60" dlg:height="10" dlg:value="&cap" dlg:checked="false" dlg:help-text="&hlp_cap"/> +<dlg:checkbox dlg:id="dup" dlg:tab-index="3" dlg:left="130" dlg:top="15" dlg:width="60" dlg:height="10" dlg:value="&dup" dlg:checked="false" dlg:help-text="&hlp_dup"/> +<dlg:checkbox dlg:id="pair" dlg:tab-index="4" dlg:left="190" dlg:top="15" dlg:width="60" dlg:height="10" dlg:value="&pair" dlg:checked="false" dlg:help-text="&hlp_pair"/> +<dlg:fixedline dlg:id="punctuation" dlg:tab-index="6" dlg:left="5" dlg:top="25" dlg:width="240" dlg:height="10" dlg:value="&punctuation"/> +<dlg:checkbox dlg:id="spaces" dlg:tab-index="7" dlg:left="10" dlg:top="35" dlg:width="60" dlg:height="10" dlg:value="&spaces" dlg:checked="true" dlg:help-text="&hlp_spaces"/> +<dlg:checkbox dlg:id="mdash" dlg:tab-index="8" dlg:left="70" dlg:top="35" dlg:width="60" dlg:height="10" dlg:value="&mdash" dlg:checked="false" dlg:help-text="&hlp_mdash"/> +<dlg:checkbox dlg:id="quotation" dlg:tab-index="9" dlg:left="130" dlg:top="35" dlg:width="60" dlg:height="10" dlg:value="&quotation" dlg:checked="false" dlg:help-text="&hlp_quotation"/> +<dlg:checkbox dlg:id="times" dlg:tab-index="10" dlg:left="190" dlg:top="35" dlg:width="60" dlg:height="10" dlg:value="&times" dlg:checked="true" dlg:help-text="&hlp_times"/> +<dlg:checkbox dlg:id="spaces2" dlg:tab-index="12" dlg:left="10" dlg:top="45" dlg:width="60" dlg:height="10" dlg:value="&spaces2" dlg:checked="false" dlg:help-text="&hlp_spaces2"/> +<dlg:checkbox dlg:id="ndash" dlg:tab-index="13" dlg:left="70" dlg:top="45" dlg:width="60" dlg:height="10" dlg:value="&ndash" dlg:checked="false" dlg:help-text="&hlp_ndash"/> +<dlg:checkbox dlg:id="apostrophe" dlg:tab-index="14" dlg:left="130" dlg:top="45" dlg:width="60" dlg:height="10" dlg:value="&apostrophe" dlg:checked="false" dlg:help-text="&hlp_apostrophe"/> +<dlg:checkbox dlg:id="ellipsis" dlg:tab-index="15" dlg:left="190" dlg:top="45" dlg:width="60" dlg:height="10" dlg:value="&ellipsis" dlg:checked="false" dlg:help-text="&hlp_ellipsis"/> +<dlg:checkbox dlg:id="spaces3" dlg:tab-index="17" dlg:left="10" dlg:top="55" dlg:width="60" dlg:height="10" dlg:value="&spaces3" dlg:checked="false" dlg:help-text="&hlp_spaces3"/> +<dlg:checkbox dlg:id="minus" dlg:tab-index="18" dlg:left="70" dlg:top="55" dlg:width="60" dlg:height="10" dlg:value="&minus" dlg:checked="false" dlg:help-text="&hlp_minus"/> +<dlg:fixedline dlg:id="others" dlg:tab-index="20" dlg:left="5" dlg:top="65" dlg:width="240" dlg:height="10" dlg:value="&others"/> +<dlg:checkbox dlg:id="metric" dlg:tab-index="21" dlg:left="10" dlg:top="75" dlg:width="120" dlg:height="10" dlg:value="&metric" dlg:checked="false" dlg:help-text="&hlp_metric"/> +<dlg:checkbox dlg:id="numsep" dlg:tab-index="22" dlg:left="130" dlg:top="75" dlg:width="120" dlg:height="10" dlg:value="&numsep" dlg:checked="false" dlg:help-text="&hlp_numsep"/> +<dlg:checkbox dlg:id="nonmetric" dlg:tab-index="24" dlg:left="10" dlg:top="85" dlg:width="240" dlg:height="10" dlg:value="&nonmetric" dlg:checked="false" dlg:help-text="&hlp_nonmetric"/> +</dlg:bulletinboard> +</dlg:window> diff --git a/dictionaries/en/dialog/en_en_US.default b/dictionaries/en/dialog/en_en_US.default new file mode 100644 index 0000000..e69de29 diff --git a/dictionaries/en/dialog/en_en_US.properties b/dictionaries/en/dialog/en_en_US.properties new file mode 100644 index 0000000..6bc215e --- /dev/null +++ b/dictionaries/en/dialog/en_en_US.properties @@ -0,0 +1,37 @@ +spelling=Grammar checking +hlp_grammar= Check more grammar errors. +grammar=Possible mistakes +hlp_cap= Check missing capitalization of sentences. +cap=Capitalization +hlp_dup= Check repeated words. +dup=Word duplication +hlp_pair= Check missing or extra parentheses and quotation marks. +pair=Parentheses +punctuation=Punctuation +hlp_spaces=Check single spaces between words. +spaces=Word spacing +hlp_mdash=Force unspaced em dash instead of spaced en dash. +mdash=Em dash +hlp_ndash=Force spaced en dash instead of unspaced em dash. +ndash=En dash +hlp_quotation=Check double quotation marks: "x" \u2192 \u201cx\u201d +quotation=Quotation marks +hlp_times=Check true multipliction sign: 5x5 \u2192 5\u00d75 +times=Multiplication sign +hlp_spaces2=Check single spaces between sentences. +spaces2=Sentence spacing +hlp_spaces3=Check more than two extra space characters between words and sentences. +spaces3=More spaces +hlp_minus=Change hyphen characters to real minus signs. +minus=Minus sign +hlp_apostrophe=Change typewriter apostrophe, single quotation marks and correct double primes. +apostrophe=Apostrophe +hlp_ellipsis=Change three dots with ellipsis. +ellipsis=Ellipsis +others=Others +hlp_metric=Measurement conversion from \u00b0F, mph, ft, in, lb, gal and miles. +metric=Convert to metric (\u00b0C, km/h, m, kg, l) +hlp_numsep=Common (1000000 \u2192 1,000,000) or ISO (1000000 \u2192 1 000 000). +numsep=Thousand separation of large numbers +hlp_nonmetric=Measurement conversion from \u00b0C; km/h; cm, m, km; kg; l. +nonmetric=Convert to non-metric (\u00b0F, mph, ft, lb, gal) diff --git a/dictionaries/en/makefile.mk b/dictionaries/en/makefile.mk index 7640185..4191acc 100644 --- a/dictionaries/en/makefile.mk +++ b/dictionaries/en/makefile.mk @@ -72,8 +72,20 @@ COMPONENT_FILES= \ $(EXTENSIONDIR)$/README_hyph_en_GB.txt \ $(EXTENSIONDIR)$/README_hyph_en_US.txt \ $(EXTENSIONDIR)$/README.txt \ + $(EXTENSIONDIR)$/README_lightproof_en.txt \ $(EXTENSIONDIR)$/th_en_US_v2.dat \ - $(EXTENSIONDIR)$/WordNet_license.txt + $(EXTENSIONDIR)$/WordNet_license.txt \ + $(EXTENSIONDIR)$/Lightproof.py \ + $(EXTENSIONDIR)$/Linguistic.xcu \ + $(EXTENSIONDIR)$/pythonpath/lightproof_en.py \ + $(EXTENSIONDIR)$/pythonpath/lightproof_handler_en.py \ + $(EXTENSIONDIR)$/pythonpath/lightproof_impl_en.py \ + $(EXTENSIONDIR)$/pythonpath/lightproof_opts_en.py \ + $(EXTENSIONDIR)$/dialog/en_en_US.default \ + $(EXTENSIONDIR)$/dialog/en_en_US.properties \ + $(EXTENSIONDIR)$/dialog/en.xdl \ + $(EXTENSIONDIR)$/dialog/OptionsDialog.xcu \ + $(EXTENSIONDIR)$/dialog/OptionsDialog.xcs COMPONENT_CONFIGDEST=. COMPONENT_XCU= \ @@ -101,4 +113,4 @@ EXTENSION_PACKDEPS=$(COMPONENT_FILES) $(COMPONENT_UNZIP_FILES) .INCLUDE : $(PRJ)$/prj$/tests.mk $(EXTENSIONDIR)$/th_en_US_v2.idx : "$(EXTENSIONDIR)$/th_en_US_v2.dat" - $(AUGMENT_LIBRARY_PATH) $(LOCAL_OUT_FOR_BUILD)$/bin$/idxdict -o $(EXTENSIONDIR)$/th_en_US_v2.idx <$(EXTENSIONDIR)$/th_en_US_v2.dat + $(AUGMENT_LIBRARY_PATH) $(LOCAL_OUT)$/bin$/idxdict -o $(EXTENSIONDIR)$/th_en_US_v2.idx <$(EXTENSIONDIR)$/th_en_US_v2.dat diff --git a/dictionaries/en/manifest.xml b/dictionaries/en/manifest.xml index 05bd316..6daea1f 100644 --- a/dictionaries/en/manifest.xml +++ b/dictionaries/en/manifest.xml @@ -3,4 +3,13 @@ <manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest"> <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="dictionaries.xcu"/> + <manifest:file-entry manifest:full-path="dialog/OptionsDialog.xcs" + manifest:media-type="application/vnd.sun.star.configuration-schema" /> + <manifest:file-entry manifest:full-path="dialog/OptionsDialog.xcu" + manifest:media-type="application/vnd.sun.star.configuration-data" /> + <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Python" + manifest:full-path="Lightproof.py"/> + <manifest:file-entry + manifest:media-type="application/vnd.sun.star.configuration-data" + manifest:full-path="Linguistic.xcu" /> </manifest:manifest> diff --git a/dictionaries/en/pythonpath/lightproof_en.py b/dictionaries/en/pythonpath/lightproof_en.py new file mode 100644 index 0000000..d0e48b5 --- /dev/null +++ b/dictionaries/en/pythonpath/lightproof_en.py @@ -0,0 +1 @@ +dic = [[u'(?u)(?<![-\\w\u2013.,\xad])and and(?![-\\w\u2013\xad])', u'and', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])or or(?![-\\w\u2013\xad])', u'or', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])for for(?![-\\w\u2013\xad])', u'for', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])the the(?![-\\w\u2013\xad])', u'the', u'Did you mean:', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Yy][Ii][Nn][Gg] [Aa][Nn][Dd] [Yy][Aa][Nn][Gg](?![-\\w\u2013\xad])', u'yin and yang', u'Did you mean:', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Cc][Oo][Tt] [Ff][Rr][Ee][Ee](?![-\\w\u2013\xad])', u'scot-free\\nscotfree', u'Did you mean:', False], [u"(?iu)(?<![-\\w\u2013.,\xad])([Yy][Oo][Uu][Rr]|[Hh][Ee][Rr]|[Oo][Uu][Rr]|[Tt][Hh][Ee][Ii][Rr])['\u2019][Ss](?![-\\w\u2013\xad])", u'\\1s', u'Possessive pronoun:', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<vow_1>\\g<etc_1>', u'Did you mean:', u'm.group("vow_1") in aA or m.group("vow_1").lower() in aA'], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<vow_1>\\g<etc_1>', u'Bad article?', u'(m.group("vow_1") <> m.group("vow_1").upper()) and not (m.group("vow_1") in aA or m.group("vow_1").lower() in aA) and spell(LOCALE,m.group("vow_1"))'], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<con_1>\\g<etc_1>', u'Did you mean:', u'm.group("con_1") in aAN or m.group("con_1").lower() in aAN'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<con_1>\\g<etc_1>', u'Bad article?', u'(m.group("con_1") <> m.group("con_1").upper()) and not (m.group("con_1") in aA or m.group("con_1").lower() in aAN) and not m.group("con_1") in aB and spell(LOCALE,m.group("con_1"))'], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<vow_1>[aeiouAEIOU]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<vow_1>\\g<etc_1>', u'Bad article?', u'(m.group("vow_1") <> m.group("vow_1").upper()) and not (m.group("vow_1") in aA or m.group("vow_1").lower() in aA) and spell(LOCALE,m.group("vow_1"))'], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<con_1>[bcdfghj-np-tv-zBCDFGHJ-NP-TV-Z]\\w*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<con_1>\\g<etc_1>', u'Did you mean:', u'm.group("con_1") in aAN or m.group("con_1").lower() in aAN'], [u'(?u)(?<![-\\w\u2013.,\xad])a(?P<_>[ ][\'\u2018"\u201c]?)(?P<nvow_1>(8[0-9]*|1[18](000)*)(th)?)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'an\\g<_>\\g<nvow_1>\\g<etc_1>', u'Did you mean:', False], [u'(?u)((?<=[!?.] )|^)A(?P<_>[ ][\'\u2018"\u201c]?)(?P<nvow_1>(8[0-9]*|1[18](000)*)(th)?)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'An\\g<_>\\g<nvow_1>\\g<etc_1>', u'Did you mean:', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<a_1>[Aa])n(?P<_>[ ][\'\u2018"\u201c]?)(?P<ncon_1>[0-79][0-9]*)(?P<etc_1>[-\u2013\'\u2019\\w]*)(?![-\\w\u2013\xad])', u'\\g<a_1>\\g<_>\\g<ncon_1>\\g<etc_1>', u'Did you mean:', u'not m.group("ncon_1")[:2] in ["11", "18"]'], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Missing capitalization?', u're.match("[a-z].*[.?!] [A-Z]", TEXT) and not abbrev.search(TEXT)'], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Missing capitalization?', u'option(LOCALE,"cap") and not abbrev.search(TEXT)'], [u'(?u) ([.?!,:;)\u201d\\[\\]])\\b', u'\\1 ', u'Reversed space and punctuation?', False], [u'(?u) +[.]', u'.', u'Extra space before the period?', u'LOCALE.Country == "US"'], [u'(?u) +[.]', u'.', u'Extra space before the full stop?', u'LOCALE.Country != "US"'], [u'(?u) +([?!,:;)\u201d\\]])', u'\\1', u'= "Extra space before the " + punct[m.group(1)] + "?"', False], [u'(?u)([([\u201c]) ', u'\\1', u'= "Extra space after the " + punct[m.group(1)] + "?"', False], [u'(?u)\\b(---?| --? )\\b', u' \u2013 \\n\u2014', u'En dash or em dash:', u'not option(LOCALE,"ndash") and not option(LOCALE,"mdash")'], [u'(?u)\\b(---?| --? |\u2014)\\b', u' \u2013 ', u'En dash:', u'option(LOCALE,"ndash") and not option(LOCALE,"mdash")'], [u'(?u)\\b(---?| --? | \u2013 )\\b', u'\u2014', u'Em dash:', u'option(LOCALE,"mdash")'], [u'(?u)(?P<number_1>\\d+([.]\\d+)?)(x| x )(?P<number_2>\\d+([.]\\d+)?)', u'\\g<number_1>\xd7\\g<number_2>', u'Multiplication sign.', u'option(LOCALE,"times")'], [u'(?u)(?P<Abc_1>[a-zA-Z]+)(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])(?P<Abc_2>[a-zA-Z]+)', u'\\g<Abc_1>\\g<pun_1> \\g<Abc_2>', u'Missing space?', False], [u'(?u)(?P<abc_1>[a-z]+)[.](?P<ABC_1>[A-Z]+)', u'\\g<abc_1>. \\g<ABC_1>', u'Missing space?', False], [u'(?u)[)]', u'', u'Extra closing parenthesis?', u'option(LOCALE,"pair") and not "(" in TEXT'], [u'(?u)[(]', u'', u'Extra opening parenthesis?', u'option(LOCALE,"pair") and TEXT[-1] in u"?!;:\u201d\u2019" and not ")" in TEXT'], [u'(?u)(?<![0-9])\u201d', u'', u'Extra quotation mark?', u'option(LOCALE,"pair") and not u"\u201c" in TEXT'], [u'(?u)(?<=[0-9])\u201d', u'\u2033\\n', u'Bad double prime or extra quotation mark?', u'option(LOCALE,"apostrophe") and not u"\u201c" in TEXT'], [u'(?u)\u201c', u'', u'Extra quotation mark?', u'option(LOCALE,"pair") and TEXT[-1] in u"?!;:\u201d\u2019" and not u"\u201d" in TEXT'], [u'(?u)[.]{3}', u'\u2026', u'Ellipsis.', u'option(LOCALE,"ellipsis")'], [u'(?u)\\b {2,3}(\\b|$)', u'\\1 ', u'Extra space.', u'option(LOCALE,"spaces")'], [u'(?u)(^|\\b|(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])|[.]) {2,3}(\\b|$)', u'\\1 ', u'Extra space.', u'option(LOCALE,"spaces2")'], [u'(?u)(^|\\b|(?P<pun_1>[?!,:;%\u2030\u2031\u02da\u201c\u201d\u2018])|[.]) {4,}(\\b|$)', u'\\1 \\n\t', u'Change multiple spaces to a single space or a tabulator:', u'option(LOCALE,"spaces3")'], [u'(?iu)[\\"\u201c\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"quotation")'], [u'(?iu)[\\"\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"quotation")'], [u"(?iu)'(?P<abc_1>[a-zA-Z]+)'", u'\u2018\\g<abc_1>\u2019', u'Quotation marks.', u'option(LOCALE,"apostrophe")'], [u'(?iu)[\\"\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z]+)[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201c\\1\u201d', u'Quotation marks.', u'option(LOCALE,"apostrophe")'], [u"(?iu)(?P<Abc_1>[a-zA-ZA-Z]+)'(?P<w_1>\\w*)", u'\\g<Abc_1>\u2019\\g<w_1>', u'Replace typewriter apostrophe or quotation mark:', u'option(LOCALE,"apostrophe")'], [u"(?u)(?<= )'(?P<Abc_1>[a-zA-Z]+)", u'\u2018\\g<Abc_1>\\n\u2019\\g<Abc_1>', u'Replace typewriter quotation mark or apostrophe:', u'option(LOCALE,"apostrophe")'], [u"(?u)^'(?P<Abc_1>[a-zA-Z]+)", u'\u2018\\g<Abc_1>\\n\u2019\\g<Abc_1>', u'Replace typewriter quotation mark or apostrophe:', u'option(LOCALE,"apostrophe")'], [u'(?u)\\b(?P<d2_1>\\d\\d)(?P<d_1>\\d\\d\\d)\\b', u'\\g<d2_1>,\\g<d_1>\\n\\g<d2_1>\u202f\\g<d_1>', u'Use thousand separator (common or ISO).', u'option(LOCALE,"numsep")'], [u'(?u)\\b(?P<D_1>\\d{1,3})(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)\\b', u'\\g<D_1>,\\g<d_1>,\\g<d_2>\\n\\g<D_1>\u202f\\g<d_1>\u202f\\g<d_2>', u'Use thousand separators (common or ISO).', u'option(LOCALE,"numsep")'], [u'(?u)\\b(?P<D_1>\\d{1,3})(?P<d_1>\\d\\d\\d)(?P<d_2>\\d\\d\\d)(?P<d_3>\\d\\d\\d)\\b', u'\\g<D_1>,\\g<d_1>,\\g<d_2>,\\g<d_3>\\n\\g<D_1>\u202f\\g<d_1>\u202f\\g<d_2>\u202f\\g<d_3>', u'Use thousand separators (common or ISO).', u'option(LOCALE,"numsep")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Abc_1>[a-zA-Z]+) \\1(?![-\\w\u2013\xad])', u'\\g<Abc_1>', u'Word duplication?', u'option(LOCALE,"dup")'], [u'(?u)(?<![-\\w\u2013.,\xad])([Tt])his (?P<abc_1>[a-z]+)(?![-\\w\u2013\xad])', u'\\1hese \\g<abc_1>\\n\\1his, \\g<abc_1>', u'Did you mean:', u'option(LOCALE,"grammar") and morph(LOCALE,m.group("abc_1"), "Ns")'], [u"(?u)(?<![-\\w\u2013.,\xad])with it['\u2019]s(?![-\\w\u2013\xad])", u'with its\\nwith, it\u2019s', u'Did you mean:', u'option(LOCALE,"grammar")'], [u"(?iu)(?<![-\\w\u2013.,\xad])([Ii][Tt]|[Ss]?[Hh][Ee]) [Dd][Oo][Nn]['\u2019][Tt](?![-\\w\u2013\xad])", u'\\1 doesn\u2019t', u'Did you mean:', u'option(LOCALE,"grammar")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (\xb0F|Fahrenheit)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", u" \xb0C", ".", ",")', u'Convert to Celsius:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (\xb0C|Celsius)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "C", "F", u" \xb0F", ".", ",")', u'Convert to Fahrenheit:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) (ft|foot|feet)(?! [1-9])(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1), "ft", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) ft[.]? ([0-9]+(?: 1/2| ?\xbd)?) in(?![-\\w\u2013\xad])', u'= measurement(m.group(1) + "*12+" + m.group(2), "in", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1) + "*12+" + m.group(2), "in", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) in(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "in", "mm", " mm", ".", ",") + "\\n" + measurement(m.group(1), "in", "cm", " cm", ".", ",") + "\\n" + measurement(m.group(1), "in", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) mm(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mm", "in", " in", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) cm(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "cm", "in", " in", ".", ",") + "\\n" + measurement(m.group(1), "cm", "ft", " ft", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) (m|meter|metre)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "m", "in", " in", ".", ",") + "\\n" + measurement(m.group(1), "m", "ft", " ft", ".", ",") + "\\n" + measurement(m.group(1), "m", "mi", " mi", ".", ",")', u'Convert from metric:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*(?: 1/2| ?\xbd)?) miles?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mi", "m", " m", ".", ",") + "\\n" + measurement(m.group(1), "mi", "km", " km", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) km(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "km", "mi", " mi", ".", ",")', u'Convert to miles:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (yd|yards?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "yd", "m", " m", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (gal(lons?)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "gal", "l", " l", ".", ",") + "\\n" + measurement(m.group(1), "uk_gal", "l", " l (in UK)", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (pint)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "pt", "dl", " dl", ".", ",") + "\\n" + measurement(m.group(1), "uk_pt", "dl", " dl (in UK)", ".", ",") + "\\n" + measurement(m.group(1), "pt", "l", " l", ".", ",") + "\\n" + measurement(m.group(1), "uk_pt", "l", " l (in UK)", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (l|L|litres?|liters?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "l", "gal", " gal", ".", ",") + "\\n" + measurement(m.group(1), "l", "gal", " gal (in UK)", ".", ",")', u'Convert to gallons:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) lbs?[.]?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "lbm", "kg", " kg", ".", ",")', u'Convert to metric:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) kg[.]?(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "kg", "lbm", " lb", ".", ",")', u'Convert to pounds:', u'option(LOCALE,"nonmetric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) mph(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mph", "km/h", " km/h", ".", ",")', u'Convert to km/hour:', u'option(LOCALE,"metric")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:[,.]\\d+)*) km/h(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "km/h", "mph", " mph", ".", ",")', u'Convert to miles/hour:', u'option(LOCALE,"nonmetric")']] \ No newline at end of file diff --git a/dictionaries/en/pythonpath/lightproof_handler_en.py b/dictionaries/en/pythonpath/lightproof_handler_en.py new file mode 100644 index 0000000..f3976bd --- /dev/null +++ b/dictionaries/en/pythonpath/lightproof_handler_en.py @@ -0,0 +1,121 @@ +import uno +import unohelper + +from lightproof_opts_en import lopts +from lightproof_opts_en import lopts_default +from lightproof_impl_en import pkg + +from com.sun.star.lang import XServiceInfo +from com.sun.star.awt import XContainerWindowEventHandler + +# options +options = {} + +def load(context): + try: + l = LightproofOptionsEventHandler(context) + for i in lopts: + l.load(i) + except: + pass + +def get_option(page, option): + try: + return options[page + "," + option] + except: + try: + return options[page[:2] + "," + option] + except: + return 0 + +def set_option(page, option, value): + options[page + "," + option] = int(value) + +class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWindowEventHandler ): + def __init__( self, ctx ): + p = uno.createUnoStruct( "com.sun.star.beans.PropertyValue" ) + p.Name = "nodepath" + p.Value = "/org.openoffice.Lightproof_%s/Leaves"%pkg + self.xConfig = ctx.ServiceManager.createInstance( 'com.sun.star.configuration.ConfigurationProvider' ) + self.node = self.xConfig.createInstanceWithArguments( 'com.sun.star.configuration.ConfigurationUpdateAccess', (p, ) ) + self.service = "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg + self.ImplementationName = self.service + self.services = (self.service, ) + + # XContainerWindowEventHandler + def callHandlerMethod(self, aWindow, aEventObject, sMethod): + if sMethod == "external_event": + return self.handleExternalEvent(aWindow, aEventObject) + + def getSupportedMethodNames(self): + return ("external_event", ) + + def handleExternalEvent(self, aWindow, aEventObject): + sMethod = aEventObject + if sMethod == "ok": + self.saveData(aWindow) + elif sMethod == "back" or sMethod == "initialize": + self.loadData(aWindow) + return True + + def load(self, sWindowName): + child = self.getChild(sWindowName) + for i in lopts[sWindowName]: + sValue = child.getPropertyValue(i) + if sValue == '': + if i in lopts_default[sWindowName]: + sValue = 1 + else: + sValue = 0 + set_option(sWindowName, i, sValue) + + def loadData(self, aWindow): + sWindowName = self.getWindowName(aWindow) + if (sWindowName == None): + return + child = self.getChild(sWindowName) + for i in lopts[sWindowName]: + sValue = child.getPropertyValue(i) + if sValue == '': + if i in lopts_default[sWindowName]: + sValue = 1 + else: + sValue = 0 + xControl = aWindow.getControl(i) + xControl.State = sValue + set_option(sWindowName, i, sValue) + + def saveData(self, aWindow): + sWindowName = self.getWindowName(aWindow) + if (sWindowName == None): + return + child = self.getChild(sWindowName) + for i in lopts[sWindowName]: + xControl = aWindow.getControl(i) + sValue = xControl.State + child.setPropertyValue(i, str(sValue)) + set_option(sWindowName, i, sValue) + self.commitChanges() + + def getWindowName(self, aWindow): + sName = aWindow.getModel().Name + if sName in lopts: + return sName + return None + + # XServiceInfo method implementations + def getImplementationName (self): + return self.ImplementationName + + def supportsService(self, ServiceName): + return (ServiceName in self.services) + + def getSupportedServiceNames (self): + return self.services + + def getChild(self, name): + return self.node.getByName(name) + + def commitChanges(self): + self.node.commitChanges() + return True diff --git a/dictionaries/en/pythonpath/lightproof_impl_en.py b/dictionaries/en/pythonpath/lightproof_impl_en.py new file mode 100644 index 0000000..8740b31 --- /dev/null +++ b/dictionaries/en/pythonpath/lightproof_impl_en.py @@ -0,0 +1,6 @@ +# -*- encoding: UTF-8 -*- +pkg = "en" +lang = "en" +locales = {'en-GB': ['en', 'GB', ''], 'en-ZW': ['en', 'ZW', ''], 'en-PH': ['en', 'PH', ''], 'en-TT': ['en', 'TT', ''], 'en-BZ': ['en', 'BZ', ''], 'en-NA': ['en', 'NA', ''], 'en-IE': ['en', 'IE', ''], 'en-GH': ['en', 'GH', ''], 'en-US': ['en', 'US', ''], 'en-IN': ['en', 'IN', ''], 'en-BS': ['en', 'BS', ''], 'en-JM': ['en', 'JM', ''], 'en-AU': ['en', 'AU', ''], 'en-NZ': ['en', 'NZ', ''], 'en-ZA': ['en', 'ZA', ''], 'en-CA': ['en', 'CA', '']} +version = "0.1" +author = "" diff --git a/dictionaries/en/pythonpath/lightproof_opts_en.py b/dictionaries/en/pythonpath/lightproof_opts_en.py new file mode 100644 index 0000000..aa43156 --- /dev/null +++ b/dictionaries/en/pythonpath/lightproof_opts_en.py @@ -0,0 +1,4 @@ +lopts = {} +lopts_default = {} +lopts['en'] = [u'grammar', u'cap', u'dup', u'pair', u'spaces', u'mdash', u'quotation', u'times', u'spaces2', u'ndash', u'apostrophe', u'ellipsis', u'spaces3', u'minus', u'metric', u'numsep', u'nonmetric'] +lopts_default['en'] = [u'spaces', u'times'] -- 1.7.4.1
From c18f6e2929826de70916e969e41935f28852208c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20N=C3=A9meth?= <nemeth@numbertext.org> Date: Mon, 5 Dec 2011 06:18:13 +0100 Subject: [PATCH] Hungarian sentence checking --- dictionaries/hu_HU/Lightproof.py | 323 ++++++++++++++++++++ dictionaries/hu_HU/Linguistic.xcu | 18 ++ dictionaries/hu_HU/README_lightproof_hu_HU.txt | 3 + dictionaries/hu_HU/description.xml | 2 +- dictionaries/hu_HU/dialog/OptionsDialog.xcs | 107 +++++++ dictionaries/hu_HU/dialog/OptionsDialog.xcu | 39 +++ dictionaries/hu_HU/dialog/hu_HU.xdl | 37 +++ dictionaries/hu_HU/dialog/hu_HU_en_US.properties | 32 ++ dictionaries/hu_HU/dialog/hu_HU_hu_HU.properties | 53 ++++ dictionaries/hu_HU/makefile.mk | 16 +- dictionaries/hu_HU/manifest.xml | 9 + .../hu_HU/pythonpath/lightproof_handler_hu_HU.py | 121 ++++++++ dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py | 1 + .../hu_HU/pythonpath/lightproof_impl_hu_HU.py | 6 + .../hu_HU/pythonpath/lightproof_opts_hu_HU.py | 4 + 15 files changed, 769 insertions(+), 2 deletions(-) create mode 100644 dictionaries/hu_HU/Lightproof.py create mode 100644 dictionaries/hu_HU/Linguistic.xcu create mode 100644 dictionaries/hu_HU/README_lightproof_hu_HU.txt create mode 100644 dictionaries/hu_HU/dialog/OptionsDialog.xcs create mode 100644 dictionaries/hu_HU/dialog/OptionsDialog.xcu create mode 100644 dictionaries/hu_HU/dialog/hu_HU.xdl create mode 100644 dictionaries/hu_HU/dialog/hu_HU_en_US.default create mode 100644 dictionaries/hu_HU/dialog/hu_HU_en_US.properties create mode 100644 dictionaries/hu_HU/dialog/hu_HU_hu_HU.properties create mode 100644 dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py create mode 100644 dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py create mode 100644 dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py create mode 100644 dictionaries/hu_HU/pythonpath/lightproof_opts_hu_HU.py diff --git a/dictionaries/hu_HU/Lightproof.py b/dictionaries/hu_HU/Lightproof.py new file mode 100644 index 0000000..0b3f7c5 --- /dev/null +++ b/dictionaries/hu_HU/Lightproof.py @@ -0,0 +1,323 @@ +# -*- encoding: UTF-8 -*- +# Lightproof grammar checker for LibreOffice and OpenOffice.org +# http://launchpad.net/lightproof +# version 1.4.1 (2011-06-10) +# +# 2009-2011 (c) László Németh (nemeth at numbertext org), license: GNU LGPL + +import uno, unohelper, sys, traceback, re +from lightproof_impl_hu_HU import locales +from lightproof_impl_hu_HU import pkg +import lightproof_handler_hu_HU +from string import join + +from com.sun.star.linguistic2 import XProofreader, XSupportedLocales +from com.sun.star.linguistic2 import ProofreadingResult, SingleProofreadingError +from com.sun.star.lang import XServiceInfo, XServiceName, XServiceDisplayName +from com.sun.star.lang import Locale +from com.sun.star.text.TextMarkupType import PROOFREADING + +# loaded rules +langrule = {} +# ignored rules +ignore = {} + +# cache for morphogical analyses +analyses = {} +stems = {} +suggestions = {} + +# assign Calc functions +calcfunc = None + +# check settings +def option(lang, opt): + return lightproof_handler_hu_HU.get_option(lang.Language + "_" + lang.Country, opt) + +# filtering affix fields (ds, is, ts etc.) +def onlymorph(st): + if st != None: + st = re.sub(r"^.*(st:|po:)", r"\1", st) # keep last word part + st = re.sub(r"\b(?=[dit][sp]:)","@", st) # and its affixes + st = re.sub(r"(?<!@)\b\w\w:\w+","", st).replace('@','').strip() + return st + +# if the pattern matches all analyses of the input word, +# return the last matched substring +def _morph(rLoc, word, pattern, all, onlyaffix): + global analyses + if word == None: + return None + if word not in analyses: + x = spellchecker.spell(u"<?xml?><query type='analyze'><word>" + word + "</word></query>", rLoc, ()) + if not x: + return None + t = x.getAlternatives() + if not t: + t = [""] + analyses[word] = t[0] + a = analyses[word].split("</a>")[:-1] + result = None + p = re.compile(pattern) + for i in a: + if onlyaffix: + i = onlymorph(i) + result = p.search(i) + if result: + result = result.group(0) + if not all: + return result + elif all: + return None + return result + +def morph(rLoc, word, pattern, all=True): + return _morph(rLoc, word, pattern, all, False) + +def affix(rLoc, word, pattern, all=True): + return _morph(rLoc, word, pattern, all, True) + +def spell(rLoc, word): + if word == None: + return None + return spellchecker.isValid(word, rLoc, ()) + +# get the tuple of the stem of the word or an empty array +def stem(rLoc, word): + global stems + if word == None: + return [] + if not word in stems: + x = spellchecker.spell(u"<?xml?><query type='stem'><word>" + word + "</word></query>", rLoc, ()) + if not x: + return [] + t = x.getAlternatives() + if not t: + t = [] + stems[word] = list(t) + return stems[word] + +# get the tuple of the morphological generation of a word or an empty array +def generate(rLoc, word, example): + if word == None: + return [] + x = spellchecker.spell(u"<?xml?><query type='generate'><word>" + word + "</word><word>" + example + "</word></query>", rLoc, ()) + if not x: + return [] + t = x.getAlternatives() + if not t: + t = [] + return list(t) + +# get suggestions +def suggest(rLoc, word): + global suggestions + if word == None: + return word + if word not in suggestions: + x = spellchecker.spell("_" + word, rLoc, ()) + if not x: + return word + t = x.getAlternatives() + suggestions[word] = join(t, "\n") + return suggestions[word] + +# get the nth word of the input string or None +def word(s, n): + a = re.match("(?u)( [-.\w%]+){" + str(n-1) + "}( [-.\w%]+)", s) + if not a: + return None + return a.group(2)[1:] + +# get the (-)nth word of the input string or None +def wordmin(s, n): + a = re.search("(?u)([-.\w%]+ )([-.\w%]+ ){" + str(n-1) + "}$", s) + if not a: + return None + return a.group(1)[:-1] + +def calc(funcname, par): + global calcfunc + global SMGR + if calcfunc == None: + calcfunc = SMGR.createInstance( "com.sun.star.sheet.FunctionAccess") + if calcfunc == None: + return None + return calcfunc.callFunction(funcname, par) + +def proofread( nDocId, TEXT, LOCALE, nStartOfSentencePos, nSuggestedSentenceEndPos, rProperties ): + global ignore + aErrs = [] + s = TEXT[nStartOfSentencePos:nSuggestedSentenceEndPos] + for i in get_rule(LOCALE): + if i[0] and not str(i[0]) in ignore: + for m in i[0].finditer(s): + if not i[3] or eval(i[3]): + aErr = uno.createUnoStruct( "com.sun.star.linguistic2.SingleProofreadingError" ) + aErr.nErrorStart = nStartOfSentencePos + m.start(0) # nStartOfSentencePos + aErr.nErrorLength = m.end(0) - m.start(0) + aErr.nErrorType = PROOFREADING + aErr.aRuleIdentifier = str(i[0]) + iscap = (i[4] and m.group(0)[0:1].isupper()) + if i[1][0:1] == "=": + aErr.aSuggestions = tuple(cap(eval(i[1][1:]).split("\n"), iscap, LOCALE)) + else: + aErr.aSuggestions = tuple(cap(m.expand(i[1]).split("\n"), iscap, LOCALE)) + comment = i[2] + if comment[0:1] == "=": + comment = eval(comment[1:]) + aErr.aShortComment = comment.split("\n")[0] + aErr.aFullComment = comment.split("\n")[-1] + aErr.aProperties = () + aErrs = aErrs + [aErr] + return tuple(aErrs) + +def cap(a, iscap, rLoc): + if iscap: + for i in range(0, len(a)): + if a[i][0:1] == "i": + if rLoc.Language == "tr" or rLoc.Language == "az": + a[i] = u"\u0130" + a[i][1:] + elif a[i][1:2] == "j" and rLoc.Language == "nl": + a[i] = "IJ" + a[i][2:] + else: + a[i] = "I" + a[i][1:] + else: + a[i] = a[i].capitalize() + return a + +def get_rule(rLocale): + module = rLocale.Language + if rLocale.Country != "": + module = module + "_" + rLocale.Country + try: + return langrule[module] + except: + try: + module = rLocale.Language + return langrule[module] + except: + try: + d = __import__("lightproof_" + pkg) + except: + print "Error: missing language data: " + module + return None + # compile regular expressions + for i in d.dic: + try: + if re.compile("[(][?]iu[)]").match(i[0]): + i += [True] + i[0] = re.sub("[(][?]iu[)]", "(?u)", i[0]) + else: + i += [False] + i[0] = re.compile(i[0]) + except: + print "Lightproof: bad rule -- ", i[0] + i[0] = None + langrule[module] = d.dic + return langrule[module] + +class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales): + + def __init__( self, ctx, *args ): + global spellchecker + global SMGR + self.ctx = ctx + self.ServiceName = "com.sun.star.linguistic2.Proofreader" + self.ImplementationName = "org.openoffice.comp.pyuno.Lightproof." + pkg + self.SupportedServiceNames = (self.ServiceName, ) + self.locales = [] + for i in locales: + l = locales[i] + self.locales += [Locale(l[0], l[1], l[2])] + self.locales = tuple(self.locales) + currentContext = uno.getComponentContext() + SMGR = currentContext.ServiceManager + spellchecker = SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext) + lightproof_handler_hu_HU.load(currentContext) + + # XServiceName method implementations + def getServiceName(self): + return self.ImplementationName + + # XServiceInfo method implementations + def getImplementationName (self): + return self.ImplementationName + + def supportsService(self, ServiceName): + return (ServiceName in self.SupportedServiceNames) + + def getSupportedServiceNames (self): + return self.SupportedServiceNames + + # XSupportedLocales + def hasLocale(self, aLocale): + if aLocale in self.locales: + return True + for i in self.locales: + if (i.Country == aLocale.Country or i.Country == "") and aLocale.Language == i.Language: + return True + return False + + def getLocales(self): + return self.locales + + # XProofreader + def isSpellChecker(self): + return False + + def doProofreading(self, nDocId, rText, rLocale, nStartOfSentencePos, \ + nSuggestedSentenceEndPos, rProperties): + aRes = uno.createUnoStruct( "com.sun.star.linguistic2.ProofreadingResult" ) + aRes.aDocumentIdentifier = nDocId + aRes.aText = rText + aRes.aLocale = rLocale + aRes.nStartOfSentencePosition = nStartOfSentencePos + aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos + l = rText[nSuggestedSentenceEndPos:nSuggestedSentenceEndPos+1] + while l == " ": + aRes.nStartOfNextSentencePosition = aRes.nStartOfNextSentencePosition + 1 + l = rText[aRes.nStartOfNextSentencePosition:aRes.nStartOfNextSentencePosition+1] + if aRes.nStartOfNextSentencePosition == nSuggestedSentenceEndPos and l!="": + aRes.nStartOfNextSentencePosition = nSuggestedSentenceEndPos + 1 + aRes.nBehindEndOfSentencePosition = aRes.nStartOfNextSentencePosition + + try: + aRes.aErrors = proofread( nDocId, rText, rLocale, \ + nStartOfSentencePos, aRes.nBehindEndOfSentencePosition, rProperties) + except: + traceback.print_exc(file=sys.stdout) + aRes.aErrors = () + aRes.aProperties = () + aRes.xProofreader = self + return aRes + + def ignoreRule(self, rid, aLocale): + global ignore + ignore[rid] = 1 + + def resetIgnoreRules(self): + global ignore + ignore = {} + + # XServiceDisplayName + def getServiceDisplayName(self, aLocale): + return "Lightproof Grammar Checker (" + pkg + ")" + +g_ImplementationHelper = unohelper.ImplementationHelper() +g_ImplementationHelper.addImplementation( Lightproof, \ + "org.openoffice.comp.pyuno.Lightproof." + pkg, + ("com.sun.star.linguistic2.Proofreader",),) + +g_ImplementationHelper.addImplementation( lightproof_handler_hu_HU.LightproofOptionsEventHandler, \ + "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg, + ("com.sun.star.awt.XContainerWindowEventHandler",),) + +abbrev=re.compile(ur"(?i)\\b([a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed\xd6\xdc\xd3\u0150\xda\xc9\xc1\u0170\xcd]|\xc1e|\xc1ht|AkH|al|\xe1lt|\xe1pr|aug|Avtv|bek|Bp|br|bt|Btk|cca|ci(i|ii|v|x)?|cl(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii|xxx|xxxi|xxxii|xxxiii|xxxiv|xxxix|xxxv|xxxvi|xxxvii|xxxviii)?|Co|cv(i|ii|iii)?|cx(c|ci|cii|ciii|civ|cix|cv|cvi|cvii|cviii|i|ii|iii|iv|ix|l|li|lii|liii|liv|lix|lv|lvi|lvii|lviii|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii)?|cs|Csjt|Cstv|cs\xfct|dec|dk|dny|dr|du|dz(s)?|egy|\xe9k|\xc9Ksz|em|\xe9ny|\xc9pt|\xe9rk|etc|Etv|e\xfc|ev|\xe9vf|febr|felv|Flt|ford|f\u0151isk|fsz(la|t)?|Ftv|gimn|g\xf6r|gr|Gt|gy|Gyvt|habil|hg|hiv|Hjt|honv|Hpt|hrsz|hsz|Hszt|htb|id|ifj|ig(h)?|ii(i)?|ill|Inc|ind|isk|iv|ix|izr|jan|jegyz|j\xfal|j\xfan|kat|kb|Kbt|ker|kft|kgy|kht|kir|kiv|Kjt|kk(t)?|koll|korm|k\xf6v|kp|Kr|krt|Kt(v)?|ld|li(i|ii|v|x)?|Ltd|ltp|Ltv|luth|lv(i|ii|iii)?|lx(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii|xx|xxi|xxii|xxiii|xxiv|xxix|xxv|xxvi|xxvii|xxviii)?|ly|m\xe1j|m\xe1rc|mat|max|mb|megh|megj|MHSz|min|mk|Mo|Mt|NB|nov|ny(\xe1)?|Nyilv|nyrt|okl|okt|olv|op|orsz|ort|ov(h)?|\xf6ssz|\xd6tv|\xf6zv|Pf|pl(d)?|prof|prot|Ptk|pu|ref|rk(p)?|r\xf3m|r\xf6v|rt|sgt|spec|stb|sz(ept|erk)?|Szjt|szoc|Szt(v)?|sz\xfcl|Tbj|tc|tel|tkp|tszf|tvr|ty|ua|ui|\xfam|\xfan|uo|Ve|Vhr|vi(i|ii)?|v\xf6|vsz|Vt(v)?|xc(i|ii|iii|iv|ix|v|vi|vii|viii)?|xi(i|ii|v|x)?|xl(i|ii|iii|iv|ix|v|vi|vii|viii)?|xv(i|ii|iii)?|xx(i|ii|iii|iv|ix|v|vi|vii|viii|x|xi|xii|xiii|xiv|xix|xv|xvi|xvii|xviii)?|zrt)\\.") + + +def measurement(mnum, min, mout, mstr): + m = calc("CONVERT_ADD", (float(mnum.replace(",", ".").replace(u"\u2212", "-")), min, mout)) + a = list(set([str(calc("ROUND", (m, 0)))[:-2], str(calc("ROUND", (m, 1))), str(calc("ROUND", (m, 2))), str(m)])) # remove duplicated rounded items + a.sort(lambda x, y: len(x) - len(y)) # sort by string length + return join(a, mstr + "\n").replace(".", ",").replace("-", u"\u2212") + mstr diff --git a/dictionaries/hu_HU/Linguistic.xcu b/dictionaries/hu_HU/Linguistic.xcu new file mode 100644 index 0000000..fc58f0c --- /dev/null +++ b/dictionaries/hu_HU/Linguistic.xcu @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<oor:component-data oor:name="Linguistic" + oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" + xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <node oor:name="ServiceManager"> + + <node oor:name="GrammarCheckers"> + <node oor:name="org.openoffice.comp.pyuno.Lightproof.hu_HU" + oor:op="fuse"> + <prop oor:name="Locales" oor:type="oor:string-list"> + <value>hu-HU</value> + </prop> + </node> + </node> + + </node> + +</oor:component-data> diff --git a/dictionaries/hu_HU/README_lightproof_hu_HU.txt b/dictionaries/hu_HU/README_lightproof_hu_HU.txt new file mode 100644 index 0000000..800ad50 --- /dev/null +++ b/dictionaries/hu_HU/README_lightproof_hu_HU.txt @@ -0,0 +1,3 @@ +Hungarian sentence checker for LibreOffice +see http://launchpad.net/lightproof and http://numbertext.org/lightproof +2011 (c) László Németh, license: GNU LGPL diff --git a/dictionaries/hu_HU/description.xml b/dictionaries/hu_HU/description.xml index bc04535..1862cc9 100644 --- a/dictionaries/hu_HU/description.xml +++ b/dictionaries/hu_HU/description.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> - <version value="2010.10.19" /> + <version value="2011.12.05" /> <identifier value="org.openoffice.hu.hunspell.dictionaries" /> <display-name> <name lang="en">Hungarian spelling dictionary, hyphenation patterns, and thesaurus</name> diff --git a/dictionaries/hu_HU/dialog/OptionsDialog.xcs b/dictionaries/hu_HU/dialog/OptionsDialog.xcs new file mode 100644 index 0000000..18b124e --- /dev/null +++ b/dictionaries/hu_HU/dialog/OptionsDialog.xcs @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +oor:name="Lightproof_hu_HU" oor:package="org.openoffice" xml:lang="en-US"> +<info> +<author></author> +<desc>Contains the options data used for the test extensions.</desc> +</info> +<templates> + + <group oor:name="hu_HU"> + <info> + <desc>The data for one leaf.</desc> + </info> +<prop oor:name="cap" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="par" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="quot" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="wordpart" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="dash" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="comma" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="numpart" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="grammar" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="style" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="dup0" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="compound" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="dup" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="allcompound" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="dup2" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="money" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="dup3" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="SI" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="hyphen" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="apost" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="spaces" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="frac" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="ligature" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="elli" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="spaces2" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="thin" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="noligature" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="idx" oor:type="xs:string"> + <value></value> +</prop> +<prop oor:name="minus" oor:type="xs:string"> + <value></value> +</prop> + </group> + </templates> + <component> + <group oor:name="Leaves"> + + <node-ref oor:name="hu_HU" oor:node-type="hu_HU"/> + </group> + </component> + +</oor:component-schema> diff --git a/dictionaries/hu_HU/dialog/OptionsDialog.xcu b/dictionaries/hu_HU/dialog/OptionsDialog.xcu new file mode 100644 index 0000000..8d361be --- /dev/null +++ b/dictionaries/hu_HU/dialog/OptionsDialog.xcu @@ -0,0 +1,39 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd"> +<oor:component-data oor:name="OptionsDialog" oor:package="org.openoffice.Office" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <node oor:name="Nodes"> + <node oor:name="org.openoffice.lightproof" oor:op="fuse"> + <prop oor:name="Label"> + <value xml:lang="en">Dictionaries</value> + <value xml:lang="hu">Szótárak</value> + </prop> + <node oor:name="Leaves"> + + <node oor:name="org.openoffice.lightproof.hu_HU" oor:op="fuse"> + + <prop oor:name="Id"> + <value>org.openoffice.hu.hunspell.dictionaries</value> + </prop> + + <prop oor:name="Label"> + + <value xml:lang="en">Hungarian sentence checking</value> + + <value xml:lang="hu">Magyar mondatellenőrzés</value> + + </prop> + + <prop oor:name="OptionsPage"> + <value>%origin%/hu_HU.xdl</value> + </prop> + + <prop oor:name="EventHandlerService"> + <value>org.openoffice.comp.pyuno.LightproofOptionsEventHandler.hu_HU</value> + </prop> + + </node> + + </node> + </node> + </node> +</oor:component-data> diff --git a/dictionaries/hu_HU/dialog/hu_HU.xdl b/dictionaries/hu_HU/dialog/hu_HU.xdl new file mode 100644 index 0000000..c62bd3a --- /dev/null +++ b/dictionaries/hu_HU/dialog/hu_HU.xdl @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd"> +<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="hu_HU" dlg:left="101" dlg:top="52" dlg:width="196" dlg:height="72" dlg:closeable="true" dlg:moveable="true" dlg:withtitlebar="false"> + <dlg:bulletinboard> +<dlg:fixedline dlg:id="spelling" dlg:tab-index="0" dlg:left="5" dlg:top="5" dlg:width="240" dlg:height="10" dlg:value="&spelling"/> +<dlg:checkbox dlg:id="cap" dlg:tab-index="1" dlg:left="10" dlg:top="15" dlg:width="120" dlg:height="10" dlg:value="&cap" dlg:checked="false" dlg:help-text="&hlp_cap"/> +<dlg:checkbox dlg:id="par" dlg:tab-index="2" dlg:left="130" dlg:top="15" dlg:width="120" dlg:height="10" dlg:value="&par" dlg:checked="false" dlg:help-text="&hlp_par"/> +<dlg:checkbox dlg:id="quot" dlg:tab-index="4" dlg:left="10" dlg:top="25" dlg:width="120" dlg:height="10" dlg:value="&quot" dlg:checked="false" dlg:help-text="&hlp_quot"/> +<dlg:checkbox dlg:id="wordpart" dlg:tab-index="5" dlg:left="130" dlg:top="25" dlg:width="120" dlg:height="10" dlg:value="&wordpart" dlg:checked="false" /> +<dlg:checkbox dlg:id="dash" dlg:tab-index="7" dlg:left="10" dlg:top="35" dlg:width="120" dlg:height="10" dlg:value="&dash" dlg:checked="true" dlg:help-text="&hlp_dash"/> +<dlg:checkbox dlg:id="comma" dlg:tab-index="8" dlg:left="130" dlg:top="35" dlg:width="120" dlg:height="10" dlg:value="&comma" dlg:checked="false" dlg:help-text="&hlp_comma"/> +<dlg:checkbox dlg:id="numpart" dlg:tab-index="10" dlg:left="10" dlg:top="45" dlg:width="120" dlg:height="10" dlg:value="&numpart" dlg:checked="false" dlg:help-text="&hlp_numpart"/> +<dlg:checkbox dlg:id="grammar" dlg:tab-index="11" dlg:left="130" dlg:top="45" dlg:width="120" dlg:height="10" dlg:value="&grammar" dlg:checked="false" /> +<dlg:fixedline dlg:id="proofreading" dlg:tab-index="13" dlg:left="5" dlg:top="55" dlg:width="240" dlg:height="10" dlg:value="&proofreading"/> +<dlg:checkbox dlg:id="style" dlg:tab-index="14" dlg:left="10" dlg:top="65" dlg:width="120" dlg:height="10" dlg:value="&style" dlg:checked="false" /> +<dlg:checkbox dlg:id="dup0" dlg:tab-index="15" dlg:left="130" dlg:top="65" dlg:width="120" dlg:height="10" dlg:value="&dup0" dlg:checked="true" dlg:help-text="&hlp_dup0"/> +<dlg:checkbox dlg:id="compound" dlg:tab-index="17" dlg:left="10" dlg:top="75" dlg:width="120" dlg:height="10" dlg:value="&compound" dlg:checked="false" dlg:help-text="&hlp_compound"/> +<dlg:checkbox dlg:id="dup" dlg:tab-index="18" dlg:left="130" dlg:top="75" dlg:width="120" dlg:height="10" dlg:value="&dup" dlg:checked="false" /> +<dlg:checkbox dlg:id="allcompound" dlg:tab-index="20" dlg:left="10" dlg:top="85" dlg:width="120" dlg:height="10" dlg:value="&allcompound" dlg:checked="false" dlg:help-text="&hlp_allcompound"/> +<dlg:checkbox dlg:id="dup2" dlg:tab-index="21" dlg:left="130" dlg:top="85" dlg:width="120" dlg:height="10" dlg:value="&dup2" dlg:checked="false" /> +<dlg:checkbox dlg:id="money" dlg:tab-index="23" dlg:left="10" dlg:top="95" dlg:width="120" dlg:height="10" dlg:value="&money" dlg:checked="true" dlg:help-text="&hlp_money"/> +<dlg:checkbox dlg:id="dup3" dlg:tab-index="24" dlg:left="130" dlg:top="95" dlg:width="120" dlg:height="10" dlg:value="&dup3" dlg:checked="false" /> +<dlg:checkbox dlg:id="SI" dlg:tab-index="26" dlg:left="10" dlg:top="105" dlg:width="120" dlg:height="10" dlg:value="&SI" dlg:checked="false" dlg:help-text="&hlp_SI"/> +<dlg:checkbox dlg:id="hyphen" dlg:tab-index="27" dlg:left="130" dlg:top="105" dlg:width="120" dlg:height="10" dlg:value="&hyphen" dlg:checked="false" dlg:help-text="&hlp_hyphen"/> +<dlg:fixedline dlg:id="typography" dlg:tab-index="29" dlg:left="5" dlg:top="115" dlg:width="240" dlg:height="10" dlg:value="&typography"/> +<dlg:checkbox dlg:id="apost" dlg:tab-index="30" dlg:left="10" dlg:top="125" dlg:width="60" dlg:height="10" dlg:value="&apost" dlg:checked="true" dlg:help-text="&hlp_apost"/> +<dlg:checkbox dlg:id="spaces" dlg:tab-index="31" dlg:left="70" dlg:top="125" dlg:width="60" dlg:height="10" dlg:value="&spaces" dlg:checked="true" dlg:help-text="&hlp_spaces"/> +<dlg:checkbox dlg:id="frac" dlg:tab-index="32" dlg:left="130" dlg:top="125" dlg:width="60" dlg:height="10" dlg:value="&frac" dlg:checked="false" dlg:help-text="&hlp_frac"/> +<dlg:checkbox dlg:id="ligature" dlg:tab-index="33" dlg:left="190" dlg:top="125" dlg:width="60" dlg:height="10" dlg:value="&ligature" dlg:checked="false" dlg:help-text="&hlp_ligature"/> +<dlg:checkbox dlg:id="elli" dlg:tab-index="35" dlg:left="10" dlg:top="135" dlg:width="60" dlg:height="10" dlg:value="&elli" dlg:checked="false" dlg:help-text="&hlp_elli"/> +<dlg:checkbox dlg:id="spaces2" dlg:tab-index="36" dlg:left="70" dlg:top="135" dlg:width="60" dlg:height="10" dlg:value="&spaces2" dlg:checked="false" dlg:help-text="&hlp_spaces2"/> +<dlg:checkbox dlg:id="thin" dlg:tab-index="37" dlg:left="130" dlg:top="135" dlg:width="60" dlg:height="10" dlg:value="&thin" dlg:checked="false" dlg:help-text="&hlp_thin"/> +<dlg:checkbox dlg:id="noligature" dlg:tab-index="38" dlg:left="190" dlg:top="135" dlg:width="60" dlg:height="10" dlg:value="&noligature" dlg:checked="false" dlg:help-text="&hlp_noligature"/> +<dlg:checkbox dlg:id="idx" dlg:tab-index="40" dlg:left="10" dlg:top="145" dlg:width="60" dlg:height="10" dlg:value="&idx" dlg:checked="false" dlg:help-text="&hlp_idx"/> +<dlg:checkbox dlg:id="minus" dlg:tab-index="41" dlg:left="70" dlg:top="145" dlg:width="60" dlg:height="10" dlg:value="&minus" dlg:checked="false" dlg:help-text="&hlp_minus"/> +</dlg:bulletinboard> +</dlg:window> diff --git a/dictionaries/hu_HU/dialog/hu_HU_en_US.default b/dictionaries/hu_HU/dialog/hu_HU_en_US.default new file mode 100644 index 0000000..e69de29 diff --git a/dictionaries/hu_HU/dialog/hu_HU_en_US.properties b/dictionaries/hu_HU/dialog/hu_HU_en_US.properties new file mode 100644 index 0000000..22ba5ee --- /dev/null +++ b/dictionaries/hu_HU/dialog/hu_HU_en_US.properties @@ -0,0 +1,32 @@ +spelling=Spelling +cap=Capitalization +par=Parentheses +wordpart=Word parts of compounds +comma=Comma usage +proofreading=Proofreading +style=Style checking +compound=Underline typo-like compound words +allcompound=Underline all generated compound words +grammar=Possible mistakes +money=Consistency of money amounts +duplication=Word duplication +dup0=Word duplication +dup=Duplication within clauses +dup2=Duplication within sentences +dup3=Allow previous checkings with affixes +numpart=Thousand separation of numbers +typography=Typography +quot=Quotation marks +apost=Apostrophe +dash=En dash +elli=Ellipsis +ligature=Ligature suggestion +noligature=Underline ligatures +frac=Fractions +thin=Thin space +spaces=Double spaces +spaces2=More spaces +idx=Indices +minus=Minus +SI=Measurements +hyphen=Hyphenation of ambiguous words diff --git a/dictionaries/hu_HU/dialog/hu_HU_hu_HU.properties b/dictionaries/hu_HU/dialog/hu_HU_hu_HU.properties new file mode 100644 index 0000000..ddf6da1 --- /dev/null +++ b/dictionaries/hu_HU/dialog/hu_HU_hu_HU.properties @@ -0,0 +1,53 @@ +spelling=Helyes\u00edr\u00e1s +hlp_cap=Mondatok nagy kezd\u0151bet\u0171j\u00e9nek ellen\u0151rz\u00e9se. +cap=Nagy kezd\u0151bet\u0171 +hlp_par=Z\u00e1r\u00f3jelp\u00e1rok ellen\u0151rz\u00e9se. +par=Z\u00e1r\u00f3jelek +wordpart=Egybe- \u00e9s k\u00fcl\u00f6n\u00edr\u00e1si javaslatok +hlp_comma=A val\u00f3sz\u00edn\u0171leg hi\u00e1nyz\u00f3 \u00e9s felesleges vessz\u0151k jelz\u00e9se. +comma=Vessz\u0151haszn\u00e1latra vonatkoz\u00f3 javaslatok +hlp_numpart=Ezrestagol\u00e1s nem-t\u00f6r\u0151 sz\u00f3k\u00f6z\u00f6kkel (10000 \u2192 10\u202f000). +numpart=Nagy sz\u00e1mok tagol\u00e1sa sz\u00f3k\u00f6z\u00f6kkel +proofreading=Korrekt\u00fara +style=St\u00edlusellen\u0151rz\u00e9s +hlp_compound=R\u00f6vid, vagy r\u00f6vid tagot tartalmaz\u00f3, sz\u00f3\u00f6sszet\u00e9teli szab\u00e1lyok alapj\u00e1n gyakran hib\u00e1san elfogadott alakok al\u00e1h\u00faz\u00e1sa. +compound=Egyszer\u0171 nem sz\u00f3t\u00e1ri \u00f6sszetett szavak +hlp_allcompound=Minden sz\u00f3\u00f6sszet\u00e9teli szab\u00e1ly alapj\u00e1n elfogadott alak al\u00e1h\u00faz\u00e1sa. +allcompound=Minden nem sz\u00f3t\u00e1ri \u00f6sszetett sz\u00f3 +grammar=Javaslat kev\u00e9sb\u00e9 egy\u00e9rtelm\u0171 esetben is +hlp_dup0=Sz\u00f3ism\u00e9tl\u00e9s egym\u00e1st k\u00f6zvetlen\u00fcl k\u00f6vet\u0151 szavak eset\u00e9ben. +dup0=Sz\u00f3ism\u00e9tl\u00e9s +dup=Sz\u00f3ism\u00e9tl\u00e9s tagmondaton bel\u00fcl +dup2=Sz\u00f3ism\u00e9tl\u00e9s mondaton bel\u00fcl +dup3=Sz\u00f3ism\u00e9tl\u00e9s elt\u00e9r\u0151 toldal\u00e9kok eset\u00e9n is +hlp_money=A sz\u00e1mmal \u00e9s sz\u00e1mn\u00e9vvel is le\u00edrt mennyis\u00e9g megegyezik-e? (Pl. 10, azaz t\u00edz Ft.) +money=Sz\u00e1mok \u00e9s \u00e1t\u00edr\u00e1suk +typography=Tipogr\u00e1fia +hlp_quot=A magyar \u201ek\u00fcls\u0151\u201d \u00e9s \u00bbbels\u0151\u00ab id\u00e9z\u0151jelek ellen\u0151rz\u00e9se. +quot=Id\u00e9z\u0151jelek +hlp_apost=Az \u00edr\u00f3g\u00e9pes aposztr\u00f3f cser\u00e9je a tipogr\u00e1fiailag megfelel\u0151re (' \u2192 \u2019). +apost=Aposztr\u00f3f +hlp_dash=A kisk\u00f6t\u0151jel cser\u00e9je a nagyk\u00f6t\u0151jelre (- \u2192 \u2013). +dash=Nagyk\u00f6t\u0151jel \u00e9s gondolatjel +hlp_elli=H\u00e1rom pont cser\u00e9je az egaliz\u00e1lt h\u00e1rom pont karakterre (...\u2192\u2026). +elli=H\u00e1rom pont +hlp_frac=Perjellel elv\u00e1lasztott t\u00f6rtek cser\u00e9je Unicode karakterre (1/2 \u2192 \u00bd). +frac=T\u00f6rtek +hlp_thin=Keskeny sz\u00f3k\u00f6z (sp\u00e1cium) haszn\u00e1lata ezrestagol\u00e1shoz \u00e9s m\u00e1s esetekben. +thin=Keskeny sz\u00f3k\u00f6z +hlp_ligature=Csere Unicode f-ligat\u00far\u00e1ra. +ligature=f-ligat\u00fara javaslata +hlp_noligature=Unicode f-ligat\u00fara cser\u00e9je k\u00fcl\u00f6n\u00e1ll\u00f3 bet\u0171kre. +noligature=f-ligat\u00fara tilt\u00e1sa +hlp_spaces=K\u00e9t vagy h\u00e1rom ism\u00e9tl\u0151d\u0151 sz\u00f3k\u00f6z cser\u00e9je egyre. +spaces=Dupla sz\u00f3k\u00f6z +hlp_spaces2=N\u00e9gy vagy t\u00f6bb ism\u00e9tl\u0151d\u0151 sz\u00f3k\u00f6z cser\u00e9je egy tabul\u00e1torra. +spaces2=Sok sz\u00f3k\u00f6z +hlp_idx=Sz\u00e1mok cser\u00e9je m\u00e9rt\u00e9kegys\u00e9gekben \u00e9s k\u00e9miai k\u00e9pletekben val\u00f3di indexekre (m2 \u2192 m\u00b2). +idx=Indexek +hlp_minus=K\u00f6t\u0151jelek cser\u00e9je Unicode m\u00ednuszjelre a sz\u00e1mok el\u0151tt. +minus=M\u00ednuszjel +hlp_SI=Nem SI m\u00e9rt\u00e9kegys\u00e9gek \u00e1talak\u00edt\u00e1sa (\u00b0F, m\u00e9rf\u00f6ld, yard, l\u00e1b, h\u00fcvelyk, gallon, pint, font s\u00faly\u00fa). +SI=M\u00e9rt\u00e9kegys\u00e9gek +hlp_hyphen=Nem egy\u00e9rtelm\u0171en elv\u00e1laszthat\u00f3 sz\u00f3alakok elv\u00e1laszt\u00e1s\u00e1nak megad\u00e1sa (pl. megint, f\u00f6l\u00fcl). +hyphen=Hi\u00e1nyz\u00f3 elv\u00e1laszt\u00e1s megad\u00e1sa diff --git a/dictionaries/hu_HU/makefile.mk b/dictionaries/hu_HU/makefile.mk index dca137d..93ff038 100644 --- a/dictionaries/hu_HU/makefile.mk +++ b/dictionaries/hu_HU/makefile.mk @@ -58,7 +58,21 @@ COMPONENT_FILES= \ $(EXTENSIONDIR)$/help/hu/help.tree \ $(EXTENSIONDIR)$/help/hu/org.openoffice.hu.hunspell.dictionaries/page1.xhp \ $(EXTENSIONDIR)$/help/hu/org.openoffice.hu.hunspell.dictionaries/fsfhu.png \ - $(EXTENSIONDIR)$/help/hu/org.openoffice.hu.hunspell.dictionaries/szinonima.png + $(EXTENSIONDIR)$/help/hu/org.openoffice.hu.hunspell.dictionaries/szinonima.png \ + $(EXTENSIONDIR)$/Lightproof.py \ + $(EXTENSIONDIR)$/Linguistic.xcu \ + $(EXTENSIONDIR)$/pythonpath/lightproof_hu_HU.py \ + $(EXTENSIONDIR)$/pythonpath/lightproof_handler_hu_HU.py \ + $(EXTENSIONDIR)$/pythonpath/lightproof_impl_hu_HU.py \ + $(EXTENSIONDIR)$/pythonpath/lightproof_opts_hu_HU.py \ + $(EXTENSIONDIR)$/dialog/hu_HU_en_US.default \ + $(EXTENSIONDIR)$/dialog/hu_HU_en_US.properties \ + $(EXTENSIONDIR)$/dialog/hu_HU_hu_HU.properties \ + $(EXTENSIONDIR)$/dialog/hu_HU.xdl \ + $(EXTENSIONDIR)$/dialog/OptionsDialog.xcu \ + $(EXTENSIONDIR)$/dialog/OptionsDialog.xcs \ + $(EXTENSIONDIR)$/README_lightproof_hu_HU.txt \ + COMPONENT_CONFIGDEST=. COMPONENT_XCU= \ diff --git a/dictionaries/hu_HU/manifest.xml b/dictionaries/hu_HU/manifest.xml index 5699d5b..e2211ff 100644 --- a/dictionaries/hu_HU/manifest.xml +++ b/dictionaries/hu_HU/manifest.xml @@ -3,4 +3,13 @@ <manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest"> <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="dictionaries.xcu"/> <manifest:file-entry manifest:media-type="application/vnd.sun.star.help" manifest:full-path="help"/> + <manifest:file-entry manifest:full-path="dialog/OptionsDialog.xcs" + manifest:media-type="application/vnd.sun.star.configuration-schema" /> + <manifest:file-entry manifest:full-path="dialog/OptionsDialog.xcu" + manifest:media-type="application/vnd.sun.star.configuration-data" /> + <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Python" + manifest:full-path="Lightproof.py"/> + <manifest:file-entry + manifest:media-type="application/vnd.sun.star.configuration-data" + manifest:full-path="Linguistic.xcu" /> </manifest:manifest> diff --git a/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py new file mode 100644 index 0000000..df531ff --- /dev/null +++ b/dictionaries/hu_HU/pythonpath/lightproof_handler_hu_HU.py @@ -0,0 +1,121 @@ +import uno +import unohelper + +from lightproof_opts_hu_HU import lopts +from lightproof_opts_hu_HU import lopts_default +from lightproof_impl_hu_HU import pkg + +from com.sun.star.lang import XServiceInfo +from com.sun.star.awt import XContainerWindowEventHandler + +# options +options = {} + +def load(context): + try: + l = LightproofOptionsEventHandler(context) + for i in lopts: + l.load(i) + except: + pass + +def get_option(page, option): + try: + return options[page + "," + option] + except: + try: + return options[page[:2] + "," + option] + except: + return 0 + +def set_option(page, option, value): + options[page + "," + option] = int(value) + +class LightproofOptionsEventHandler( unohelper.Base, XServiceInfo, XContainerWindowEventHandler ): + def __init__( self, ctx ): + p = uno.createUnoStruct( "com.sun.star.beans.PropertyValue" ) + p.Name = "nodepath" + p.Value = "/org.openoffice.Lightproof_%s/Leaves"%pkg + self.xConfig = ctx.ServiceManager.createInstance( 'com.sun.star.configuration.ConfigurationProvider' ) + self.node = self.xConfig.createInstanceWithArguments( 'com.sun.star.configuration.ConfigurationUpdateAccess', (p, ) ) + self.service = "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg + self.ImplementationName = self.service + self.services = (self.service, ) + + # XContainerWindowEventHandler + def callHandlerMethod(self, aWindow, aEventObject, sMethod): + if sMethod == "external_event": + return self.handleExternalEvent(aWindow, aEventObject) + + def getSupportedMethodNames(self): + return ("external_event", ) + + def handleExternalEvent(self, aWindow, aEventObject): + sMethod = aEventObject + if sMethod == "ok": + self.saveData(aWindow) + elif sMethod == "back" or sMethod == "initialize": + self.loadData(aWindow) + return True + + def load(self, sWindowName): + child = self.getChild(sWindowName) + for i in lopts[sWindowName]: + sValue = child.getPropertyValue(i) + if sValue == '': + if i in lopts_default[sWindowName]: + sValue = 1 + else: + sValue = 0 + set_option(sWindowName, i, sValue) + + def loadData(self, aWindow): + sWindowName = self.getWindowName(aWindow) + if (sWindowName == None): + return + child = self.getChild(sWindowName) + for i in lopts[sWindowName]: + sValue = child.getPropertyValue(i) + if sValue == '': + if i in lopts_default[sWindowName]: + sValue = 1 + else: + sValue = 0 + xControl = aWindow.getControl(i) + xControl.State = sValue + set_option(sWindowName, i, sValue) + + def saveData(self, aWindow): + sWindowName = self.getWindowName(aWindow) + if (sWindowName == None): + return + child = self.getChild(sWindowName) + for i in lopts[sWindowName]: + xControl = aWindow.getControl(i) + sValue = xControl.State + child.setPropertyValue(i, str(sValue)) + set_option(sWindowName, i, sValue) + self.commitChanges() + + def getWindowName(self, aWindow): + sName = aWindow.getModel().Name + if sName in lopts: + return sName + return None + + # XServiceInfo method implementations + def getImplementationName (self): + return self.ImplementationName + + def supportsService(self, ServiceName): + return (ServiceName in self.services) + + def getSupportedServiceNames (self): + return self.services + + def getChild(self, name): + return self.node.getByName(name) + + def commitChanges(self): + self.node.commitChanges() + return True diff --git a/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py new file mode 100644 index 0000000..c857241 --- /dev/null +++ b/dictionaries/hu_HU/pythonpath/lightproof_hu_HU.py @@ -0,0 +1 @@ +dic = [[u'(?iu)(?<![-\\w\u2013.,\xad])[Aa] [Aa](?![-\\w\u2013\xad])', u'a', u'Sz\xf3ism\xe9tl\xe9s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xc9\xe9][Ss] [\xc9\xe9][Ss](?![-\\w\u2013\xad])', u'\xe9s', u'Sz\xf3ism\xe9tl\xe9s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][Oo][Gg][Yy][ -][Hh][Oo][Gg][Yy] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'hogyhogy nem/hogy, hogy nem', u'Hi\xe1nyz\xf3 vessz\u0151 vagy egybe\xedr\xe1s', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][Oo][Gg][Yy]-[Hh][Oo][Gg][Yy](?![-\\w\u2013\xad])', u'hogyhogy', u'Egybe\xedr\xe1s.', False], [u'(?u)([-\\w]+) hogy\\b(?![-])', u'\\1, hogy', u'Hi\xe1nyz\xf3 vessz\u0151?', u'word(s[m.end():],1) and morph(LOCALE,m.group(1), r"po:(vrb|noun)\\b") and not m.group(1) in [u"felt\xe9ve", "kell"]'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+) hogy(?![-\\w\u2013\xad])', u'\\1, hogy', u'Hi\xe1nyz\xf3 vessz\u0151?', u'option(LOCALE,"comma") and not re.match(u"(felt\xe9ve|ahelyett|an\xe9lk\xfcl|aszerint|hogy)$", m.group(1))'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+), (ahelyett|an\xe9lk\xfcl|aszerint), hogy(?![-\\w\u2013\xad])', u'\\1, \\2 hogy\\n\\1 \\2, hogy', u'K\xf6t\u0151sz\xf3szer\u0171 kapcsolat eset\xe9n nem \xedrunk a \u201ehogy\u201d el\xe9 vessz\u0151t. (AkH. 243.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]+), illetve, (ha|hogy)(?![-\\w\u2013\xad])', u'\\1, illetve \\2', u'K\xf6t\u0151sz\xf3szer\u0171 kapcsolat eset\xe9n nem \xedrunk az \u201eilletve\u201d ut\xe1n vessz\u0151t. (AkH. 243.)', False], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Hi\xe1nyz\xf3 nagy kezd\u0151bet\u0171?', u're.match(u"[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed].*[.?!] [A-Z\xd6\xdc\xd3\u0150\xda\xc9\xc1\u0170\xcd]", TEXT) and not abbrev.search(TEXT)'], [u'(?u)((?<=[!?.] )|^)(?P<low_1>[a-z\xf6\xfc\xf3\u0151\xfa\xe9\xe1\u0171\xed]+)(?![-\\w\u2013\xad])', u'= m.group("low_1").capitalize()', u'Hi\xe1nyz\xf3 nagy kezd\u0151bet\u0171?', u'option(LOCALE,"cap") and not abbrev.search(TEXT)'], [u'(?u)^[-\u2014] ', u'\u2013 ', u'A gondolatjel nagyk\xf6t\u0151jel (AkH. 258.)', u'option(LOCALE,"dash")'], [u'(?u) [-\u2014]([ ,;])', u' \u2013\\1', u'A gondolatjel nagyk\xf6t\u0151jel (AkH. 246.)', u'option(LOCALE,"dash")'], [u'(?u)^[-\u2013](\\w+)', u'\u2013 \\1', u'Gondolatjel sz\xf3k\xf6zzel a felsorol\xe1sn\xe1l (AkH. 258.)', u'option(LOCALE,"dash")'], [u'(?u)[[][.][.][.]]', u'[\u2026]', u'H\xe1rom pont.', u'option(LOCALE,"elli")'], [u'(?u)[.][.][.]', u'\u2026', u'H\xe1rom pont.', u'option(LOCALE,"elli")'], [u'(?u) +([.?!,:;)\u201d])\\b', u'\\1 ', u'Felcser\xe9lt sz\xf3k\xf6z \xe9s \xedr\xe1sjel?', False], [u'(?u) +([.?!,:;)\u201d])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel (AkH. 239.)', False], [u'(?u)[:,;]([.?!,;:])(?P<E_1>( |$))', u'\\1\\g<E_1>', u'Felesleges \xedr\xe1sjel.', False], [u'(?u)\\b[.][.](?P<E_1>( |$))', u'.\\g<E_1>\\n\u2026\\g<E_1>', u'Pont vagy h\xe1rom pont?', False], [u'(?u)(\\w)(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])(?P<Abc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])|(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]))', u'\\1\\g<punct_1> \\g<Abc_1>', u'Hi\xe1nyz\xf3 sz\xf3k\xf6z?', False], [u'(?u)(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])[.](?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])', u'\\g<abc_1>. \\g<ABC_1>', u'Hi\xe1nyz\xf3 sz\xf3k\xf6z?', False], [u'(?u)(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])|[.]) {2,3}(\\b|$)', u'\\1 ', u'Felesleges sz\xf3k\xf6z.', u'option(LOCALE,"spaces")'], [u'(?u)(^|\\b|(?P<punct_1>[?!,:;%\u2030\u2031\xb0\u201e\u201d])|[.]) {4,}(\\b|$)', u'\\1 \\n\\1\t', u'Sz\xf3k\xf6z\xf6k cser\xe9je egy sz\xf3k\xf6zre vagy tabul\xe1torra:', u'option(LOCALE,"spaces2")'], [u'(?iu)(\\d+)([Xx]| [Xx] )(\\d+(-\\w+)?)', u'\\1\xd7\\3', u'Szorz\xe1sjel.', False], [u"(?iu)(?P<a_1>(?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])+)['\xb4](?P<b_1>(?P<abc_2>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])*)", u'\\g<a_1>\u2019\\g<b_1>', u'Val\xf3di aposztr\xf3f', u'option(LOCALE,"apost")'], [u"(?u)['\xb4](\\d\\d(-\\w+)?)", u'\u2019\\1', u'Val\xf3di aposztr\xf3f', u'option(LOCALE,"apost")'], [u'(?u)->', u'\u2192', u'Ny\xedl?', False], [u'(?u)[)]', u'', u'Felesleges z\xe1r\xf3jel?', u'option(LOCALE,"par") and not "(" in TEXT'], [u'(?iu)[\\"\u201c\u201d\u201f\u201e]((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201f]', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek (AkH. 256.)', u'option(LOCALE,"quot")'], [u'(?iu)[\\"\u201c\u201d\u201f]((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e]*)[\\"\u201c\u201d\u201f]', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek (AkH. 256.)', u'option(LOCALE,"quot")'], [u'(?iu),,((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e_1><\']*)\'\'', u'\u201e\\1\u201d', u'Id\xe9z\u0151jelek (AkH. 256.)', False], [u'(?iu)>>((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e_1><\']*)<<', u'\xbb\\1\xab', u'Id\xe9z\u0151jelek (AkH. 256.)', False], [u'(?iu)\u2018+((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e\u2019]*)\u2019+', u'\u201e\\1\u201d\\n\xbb\\1\xab', u'Id\xe9z\u0151jelek (AkH. 256.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([(\u201e\xbb]) +(?![-\\w\u2013\xad])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel (AkH. 239.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad]) +([\xab])(?![-\\w\u2013\xad])', u'\\1', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel (AkH. 239.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(?iu)\xab((?P<abc_1>[a-zA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed])[^\\"\u201c\u201d\u201f\u201e\u2019]*)\xbb(?![-\\w\u2013\xad])', u'\xbb\\1\xab', u'Felcser\xe9lt bels\u0151 id\xe9z\u0151jelek (AkH. 256.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d[\\d \xa0\u202f.]*)(,?(?:[-\u2013]|00?)? F[Tt](?: \\(|, )[Aa][Zz][Aa][Zz] )([-\\w]+)( [Ff][Oo][Rr][Ii][Nn][Tt]\\)?)(?![-\\w\u2013\xad])', u'= m.group(1) + m.group(2) + calc("NUMBERTEXT", (re.sub(u"[ \xa0\u202f.]", "", m.group(1)), "hu")) + m.group(4)', u'A k\xe9t \xf6sszeg nem egyezik.', u'option(LOCALE,"money") and calc("NUMBERTEXT", ("1", "hu")) and calc("NUMBERTEXT", (re.sub(u"[ \xa0\u202f.]", "", m.group(1)), "hu")).replace(u"kett\u0151", u"k\xe9t").replace(u"ezeregysz\xe1z", u"ezersz\xe1z") != re.sub(ur"\\begy(sz\xe1z|ezer)", r"\\g<1>", m.group(3)).replace(u"ezeregysz\xe1z", u"ezersz\xe1z").replace(u"kett\u0151", u"k\xe9t")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d2_1>\u2212?\\d{2,3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d2_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})(?P<d3_1>\\d{3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})(?P<d3_1>\\d{3})(?P<d3_2>\\d{3})(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d2_1>\u2212?\\d{2,3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d2_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<d1_1>\u2212?\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<d3_2>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w{1,4})?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d2_1>\\d{2,3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d2_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})(?P<d3_1>\\d{3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})(?P<d3_1>\\d{3})(?P<d3_2>\\d{3})(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\xa0\\g<d3_1>\xa0\\g<d3_2>\xa0\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa. (AkH. 274.)', u'option(LOCALE,"numpart") and not option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d2_1>\\d{2,3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d2_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(?P<d1_1>\\d{1,3})\xa0?(?P<d3_1>\\d{3})\xa0?(?P<d3_2>\\d{3})\xa0?(?P<dn_1>\\d{3}(,\\w+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\g<d1_1>\u202f\\g<d3_1>\u202f\\g<d3_2>\u202f\\g<dn_1>', u'Nagy sz\xe1mok tagol\xe1sa nem t\xf6r\u0151 keskeny sz\xf3k\xf6z\xf6kkel. (AkH. 274.)', u'option(LOCALE,"numpart") and option(LOCALE,"thou")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d[\\d,]*)[ \xa0]([%\u2030\u2031\xb0](-\\w*)?)(?![-\\w\u2013\xad])', u'\\1\\2', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel. (AkH. 275.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d\\d*)[.](\\d\\d*)([%\u2030\u2031\xb0](-\\w*)?)(?![-\\w\u2013\xad])', u'\\1,\\2\\3', u'Tizedesvessz\u0151 a helyes \xedr\xe1sjel. (AkH. 291.)', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d\\d*)[.](\\d)(?![-\\w\u2013\xad])', u'\\1,\\2\\n\\1.\\2.', u'Tizedest\xf6rt (AkH. 291.) vagy sorsz\xe1m?', u'option(LOCALE,"comma") and (not wordmin(s[:m.start()],1) or not re.match("[A-Z]", wordmin(s[:m.start()],1)))'], [u'(?iu)(?<![-\\w\u2013.,\xad])((\\d\\d*[.]){2}\\d)(?![-\\w\u2013\xad])', u'\\1.', u'A sorsz\xe1mot pont k\xf6veti.', u'option(LOCALE,"comma") and not wordmin(s[:m.start()],1) or not re.match("[A-Z]", wordmin(s[:m.start()],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\d\\d\\d+)[.](\\d\\d)(?![-\\w\u2013\xad])', u'\\1,\\2\\n\\1.\\2.', u'Tizedest\xf6rt (AkH. 291.) vagy sorsz\xe1m?', u'option(LOCALE,"comma")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(\\d+([ \xa0]\\d\\d\\d){0,3}(,\\d+)?[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\1', u'M\xednuszjel kisk\xf6t\u0151jel helyett:', u'option(LOCALE,"minus")'], [u'(?iu)(?<![-\\w\u2013.,\xad])-(\\d+([ \xa0]\\d\\d\\d){0,3})[.](\\d+[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\u2212\\1,\\2', u'M\xednuszjel \xe9s tizedesvessz\u0151 (AkH. 291.)', u'option(LOCALE,"minus")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\u2212\\d+([ \xa0]\\d\\d\\d){0,3})[.](\\d+[%\u2030\u2031\xb0]?(-\\w+)?)(?![-\\w\u2013\xad])', u'\\1,\\2', u'Tizedesvessz\u0151 pont helyett (AkH. 291.):', False], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?)[ \xa0](\xb0(-\\w+))(?![-\\w\u2013\xad])', u'\\1\\2', u'Sz\xf3k\xf6z n\xe9lk\xfcl tapad\xf3 \xedr\xe1sjel (AkH. 239.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?)((\xb0C|\xb0F|\u2103|\u2109)(-\\w+)?)(?![-\\w\u2013\xad])', u'\\1\xa0\\2', u'Nem t\xf6r\u0151 sz\xf3k\xf6zzel elv\xe1lasztott m\xe9rt\xe9kegys\xe9g.', False], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<Month_1>Janu\xe1r|Febru\xe1r|M\xe1rcius|\xc1prilis|M\xe1jus|J\xfanius|J\xfalius|Augusztus|Szeptember|Okt\xf3ber|November|December)\\b(?![-\\w\u2013\xad])', u'= m.group("year_1") + ". " + m.group("Month_1").lower()', u'A h\xf3nap nev\xe9t kisbet\u0171vel \xedrjuk. (AkH. 144.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthposs_1>(|[^-\u2013ja\xe1e\xe9][a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]*))(?![-\\w\u2013\xad])', u'\\g<year_1>. \\g<month_1>\\g<notmonthposs_1>', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. (AkH. 294.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthcomp_1>[-\u2013](?P<month_2>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<notmonthposs_1>(|[^-\u2013ja\xe1e\xe9][a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]*)))(?![-\\w\u2013\xad])', u'\\g<year_1>. \\g<month_1>\\g<notmonthcomp_1>', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. (AkH. 294.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d) \xe9vi(?![-\\w\u2013\xad])', u'\\g<year_1>. \xe9vi', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. (AkH. 294.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<year_1>[12]\\d\\d\\d)[-\u2013](?P<year2_1>\\d\\d) \xe9vi(?![-\\w\u2013\xad])', u'\\g<year_1>\u2013\\g<year2_1>. \xe9vi', u'Az \xe9vsz\xe1m ut\xe1n itt pontot \xedrunk. (AkH. 294.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<nu_1>folyam\xe1n|el\u0151tti?|ut\xe1ni?|k\xf6z\xf6tti?|nyara|nyar\xe1\\w+|tele|tel\xe9\\w+|tavasza|tavasz\xe1\\w+|\u0151sze|\u0151sz\xe9\\w+)\\b(?![-\\w\u2013\xad])', u'\\g<year_1> \\g<nu_1>', u'Az \xe9vsz\xe1m ut\xe1n itt nem \xedrunk pontot. (AkH. 295.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])\\b(?P<year_1>[12]\\d\\d\\d)[.] (?P<month_1>janu\xe1r|febru\xe1r|m\xe1rcius|\xe1prilis|m\xe1jus|j\xfanius|j\xfalius|augusztus|szeptember|okt\xf3ber|november|december|jan[.]|febr[.]|m\xe1rc[.]|\xe1pr[.]|m\xe1j[.]|j\xfan[.]|j\xfal[.]|aug[.]|szept[.]|okt[.]|nov[.]|dec[.])(?P<monthposs_1>([ja\xe1e]|\xe9\\w)\\w*)\\b(?![-\\w\u2013\xad])', u'\\g<year_1> \\g<month_1>\\g<monthposs_1>', u'Az \xe9vsz\xe1m ut\xe1n itt nem \xedrunk pontot. (AkH. 295.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[.]-(?P<w_1>\\w*)', u'\\g<month_1> \\g<day_1>-\\g<w_1>', u'A nap ut\xe1n itt nem \xedrunk pontot. (AkH. 296.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])(?P<djel_1>[ ,;:?!])', u'\\g<month_1> \\g<day_1>.\\g<djel_1>', u'Ha d\xe1tum, hi\xe1nyzik a pont. (AkH. 296.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. (AkH. 297.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[.] [\xc9\xe9][Ss] (?P<day_2>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \xe9s \\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. (AkH. 297.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9]) [\xc9\xe9][Ss] (?P<day_2>[12]\\d|3[01]|0?[1-9])[.]? (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>. \xe9s \\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. (AkH. 297.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])[-\u2013](?P<day_2>[12]\\d|3[01]|0?[1-9]) (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>\u2013\\g<day_2>. \\g<nu_1>', u'A nap ut\xe1n itt pontot \xedrunk. (AkH. 297.)', False], [u'(?iu)\\b(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) (?P<day_1>[12]\\d|3[01]|0?[1-9])-(?P<day_2>[12]\\d|3[01]|0?[1-9]). (?P<nu_1>[\xd3\xf3][Tt][Aa]|[Ee][Ll][\u0150\u0151][Tt][Tt][Ii]?|[Uu][Tt][\xc1\xe1][Nn][Ii]?|[Kk][\xd6\xf6][Zz][\xd6\xf6][Tt][Tt][Ii]?)', u'\\g<month_1> \\g<day_1>\u2013\\g<day_2>. \\g<nu_1>', u'A napok k\xf6z\xe9 nagyk\xf6t\u0151jelet \xedrunk. (AkH. 297.)', False], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)[.](?P<monthnum_1>0?[1-9]|1[012])[.](?P<day_1>[12]\\d|3[01]|0?[1-9])(?P<optdot_1>([.]|))(?P<text_1>[^\\s][^\\s]*)', u'\\g<year_1>. \\g<monthnum_1>.\xa0\\g<day_1>\\g<optdot_1>\\g<text_1>', u'Sz\xf3k\xf6z a d\xe1tumban. (AkH. 293.)', False], [u'(?iu)(?P<month_1>[Jj][Aa][Nn][Uu][\xc1\xe1][Rr]|[Ff][Ee][Bb][Rr][Uu][\xc1\xe1][Rr]|[Mm][\xc1\xe1][Rr][Cc][Ii][Uu][Ss]|[\xc1\xe1][Pp][Rr][Ii][Ll][Ii][Ss]|[Mm][\xc1\xe1][Jj][Uu][Ss]|[Jj][\xda\xfa][Nn][Ii][Uu][Ss]|[Jj][\xda\xfa][Ll][Ii][Uu][Ss]|[Aa][Uu][Gg][Uu][Ss][Zz][Tt][Uu][Ss]|[Ss][Zz][Ee][Pp][Tt][Ee][Mm][Bb][Ee][Rr]|[Oo][Kk][Tt][\xd3\xf3][Bb][Ee][Rr]|[Nn][Oo][Vv][Ee][Mm][Bb][Ee][Rr]|[Dd][Ee][Cc][Ee][Mm][Bb][Ee][Rr]|[Jj][Aa][Nn][.]|[Ff][Ee][Bb][Rr][.]|[Mm][\xc1\xe1][Rr][Cc][.]|[\xc1\xe1][Pp][Rr][.]|[Mm][\xc1\xe1][Jj][.]|[Jj][\xda\xfa][Nn][.]|[Jj][\xda\xfa][Ll][.]|[Aa][Uu][Gg][.]|[Ss][Zz][Ee][Pp][Tt][.]|[Oo][Kk][Tt][.]|[Nn][Oo][Vv][.]|[Dd][Ee][Cc][.]) 1[.]?-(?P<e_1>[Ee]|[Ii]|[Ee][Ii]\\w*|[\xc9\xe9]\\w+)\\b', u'\\g<month_1> 1-j\\g<e_1>', u'Elseje sz\xe1mjegyes \xedr\xe1sa. (AkH. 296.)', False], [u'(?u)\\bstb[.], stb[.]', u'stb. stb.\\nstb.; stb.', u'K\xe9t stb. k\xf6z\xe9 nem tesz\xfcnk vessz\u0151t.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(db|Ft)[.](?= (?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed]))(?![-\\w\u2013\xad])', u'\\1', u'Nem ponttal \xedrjuk ezt a r\xf6vid\xedt\xe9st.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(db|Ft)[.](?=[,;:])(?![-\\w\u2013\xad])', u'\\1', u'Nem ponttal \xedrjuk ezt a r\xf6vid\xedt\xe9st.', False], [u'(?iu)\\b(?P<country_1>[Aa][Ll][Bb][\xc1\xe1][Nn]|[Aa][Mm][Ee][Rr][Ii][Kk][Aa][Ii]|[Aa][Nn][Gg][Oo][Ll]|[Bb][Ee][Ll][Gg][Aa]|[Bb][Oo][Ll][Gg][\xc1\xe1][Rr]|[Bb][Oo][Ss][Nn][Yy][\xc1\xe1][Kk]|[Bb][Rr][Ii][Tt]|[Cc][Ii][Pp][Rr][Uu][Ss][Ii]|[Cc][Ss][Ee][Hh]|[Dd][\xc1\xe1][Nn]|[\xc9\xe9][Ss][Zz][Tt]|[Ff][Ii][Nn][Nn]|[Ff][Rr][Aa][Nn][Cc][Ii][Aa]|[Gg][\xd6\xf6][Rr][\xd6\xf6][Gg]|[Hh][Oo][Ll][Ll][Aa][Nn][Dd]|[Hh][Oo][Rr][Vv][\xc1\xe1][Tt]|[\xcd\xed][Rr]|[Jj][Aa][Pp][\xc1\xe1][Nn]|[Kk][\xcd\xed][Nn][Aa][Ii]|[Ll][Ee][Nn][Gg][Yy][Ee][Ll]|[Ll][Ee][Tt][Tt]|[Ll][Ii][Tt][Vv][\xc1\xe1][Nn]|[Mm][Aa][Cc][Ee][Dd][\xd3\xf3][Nn]|[Mm][Aa][Gg][Yy][Aa][Rr]|[Mm][\xc1\xe1][Ll][Tt][Aa][Ii]|[Nn][\xc9\xe9][Mm][Ee][Tt]|[Nn][Oo][Rr][Vv][\xc9\xe9][Gg]|[Oo][Ll][Aa][Ss][Zz]|[Oo][Rr][Oo][Ss][Zz]|[Oo][Ss][Zz][Tt][Rr][\xc1\xe1][Kk]|[Pp][Oo][Rr][Tt][Uu][Gg][\xc1\xe1][Ll]|[Rr][Oo][Mm][\xc1\xe1][Nn]|[Ss][Pp][Aa][Nn][Yy][Oo][Ll]|[Ss][Vv][\xc1\xe1][Jj][Cc][Ii]|[Ss][Vv][\xc9\xe9][Dd]|[Ss][Zz][Ee][Rr][Bb]|[Ss][Zz][Ll][Oo][Vv][\xc1\xe1][Kk]|[Ss][Zz][Ll][Oo][Vv][\xc9\xe9][Nn]|[Tt][\xd6\xf6][Rr][\xd6\xf6][Kk]|[Uu][Kk][Rr][\xc1\xe1][Nn])-(?P<country_2>[Aa][Ll][Bb][\xc1\xe1][Nn]|[Aa][Mm][Ee][Rr][Ii][Kk][Aa][Ii]|[Aa][Nn][Gg][Oo][Ll]|[Bb][Ee][Ll][Gg][Aa]|[Bb][Oo][Ll][Gg][\xc1\xe1][Rr]|[Bb][Oo][Ss][Nn][Yy][\xc1\xe1][Kk]|[Bb][Rr][Ii][Tt]|[Cc][Ii][Pp][Rr][Uu][Ss][Ii]|[Cc][Ss][Ee][Hh]|[Dd][\xc1\xe1][Nn]|[\xc9\xe9][Ss][Zz][Tt]|[Ff][Ii][Nn][Nn]|[Ff][Rr][Aa][Nn][Cc][Ii][Aa]|[Gg][\xd6\xf6][Rr][\xd6\xf6][Gg]|[Hh][Oo][Ll][Ll][Aa][Nn][Dd]|[Hh][Oo][Rr][Vv][\xc1\xe1][Tt]|[\xcd\xed][Rr]|[Jj][Aa][Pp][\xc1\xe1][Nn]|[Kk][\xcd\xed][Nn][Aa][Ii]|[Ll][Ee][Nn][Gg][Yy][Ee][Ll]|[Ll][Ee][Tt][Tt]|[Ll][Ii][Tt][Vv][\xc1\xe1][Nn]|[Mm][Aa][Cc][Ee][Dd][\xd3\xf3][Nn]|[Mm][Aa][Gg][Yy][Aa][Rr]|[Mm][\xc1\xe1][Ll][Tt][Aa][Ii]|[Nn][\xc9\xe9][Mm][Ee][Tt]|[Nn][Oo][Rr][Vv][\xc9\xe9][Gg]|[Oo][Ll][Aa][Ss][Zz]|[Oo][Rr][Oo][Ss][Zz]|[Oo][Ss][Zz][Tt][Rr][\xc1\xe1][Kk]|[Pp][Oo][Rr][Tt][Uu][Gg][\xc1\xe1][Ll]|[Rr][Oo][Mm][\xc1\xe1][Nn]|[Ss][Pp][Aa][Nn][Yy][Oo][Ll]|[Ss][Vv][\xc1\xe1][Jj][Cc][Ii]|[Ss][Vv][\xc9\xe9][Dd]|[Ss][Zz][Ee][Rr][Bb]|[Ss][Zz][Ll][Oo][Vv][\xc1\xe1][Kk]|[Ss][Zz][Ll][Oo][Vv][\xc9\xe9][Nn]|[Tt][\xd6\xf6][Rr][\xd6\xf6][Kk]|[Uu][Kk][Rr][\xc1\xe1][Nn])\\b', u'\\g<country_1>\u2013\\g<country_2>', u'N\xe9pnevek k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)\\b(?P<year2_1>(1\\d\\d[1-9]|1\\d[1-9]\\d|20\\d[1-9]|20[1-9]\\d))-(?P<year_1>[12]\\d\\d\\d)\\b ', u'\\g<year_1>\u2013\\g<year_2> ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)-(?P<year2_1>(1\\d\\d[1-9]|1\\d[1-9]\\d|20\\d[1-9]|20[1-9]\\d))\\b ', u'\\g<year_1>\u2013\\g<year_2> ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)\\b(?P<year_1>[12]\\d\\d\\d)-(\\d\\d)\\b ', u'\\g<year_1>\u2013\\2 ', u'\xc9vsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk.', False], [u'(?u)([A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]\\w*)-(\\d+(-\\w+)?)', u'\\1\u2013\\2', u'T\xedpusn\xe9v \xe9s -sz\xe1m k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk. (AkH. 263.)', False], [u'(?u)pp[.] (\\d+)-(\\d+)[.]', u'pp. \\1\u2013\\2.', u'Oldalsz\xe1mok k\xf6z\xe9 nagyk\xf6t\u0151jelet tesz\xfcnk. (AkH. 263.)', False], [u'(?u)(\\d+)-(\\d+)[.] (o[.]|oldal\\w*)', u'\\1\u2013\\2. \\3', u'Oldalsz\xe1m', False], [u'(?u) (u[.]|utca|\xfat|t\xe9r) (\\d\\d*)-(\\d\\d*)[.]', u' \\1 \\2\u2013\\3.', u'Nagyk\xf6t\u0151jel a h\xe1zsz\xe1mban. (AkH. 298.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Ee] [Jj][\xc1\xe1][Tt][Ss]([Zz][Uu][Nn][Kk]|[Zz][Aa][Tt][Oo][Kk]|[Zz][Aa][Nn][Aa][Kk])(?![-\\w\u2013\xad])', u'ne j\xe1tss\\1', u'Helyes\xedr\xe1si hiba.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa\xc1\xe1] [Ll][Aa] [Cc][Aa][Rr][Tt][Ee](?![-\\w\u2013\xad])', u'\xe0 la carte', u'Helyesen \xe0 la carte.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Ll][Ll][Tt][Aa]([Ss][Ss]\\w*|[Tt]\\w*))(?![-\\w\u2013\xad])', u'\xe1lta\\2', u'\xc1ltat, hiteget \xe9rtelemben egy l-lel \xedrjuk.', u'not morph(LOCALE,m.group(1), "pa:")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xd6\xf6][Nn][\xc1\xe1][Ll][Ll]([Tt][Aa][Tt][\xd3\xf3\xc1\xe1]\\w*)(?![-\\w\u2013\xad])', u'\xf6n\xe1l\\1', u'Helyesen egy l-lel.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Bb][Ee][Ll][Ss][\u0150\u0151][Ss][\xc9\xe9][Gg][Ee][Ss](?![-\\w\u2013\xad])', u'bens\u0151s\xe9ges\\nbels\u0151s\xe9gb\u0151l k\xe9sz\xfclt', u'Sz\xf3t\xe9veszt\xe9s vagy sz\xf3j\xe1t\xe9k?', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy] [Ii][Ss](?![-\\w\u2013\xad])', u'dehogyis', u'Egybe\xedr\xe1s \u201eegy\xe1ltal\xe1n nem\u201d jelent\xe9sben.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'dehogynem', u'Egybe\xedr\xe1s \u201ede igen\u201d jelent\xe9sben.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Dd][Ee][Hh][Oo][Gg][Yy][Ii][Ss] [Nn][Ee][Mm](?![-\\w\u2013\xad])', u'dehogyisnem', u'Egybe\xedr\xe1s \u201ede igen\u201d jelent\xe9sben.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Kk][\xc9\xe9][Pp][Pp][Ee][Nn](?![-\\w\u2013\xad])', u'ekk\xe9ppen', u'Helyesen k\xe9t k-val.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ee][Ll] ([Tt][\xd6\xf6][Bb][Bb]\\w*|[Kk][Ee][Vv][Ee][Ss][Ee][Bb][Bb]\\w*)(?![-\\w\u2013\xad])', u'eggyel \\1', u'1-gyel \xe9rtelemben hossz\xfa gy-vel \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ee][Nn][Ll][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'egyel\u0151re\\negyform\xe1ra\\nd\xf6ntetlenre\\negyenl\u0151 sz\xe1m\xfara\\nazonos m\xe9ret\u0171re', u'Helyes\xedr\xe1si (egyel\u0151re) vagy st\xedlushiba (egyform\xe1ra).', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Ii]([Vv][\xc1\xe1][Ss][\xda\xfa]\\w*)(?![-\\w\u2013\xad])', u'egy\xed\\1', u'Hossz\xfa \xed-vel helyes.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Gg][Yy][Tt][\u0150\u0151][Ll]-[Ee][Gg][Yy][Ii][Gg](?![-\\w\u2013\xad])', u'egyt\u0151l egyig', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Ll][\u0150\u0151][Rr][Ee] [Hh][\xc1\xe1][Tt][Rr][Aa](?![-\\w\u2013\xad])', u'el\u0151re-h\xe1tra', u'K\xf6t\u0151jellel \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Ll][\u0150\u0151][Rr][Ee] [Ll][\xc1\xe1][Tt][Hh][Aa][Tt][\xd3\xf3][Ll][Aa][Gg](?![-\\w\u2013\xad])', u'el\u0151rel\xe1that\xf3lag', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Mm][Aa][Ii][Ll]:(?![-\\w\u2013\xad])', u'e-mail:', u'e-mail (elektronikus lev\xe9l)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Mm][Aa][Ii][Ll]-[Ll][Ee][Ll](?![-\\w\u2013\xad])', u'e-maillel', u'e-mail (elektronikus lev\xe9l)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee]([Mm][Aa][Ii][Ll][ -]|-[Mm][Aa][Ii][Ll]-|-[Mm][Aa][Ii][Ll])([Cc][\xcd\xed][Mm]\\w*)(?![-\\w\u2013\xad])', u'e-mail \\2', u'Helyesen e-mail c\xedm.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ee][Xx][- ](\\w+)(?![-\\w\u2013\xad])', u'ex\\1', u'Egybe\xedr\xe1s.', u'spell(LOCALE,"ex" + m.group(1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][Ii][Gg][Yy][Ee][Ll][Ee][Mm][Rr][Ee]([Mm][\xc9\xe9][Ll][Tt][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'figyelemre \\1', u'K\xfcl\xf6n\xedr\xe1s (kiv\xe9ve: \u201eigen figyelemrem\xe9lt\xf3\u201d).', u'wordmin(s[:m.start()],1) != "igen"'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Gg][Ee][Nn] [Ff][Ii][Gg][Yy][Ee][Ll][Ee][Mm][Rr][Ee] ([Mm][\xc9\xe9][Ll][Tt][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'igen figyelemre\\1', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Ll][Ll][Aa][Tt]|[Cc][Ss][Ee][Pp][Pp]|[Cc][Ss][Ii][Ll][Ll][Aa][Gg]|[\xc9\xe9][Kk]|[Ee][Ll][Ll][Ii][Pp][Ss][Zz][Ii][Ss]|[Ee][Mm][Bb][Ee][Rr]|[Ff][\xc9\xe9][Ll][Gg][\xd6\xf6][Mm][Bb]|[Ff][\xc9\xe9][Ll][Kk][\xd6\xf6][Rr]|[Gg][\xc1\xe1][Zz]|[Gg][\xd6\xf6][Mm][Bb]|[Gg][\xda\xfa][Ll][Aa]|[Hh][Aa][Rr][Aa][Nn][Gg]|[Hh][\xc1\xe1][Rr][Oo][Mm][Ss][Zz][\xd6\xf6][Gg]|[Hh][Aa][Ss][\xc1\xe1][Bb]|[Hh][Aa][Tt][Ss][Zz][\xd6\xf6][Gg]|[Hh][Ee][Nn][Gg][Ee][Rr]|[Kk][Aa][Gg][Yy][Ll][\xd3\xf3]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt]|[Kk][Oo][Cc][Kk][Aa]|[Kk][Oo][Rr][Oo][Nn][Gg]|[Kk][\xd6\xf6][Rr]|[Kk][\xd6\xf6][Rr][Tt][Ee]|[Kk][\xda\xfa][Pp]|[Nn][\xc9\xe9][Gg][Yy][Ss][Zz][\xd6\xf6][Gg]|[Nn][\xc9\xe9][Gg][Yy][Zz][Ee][Tt]|[Nn][Yy][Ee][Rr][Ee][Gg]|[Pp][Aa][Tt][Kk][\xd3\xf3]|[Pp][Ii][Rr][Aa][Mm][Ii][Ss]|[Pp][Ii][Ss][Kk][\xd3\xf3][Tt][Aa]|[Ss][Zz][Ii][Vv][Aa][Rr]|[Tt][Oo][Jj][\xc1\xe1][Ss]|[Tt][\xd6\xf6][Ll][Cc][Ss][\xc9\xe9][Rr]|[Tt][Rr][Aa][Pp][\xc9\xe9][Zz]|[Vv][Ee][Ss][Ee])([Ff][Oo][Rr][Mm][\xc1\xe1][Jj][\xda\xfa]|[Aa][Ll][Aa][Kk][\xda\xfa])(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][\u0150\u0151]([Ii][Rr][\xc1\xe1][Nn][Yy]\\w*|[Kk][\xd6\xf6][Zz][Ll][Ee][Kk][Ee][Dd][\xc9\xe9][Ss]\\w*|[Ss][Zz][Aa][Bb][\xc1\xe1][Ll][Yy]\\w*|[Ss][Zz][Ee][Rr][Vv][Ee][Zz][\u0150\u0151]\\w*)(?![-\\w\u2013\xad])', u'f\u0151 \\1', u'A \u201ef\u0151 m\u0171\u201d-h\xf6z hasonl\xf3an k\xfcl\xf6n\xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Hh][\xc1\xe1][Tt][Bb][Aa] ([Tt][\xc1\xe1][Mm][Aa][Dd][\xc1\xe1][Ss]\\w*)(?![-\\w\u2013\xad])', u'h\xe1tba\\1', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Dd][\u0150\u0151][Rr][\u0150\u0151][Ll]-[Ii][Dd][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'id\u0151r\u0151l id\u0151re', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Ii][Nn][Gg] [\xc9\xe9][Ss] [Jj][Aa][Nn][Gg](?![-\\w\u2013\xad])', u'jin \xe9s jang', u'Helyesen jin \xe9s jang.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\u0150\u0151][Rr](([\xd6\xf6][Zz]|[\xda\xfa][Tt]|[Uu][Tt])\\w*)(?![-\\w\u2013\xad])', u'k\xf6r\\1', u'R\xf6vid \xf6-vel a k\xf6r \xf6sszet\xe9teleiben.', u'morph(LOCALE,m.group(0), ur"st:k\u0151r\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][\xc9\xe9][Gg][Yy][Ss][Zz][\xcd\xed][Vv][Ee][Ss](?![-\\w\u2013\xad])', u'l\xe9gy sz\xedves\\nlegy\xe9l sz\xedves', u'Legy\xe9l sz\xedves \xe9rtelemben k\xfcl\xf6n\xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][Ee][Gg][Aa][Ll][\xc1\xe1][Bb][Bb] [Ii][Ss](?![-\\w\u2013\xad])', u'legal\xe1bbis', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])L[Ii][Cc][Hh][Tt][Ee][Nn]([Ss][Tt][Ee][Ii][Nn]\\w*)(?![-\\w\u2013\xad])', u'Liechten\\1', u'Helyesen Liechtenstein.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ll][Ll][\xc9\xe9][Kk][Hh][Ee][Ll][Yy]([Ss][\xc9\xe9][Gg]\\w*)(?![-\\w\u2013\xad])', u'mell\xe9khelyi\\1', u'Helyis\xe9g, mint szoba.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xda\xfa]([Ll][Aa][Nn][Dd][\xd3\xf3]\\w*)(?![-\\w\u2013\xad])', u'mu\\1', u'Helyesen r\xf6vid u-val.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Ee][Mm][Bb][Ii][Zz][Tt][Oo][Ss](?![-\\w\u2013\xad])', u'nem biztos', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Oo][Rr][Ii][Gg][Ii][Nn][\xc1\xe1][Ll][Tt](?![-\\w\u2013\xad])', u'origin\xe1l\\neredeti\\nbontatlan', u'Ha nem t\xe1rgyesetben van, \u201et\u201d n\xe9lk\xfcl \xedrjuk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ss][Zz][\xc9\xe9][Nn]|[Kk][\xc9\xe9][Nn]|[Mm][Aa][Nn][Gg][\xc1\xe1][Nn]|[Nn][Ii][Tt][Rr][Oo][Gg][\xc9\xe9][Nn]|[\xd3\xf3][Nn]|[Tt][Ii][Tt][\xc1\xe1][Nn]|[Tt][\xd3\xf3][Rr][Ii][Uu][Mm])([Dd][Ii][Oo][Xx][Ii][Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles alak.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ss][Zz][\xc9\xe9][Nn]|[Kk][\xc9\xe9][Nn]|[Nn][Ii][Tt][Rr][Oo][Gg][\xc9\xe9][Nn])([Mm][Oo][Nn][Oo][Xx][Ii][Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles alak.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Oo][Vv][\xc1\xe1][Bb][Bb][Ii][Tt][Tt][Uu][Nn][Kk](?![-\\w\u2013\xad])', u'tov\xe1bb\xedtunk\\ntov\xe1bb ittunk', u'Helyes\xedr\xe1si hiba.', False], [u'(?u)\\bun[.]', u'\xfan.', u'\xdagy nevezett r\xf6vid\xedt\xe9se \xfan. (AkH. 282.)', u'word(s[m.end():],1) and not re.match(u"[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]", word(s[m.end():],1))'], [u'(?iu)\\b[Vv][\xcd\xed][Zz]([Hh][Aa][Nn][Gg]\\w*)\\b', u'vissz\\1', u'Sz\xf3t\xe9veszt\xe9s?', False], [u'(?u)^[aA] (?P<word_1>[a\xe1e\xe9i\xedo\xf3\xf6\u0151u\xfa\xfc\u0171A\xc1E\xc9I\xcdO\xd3\xd6\u0150U\xda\xdc\u0170]\\w*)', u'az \\g<word_1>', u'Hib\xe1s n\xe9vel\u0151?', u'not re.match(r"(?i)i(ii?|[vx])$|Unicode$|Unix\\w*$", m.group("word_1")) and spell(LOCALE,m.group("word_1"))'], [u'(?u)(?<!(\\d[.]|az) )\\b(?P<a_1>[aA]) (?P<word_1>[a\xe1e\xe9i\xedo\xf3\xf6\u0151u\xfa\xfc\u0171A\xc1E\xc9I\xcdO\xd3\xd6\u0150U\xda\xdc\u0170]\\w*)', u'\\g<a_1>z \\g<word_1>\\n\\g<word_1>', u'Hib\xe1s vagy felesleges n\xe9vel\u0151?', u'wordmin(s[:m.start()],1) and not re.match(r"(?i)i(ii?|[vx])$|Unicode$|Unix\\w*$", m.group("word_1")) and spell(LOCALE,m.group("word_1"))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa](?![-\\w\u2013\xad])', u'az', u'Hib\xe1s n\xe9vel\u0151.', u'word(s[m.end():],1) and re.match(r"(1|5\\d*|[15]\\d\\d\\d)[.]?$", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Zz](?![-\\w\u2013\xad])', u'a', u'Hib\xe1s n\xe9vel\u0151?', u'not option(LOCALE,"grammar") and word(s[m.end():],2) and re.match(ur"(alfejezet|alszakasz|\xe1br|bekezd\xe9s|diagram|fejezet|k\xe9p|lap|oldal|paragrafus|szakasz|t\xe1bl\xe1zat)\\w*", word(s[m.end():],2)) and re.match(r"([02-46-9]|[1-46-9]\\d|[1-46-9]\\d\\d|[2346-9]\\d\\d\\d)[.]", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Zz](?![-\\w\u2013\xad])', u'a', u'Hib\xe1s n\xe9vel\u0151?', u'option(LOCALE,"grammar") and word(s[m.end():],1) and re.match(r"([02-46-9]|[1-46-9]\\d|[1-46-9]\\d\\d|[2346-9]\\d\\d\\d)[.]", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<num_1>\\d+|\\d+,\\d+) [Gg][Rr][.]?-[Mm][Aa][Ll](?![-\\w\u2013\xad])', u'\\g<num_1> g-mal', u'grammal r\xf6vid\xedt\xe9se g-mal (AkH. 286.)', False], [u'(?u) A vitamin(?P<w_1>\\w*)', u' A-vitamin\\g<w_1>', u'K\xf6t\u0151jeles n\xe9v.', False], [u'(?u)(?<![-\\w\u2013.,\xad])([B-Z]) vitamin(?P<w_1>\\w*)(?![-\\w\u2013\xad])', u'\\1-vitamin\\g<w_1>', u'K\xf6t\u0151jeles n\xe9v.', False], [u'(?u)(?<![-\\w\u2013.,\xad])([A-Z])-(vitamin)(\\w+)(?![-\\w\u2013\xad])', u'\\1-vitamin-\\2', u'K\xe9t k\xf6t\u0151jellel \xedrt alak.', u'morph(LOCALE,m.group(2)+m.group(3), "pa:")'], [u'(?u)(?<![-\\w\u2013.,\xad])([A-Z])-(vitamin) *(hi\xe1ny)(?![-\\w\u2013\xad])', u'\\1-\\2-\\3', u'K\xe9t k\xf6t\u0151jellel \xedrt alak.', False], [u'(?iu)\\b[Nn][Yy][\xcd\xed][Ll][Tt] [Ss][Zz][\xcd\xed][Vv][\u0170\u0171](?P<w_1>\\w*)', u'ny\xedltsz\xedv\u0171\\g<w_1>', u'Egybe\xedr\xe1s.', False], [u'(?iu)\\b[Jj][\xd3\xf3] [Ss][Zz][\xc1\xe1][Nn][Dd][\xc9\xe9][Kk][\xda\xfa](?P<w_1>\\w*)', u'j\xf3sz\xe1nd\xe9k\xfa\\g<w_1>', u'Egybe\xedr\xe1s.', False], [u'(?iu)[Kk][\xd6\xf6][Zz][\xd6\xf6][Ss] [Ll][\xd3\xf3][Nn][Aa][Kk] [Tt][\xda\xfa][Rr][\xd3\xf3][Ss]', u'k\xf6z\xf6s l\xf3nak t\xfaros', u'Helyes kifejez\xe9s.', False], [u'(?iu)\\b[Nn][Ee][Jj][Ll][Oo][Nn] [Hh][Aa][Rr][Ii][Ss][Nn][Yy][Aa]\\b', u'nejlonharisnya', u'Egybe\xedr\xe1s.', False], [u'(?iu)\\b[Oo][Dd][Aa]-[Vv][Ii][Ss][Ss][Zz][Aa](?P<hw_1>[a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)', u'oda-vissza \\g<hw_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)\\b[Pp][Rr][Oo] [\xc9\xe9][Ss] [Kk][Oo][Nn][Tt][Rr][Aa]\\b', u'pr\xf3 \xe9s kontra', u'Helyes latin kifejez\xe9s.', False], [u'(?iu)\\b[Rr][\xc1\xe1][Kk][\xd6\xf6][Vv][Ee][Tt][Kk][Ee][Zz](?P<hw_1>[a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-ZA-Z\xd6\xf6\xdc\xfc\xd3\xf3\u0170\u0171\u0150\u0151\xda\xfa\xc9\xe9\xc1\xe1\xcd\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)', u'r\xe1 k\xf6vetkez\\g<hw_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?iu)\\b[Tt][\xc1\xe1][Jj] [Jj][Ee][Ll][Ll][Ee][Gg][\u0170\u0171](?P<w_1>\\w*)', u't\xe1jjelleg\u0171\\g<w_1>', u'Egybe\xedr\xe1s.', False], [u'(?iu)([SsTtLlUuVv])-[Aa][Ll][Aa][Kk][\xda\xfa](?P<w_1>\\w*)', u'\\1 alak\xfa\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?u)(\\d\\d*)-szob\xe1s(?P<w_1>\\w*)', u'\\1 szob\xe1s\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?u)(\\d\\d*)-r\xe9szes(?P<w_1>\\w*)', u'\\1 r\xe9szes\\g<w_1>', u'K\xfcl\xf6n\xedr\xe1s.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<event_1>(Advent|H\xfasv\xe9t|Kar\xe1csony|Mindenszentek|P\xfcnk\xf6sd|(Any\xe1k|Ap\xe1k|Halottak|N\u0151k) [Nn]apj)(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])*)(?![-\\w\u2013\xad])', u'= m.group("event_1").lower()', u'Kisbet\u0171s kifejez\xe9s, ha nem c\xedm. (AkH. 145.)', u'wordmin(s[:m.start()],1) and word(s[m.end():],1) == word(s[m.end():],1).lower()'], [u'(?u)foci ([Ev])[bB](?P<kw_1>([-][a-zA-Z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd][a-zA-Z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]*)?)', u'foci-\\1b\\g<kw_1>', u'K\xf6t\u0151jeles kifejez\xe9s.', False], [u'(?u)^K\xe9ts\xe9g k\xedv\xfcl', u'K\xe9ts\xe9gk\xedv\xfcl', u'Egybe\xedr\xe1s.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Aa][Ll][Ii][Gg] [Aa][Ll][Ii][Gg](?![-\\w\u2013\xad])', u'alig-alig', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ii] [Kk][Ii](?![-\\w\u2013\xad])', u'ki-ki', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Ss] [Ii][Ss](?![-\\w\u2013\xad])', u'is-is', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ii][Nn][Ee][Kk] [Kk][Ii][Nn][Ee][Kk](?![-\\w\u2013\xad])', u'kinek-kinek', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Rr][Bb][Ee] [Kk][\xd6\xf6][Rr][Bb][Ee](?![-\\w\u2013\xad])', u'k\xf6rbe-k\xf6rbe', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Zz][Bb][Ee] [Kk][\xd6\xf6][Zz][Bb][Ee](?![-\\w\u2013\xad])', u'k\xf6zbe-k\xf6zbe', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn] [Kk][\xdc\xfc][Ll][\xd6\xf6][Nn](?![-\\w\u2013\xad])', u'k\xfcl\xf6n-k\xfcl\xf6n', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc1\xe1][Rr] [Mm][\xc1\xe1][Rr](?![-\\w\u2013\xad])', u'm\xe1r-m\xe1r', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc1\xe1][Ss] [Mm][\xc1\xe1][Ss](?![-\\w\u2013\xad])', u'm\xe1s-m\xe1s', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ss][Ss][Zz][Ee] [Mm][Ee][Ss][Ss][Zz][Ee](?![-\\w\u2013\xad])', u'messze-messze', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Aa][Gg][Yy][Oo][Nn] [Nn][Aa][Gg][Yy][Oo][Nn](?![-\\w\u2013\xad])', u'nagyon-nagyon', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][\xc9\xe9][Hh][Aa] [Nn][\xc9\xe9][Hh][Aa](?![-\\w\u2013\xad])', u'n\xe9ha-n\xe9ha', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Oo][Ll][Yy][Kk][Oo][Rr] [Oo][Ll][Yy][Kk][Oo][Rr](?![-\\w\u2013\xad])', u'olykor-olykor', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xda\xfa][Ll] [Tt][\xda\xfa][Ll](?![-\\w\u2013\xad])', u't\xfal-t\xfal', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Oo][Kk] [Ss][Oo][Kk](?![-\\w\u2013\xad])', u'sok-sok', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xda\xfa][Gg][Yy] [\xda\xfa][Gg][Yy](?![-\\w\u2013\xad])', u'\xfagy-\xfagy', u'K\xf6t\u0151jeles sz\xf3kett\u0151z\xe9s. (AkH. 97.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Cc][Ss][Ii][Pp] [Cc][Ss][Uu][Pp](?![-\\w\u2013\xad])', u'csip-csup', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xc9\xe9][Hh][Ee][Nn] [Ss][Zz][Oo][Mm][Jj][Aa][Nn](?![-\\w\u2013\xad])', u'\xe9hen-szomjan', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Nn][Gg][\xd3\xf3] [Bb][Ii][Nn][Gg][\xd3\xf3](?![-\\w\u2013\xad])', u'ing\xf3-bing\xf3', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Ee][Bb][Bb][Ee][Ll] [Ll][Oo][Bb][Bb][Aa][Ll](?![-\\w\u2013\xad])', u'sebbel-lobbal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][Ee][Gg][Rr][\u0150\u0151][Ll] [Vv][\xc9\xe9][Gg][Rr][\u0150\u0151][Ll](?![-\\w\u2013\xad])', u'szegr\u0151l-v\xe9gr\u0151l', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\xc9\xe9][Ll][Tt][\xc9\xe9][Bb][Ee][Nn] [Hh][Oo][Ss][Ss][Zz][\xc1\xe1][Bb][Aa][Nn](?![-\\w\u2013\xad])', u'sz\xe9lt\xe9ben-hossz\xe1ban', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\u0150\u0151][Rr][\xd6\xf6][Ss][Tt][\xdc\xfc][Ll] [Bb][\u0150\u0151][Rr][\xd6\xf6][Ss][Tt][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'sz\u0151r\xf6st\xfcl-b\u0151r\xf6st\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][Zz][\u0150\u0151][Rr][\xc9\xe9][Nn] [Ss][Zz][\xc1\xe1][Ll][\xc1\xe1][Nn](?![-\\w\u2013\xad])', u'sz\u0151r\xe9n-sz\xe1l\xe1n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xc9\xe9][Ll][Ee][Nn] [Nn][Yy][\xc1\xe1][Rr][Oo][Nn](?![-\\w\u2013\xad])', u't\xe9len-ny\xe1ron', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Ee][Ss][Tt][Ee][Ss][Tt][\u0150\u0151][Ll] [Ll][Ee][Ll][Kk][Ee][Ss][Tt][\u0150\u0151][Ll](?![-\\w\u2013\xad])', u'testest\u0151l-lelkest\u0151l', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][Ee][Ss][Tt][Ee][Ss][Tt][\xdc\xfc][Ll] [Ll][Ee][Ll][Kk][Ee][Ss][Tt][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'testest\xfcl-lelkest\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Bb][Bb][\xc9\xe9] [Kk][Ee][Vv][\xc9\xe9][Ss][Bb][\xc9\xe9](?![-\\w\u2013\xad])', u't\xf6bb\xe9-kev\xe9sb\xe9', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Rr][Ii][Kk] [Ss][Zz][Aa][Kk][Aa][Dd](?![-\\w\u2013\xad])', u't\xf6rik-szakad', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\u0170\u0171][Zz][\xd6\xf6][Nn] [Vv][\xcd\xed][Zz][Ee][Nn](?![-\\w\u2013\xad])', u't\u0171z\xf6n-v\xedzen', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\u0170\u0171][Zz][Zz][Ee][Ll] [Vv][Aa][Ss][Ss][Aa][Ll](?![-\\w\u2013\xad])', u't\u0171zzel-vassal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Vv][\xc9\xe9][Gg][Ee][Ss] [Vv][\xc9\xe9][Gg][Ii][Gg](?![-\\w\u2013\xad])', u'v\xe9ges-v\xe9gig', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xdc\xfc][Ss][Kk][\xc9\xe9][Nn] [Bb][Oo][Kk][Rr][Oo][Nn](?![-\\w\u2013\xad])', u't\xfcsk\xe9n-bokron', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Vv][\xc9\xe9][Gg][Rr][Ee] [Vv][Aa][Ll][Aa][Hh][\xc1\xe1][Rr][Aa](?![-\\w\u2013\xad])', u'v\xe9gre-valah\xe1ra', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Mm][\xcd\xed][Gg][Yy] [Aa][Mm][\xda\xfa][Gg][Yy](?![-\\w\u2013\xad])', u'im\xedgy-am\xfagy', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Nn][Nn][Ee][Nn] [Oo][Nn][Nn][Aa][Nn](?![-\\w\u2013\xad])', u'innen-onnan', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ii][Tt][Tt] [Oo][Tt][Tt](?![-\\w\u2013\xad])', u'itt-ott', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xcd\xed][Zz][Ii][Gg] [Vv][\xc9\xe9][Rr][Ii][Gg](?![-\\w\u2013\xad])', u'\xedzig-v\xe9rig', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xcd\xed][Zz][Zz][\xc9\xe9] [Pp][Oo][Rr][Rr][\xc1\xe1](?![-\\w\u2013\xad])', u'\xedzz\xe9-porr\xe1', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Aa][Jj][Jj][Aa][Ll] [Bb][Aa][Jj][Jj][Aa][Ll](?![-\\w\u2013\xad])', u'jajjal-bajjal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][\xd3\xf3][Bb][Aa][Nn] [Rr][Oo][Ss][Ss][Zz][Bb][Aa][Nn](?![-\\w\u2013\xad])', u'j\xf3ban-rosszban', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][Oo][Bb][Bb][Rr][Aa] [Bb][Aa][Ll][Rr][Aa](?![-\\w\u2013\xad])', u'jobbra-balra', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Jj][\xd3\xf3][Ll] [Rr][Oo][Ss][Ss][Zz][Uu][Ll](?![-\\w\u2013\xad])', u'j\xf3l-rosszul', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Kk][Rr][Ee] [Zz][\xd6\xf6][Ll][Dd][Rr][Ee](?![-\\w\u2013\xad])', u'k\xe9kre-z\xf6ldre', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Nn][Yy][Tt][Ee][Ll][Ee][Nn] [Kk][Ee][Ll][Ll][Ee][Tt][Ll][Ee][Nn](?![-\\w\u2013\xad])', u'k\xe9nytelen-kelletlen', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Zz][Ee][Nn] [Kk][\xd6\xf6][Zz][\xd6\xf6][Nn](?![-\\w\u2013\xad])', u'k\xe9zen-k\xf6z\xf6n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xd6\xf6][Rr][\xd6\xf6][Ss] [Kk][\xd6\xf6][Rr][\xdc\xfc][Ll](?![-\\w\u2013\xad])', u'k\xf6r\xf6s-k\xf6r\xfcl', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Zz][Zz][Ee][Ll] [Ll][\xc1\xe1][Bb][Bb][Aa][Ll](?![-\\w\u2013\xad])', u'k\xe9zzel-l\xe1bbal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Uu][Rr][Tt][\xc1\xe1][Nn] [Ff][Uu][Rr][Cc][Ss][\xc1\xe1][Nn](?![-\\w\u2013\xad])', u'kurt\xe1n-furcs\xe1n', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ll][\xc9\xe9][Pp][Tt][Ee][Nn] [Nn][Yy][Oo][Mm][Oo][Nn](?![-\\w\u2013\xad])', u'l\xe9pten-nyomon', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Nn][Ee][Tt] [Jj][\xd6\xf6][Vv][Ee][Tt](?![-\\w\u2013\xad])', u'menet-j\xf6vet', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Nn][Yy][Aa][Kk][Rr][Aa] [Ff][\u0150\u0151][Rr][Ee](?![-\\w\u2013\xad])', u'nyakra-f\u0151re', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xd6\xf6][Rr][\xd6\xf6][Kk][Kk][\xd6\xf6][Nn] [\xd6\xf6][Rr][\xd6\xf6][Kk][Kk][\xc9\xe9](?![-\\w\u2013\xad])', u'\xf6r\xf6kk\xf6n-\xf6r\xf6kk\xe9', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ss][\xdc\xfc][Ll][Vv][Ee] [Ff][\u0150\u0151][Vv][Ee](?![-\\w\u2013\xad])', u's\xfclve-f\u0151ve', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xda\xfa][Tt][Oo][Nn] [\xda\xfa][Tt][Ff][\xc9\xe9][Ll][Ee][Nn](?![-\\w\u2013\xad])', u'\xfaton-\xfatf\xe9len', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[\xdc\xfc][Gg][Gg][Yy][Ee][Ll] [Bb][Aa][Jj][Jj][Aa][Ll](?![-\\w\u2013\xad])', u'\xfcggyel-bajjal', u'Mell\xe9rendel\u0151 sz\xf3kapcsolat. (AkH. 100.)', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([\xc1\xe1][Gg]\\w*) ([Bb][Oo][Gg]\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles ikersz\xf3. (AkH. 103.)', u'stem(LOCALE,m.group(1)) == [u"\xe1g"] and stem(LOCALE,m.group(2)) == ["bog"]'], [u'(?u)(?<![-\\w\u2013.,\xad])(\xc9szaki|D\xe9li)(?:-S| [Ss])ark(?P<w_1>\\w*)(?![-\\w\u2013\xad])', u'\\1-sark\\g<w_1>', u'F\xf6ldrajzi n\xe9v.', False], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat)-(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)(?![-\\w\u2013\xad])', u'= m.group("Dir_1") + "-" + m.group("cap_1").lower()', u'Kisbet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. (AkH. 179.)', u'morph(LOCALE,m.group("cap_1"), r"po:noun_prs.*is:i_PLACE", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<dir_1>\xe9szak|d\xe9l|kelet|nyugat|\xe9szakkelet|\xe9szaknyugat|d\xe9lkelet|d\xe9lnyugat)-(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)(?![-\\w\u2013\xad])', u'= m.group("dir_1").capitalize() + "-" + m.group("cap_1")', u'Nagybet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. (AkH. 179.)', u'morph(LOCALE,m.group("cap_1"), r"po:noun_prs", False) and not morph(LOCALE,m.group("cap_1"),"is:i_PLACE", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat)-(?P<sc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)(?![-\\w\u2013\xad])', u'= m.group("Dir_1").lower() + "-" + m.group("sc_1")', u'Kisbet\u0171vel \xedrt f\xf6ldrajzi n\xe9v. (AkH. 179.)', u'wordmin(s[:m.start()],1) and word(s[m.end():],1) and not word(s[m.end():],1) == word(s[m.end():],1).capitalize() and morph(LOCALE,m.group("sc_1"), r"po:noun_prs.*is:i_PLACE", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<Dir_1>\xc9szak|D\xe9l|Kelet|Nyugat|\xc9szakkelet|\xc9szaknyugat|D\xe9lkelet|D\xe9lnyugat) (?P<w_1>(?P<Abc_1>(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])|(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd]))+)(?![-\\w\u2013\xad])', u'\\g<Dir_1>-\\g<w_1>', u'K\xf6t\u0151jellel \xedrt f\xf6ldrajzi n\xe9v. (AkH. 179.)', u'morph(LOCALE,m.group("w_1"), r"po:noun_prs")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<cap_1>(?P<ABC_1>[A-Z\xd6\xdc\xd3\u0170\u0150\xda\xc9\xc1\xcd])(?P<abc_1>[a-z\xf6\xfc\xf3\u0171\u0151\xfa\xe9\xe1\xed])+)-(?P<prop_1>Tenger|\xd3ce\xe1n|Sziget|F\xe9lsziget|K\xf6z\xe9phegys\xe9g)(?![-\\w\u2013\xad])', u'= m.group("cap_1") + "-" + m.group("prop_1").lower()', u'Kisbet\u0171s \xedrt k\xf6zn\xe9vi tag. (AkH. 176.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(\xc1rp\xe1d|Erzs\xe9bet|Haj\xf3gy\xe1ri|Margit|Megyeri|Pet\u0151fi|R\xe1k\xf3czi|Szabads\xe1g)-(h\xedd\\w*)(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s. (AkH. 182.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Szabads\xe1g)(h\xedd\\w*)(?![-\\w\u2013\xad])', u'\\1 \\2', u'K\xfcl\xf6n\xedr\xe1s. (AkH. 182.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Szabads\xe1g ?)(szobo?r\\w*)(?![-\\w\u2013\xad])', u'\\1-\\2', u'K\xf6t\u0151jeles \xf6sszet\xe9tel. (AkH. 140.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Fert\u0151)-(([tT]\xf3|[tT]av)\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. (AkH. 183.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(G\xf3bi|Kalah\xe1ri|Szahara)-([sS]ivatag\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. (AkH. 183.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(B\xf6rzs\xf6ny|B\xfckk|M\xe1tra|Mecsek|Pilis|Zempl\xe9n|V\xe9rtes)-([Hh]egys\xe9g\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. (AkH. 183.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Duna)-(folyam\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. (AkH. 183.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(Bodrog|Duna|Dr\xe1va|Ipoly|K\xf6r\xf6s|Maros|R\xe1ba|Saj\xf3|Tisza|Zala)-(([Ff]oly\xf3|[Ff]olyam)\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + " " + m.group(2).lower()', u'K\xf6t\u0151jel n\xe9lk\xfcl \xedrt f\xf6ldrajzi n\xe9v. (AkH. 183.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])Budapest (Liszt Ferenc )([Nn]emzetk\xf6zi [Rr]ep\xfcl\u0151t[e\xe9])(r\\w*)(?![-\\w\u2013\xad])', u'= m.group(1) + m.group(2).lower() + m.group(3) + "\\nferihegyi " + m.group(1) + m.group(2).lower() + m.group(3) + "\\n" + m.group(3).replace("r", "Ferihegy", 1).replace("gyrel", "ggyel").replace(u"gyr\xe9", u"ggy\xe9") + "\\nBudapest, " + m.group(1) + m.group(2).lower() + m.group(3)', u'A k\xf6zn\xe9vi tag kisbet\u0171s, a c\xedmet vessz\u0151vel tagoljuk. (AkH. 190., 298.; FNB 74.)', False], [u'(?u)(?<![-\\w\u2013.,\xad])(olya\\w+) (aki\\w*|ami\\w*)(?![-\\w\u2013\xad])', u'\\1, \\2', u'Hi\xe1nyz\xf3 vessz\u0151 a tagmondatok hat\xe1r\xe1n?', u'morph(LOCALE,m.group(2), r"st:(aki|ami|amilyen)\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?P<segedige_1>([Aa][Kk][Aa][Rr]|[Bb][\xcd\xed][Rr]|[Ff][Oo][Gg]|[Ll][Ee][Gg][Yy]|[Ll][Ee][Hh][Ee][Tt]|[Ll][Ee][Nn][Nn]|[Ll][Ee][Ss][Zz]|[Ll][Ee][Tt][Tt]|[Ss][Zz][Aa][Bb][Aa][Dd]|[Ss][Zz][Ee][Rr][Ee][Tt]|[Tt][Aa][Ll][\xc1\xe1][Ll]|[Tt][Uu][Dd]|[Vv][Aa][Nn]|[Vv][Oo][Ll])\\w*)(?P<szavak_1>( \\w+){0,}) (?P<igenev_1>(\\w+[Nn][Ii]))(?![-\\w\u2013\xad])', u'\\g<igekoto_1> \\g<segedige_1>\\g<szavak_1> \\g<igenev_1>', u'Az igek\xf6t\u0151t nem \xedrjuk egybe a seg\xe9dig\xe9vel.', u'morph(LOCALE,m.group("igenev_1"), "INFINITIVE") and morph(LOCALE,m.group("igekoto_1")+m.group("segedige_1"), r"is:[/\\w]*DEF|ds:tt")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?P<letige_1>([Ll][Ee][Gg][Yy]|[Ll][Ee][Hh][Ee][Tt]|[Ll][Ee][Nn][Nn]|[Ll][Ee][Ss][Zz]|[Ll][Ee][Tt][Tt]|[Vv][Aa][Nn]|[Vv][Oo][Ll])\\w*)(?P<szavak_1>( \\w+){0,}) (?P<igenev_1>(\\w+[Vv][EeAa]))(?![-\\w\u2013\xad])', u'\\g<igekoto_1> \\g<letige_1>\\g<szavak_1> \\g<igenev_1>', u'Az igek\xf6t\u0151 a lenni + -va/-ve szerkezetben nem a l\xe9tig\xe9hez kapcsol\xf3dik.', u'morph(LOCALE,m.group("igenev_1"), "_PART") and morph(LOCALE,m.group("igekoto_1")+m.group("letige_1"), r"is:[/\\w]*DEF|ds:tt")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([Hh][Aa][Dd]|[Hh][Aa][Gg][Yy])( ([Nn][Ee] )?)(?P<W_1>\\w+)(?![-\\w\u2013\xad])', u'\\1d\\2\\g<W_1>', u'Hadd helyesen.', u'morph(LOCALE,m.group("W_1"), r"(IMPER[_\\w]*SG_1|is:[_/\\w]*DEF_PL)") or (not wordmin(s[:m.start()],1) and morph(LOCALE,m.group("W_1"), r"is:[_/\\w]*DEF_SG_[23]"))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+[LlNnRrZz][Dd]) (?P<igekoto_1>[Aa][Bb][Bb][Aa]|[Aa][Gg][Yy][Oo][Nn]|[Aa][Ll][\xc1\xe1]|[\xc1\xe1][Ll][Tt][Aa][Ll]|[\xc1\xe1][Tt]|[Bb][Ee]|[Bb][Ee][Ll][Ee]|[Bb][Ee][Nn][Nn]|[Ee][Gg][Yy][Bb][Ee]|[Ee][Gg][Yy][\xdc\xfc][Tt][Tt]|[Ee][Ll]|[Ee][Ll][Ll][Ee][Nn]|[Ee][Ll][\u0150\u0151]|[Ee][Ll][\u0150\u0151][Rr][Ee]|[Ff][Ee][Ll]|[Ff][\xd6\xf6][Ll]|[Ff][\xc9\xe9][Ll][Bb][Ee]|[Ff][\xc9\xe9][Ll][Rr][Ee]|[Ff][Ee][Ll][\xdc\xfc][Ll]|[Ff][\xd6\xf6][Ll][\xdc\xfc][Ll]|[Ff][Ee][Nn][Nn]|[Ff][\xd6\xf6][Nn][Nn]|[Hh][\xc1\xe1][Tt][Rr][Aa]|[Hh][Aa][Zz][Aa]|[Hh][Ee][Ll][Yy][Rr][Ee]|[Hh][Oo][Zz][Zz][\xc1\xe1]|[Ii][Dd][Ee]|[Jj][\xd3\xf3][Vv][\xc1\xe1]|[Kk][Ee][Rr][Ee][Ss][Zz][Tt][\xdc\xfc][Ll]|[Kk][Ee][Tt][Tt][\xc9\xe9]|[Kk][Ii]|[Kk][\xd6\xf6][Ll][Cc][Ss][\xd6\xf6][Nn]|[Kk][\xd6\xf6][Rr][Bb][Ee]|[Kk][\xd6\xf6][Rr][\xdc\xfc][Ll]|[Kk][\xd6\xf6][Zz][Bb][Ee]|[Kk][\xd6\xf6][Zz][Rr][Ee]|[Kk][\xdc\xfc][Ll][\xd6\xf6][Nn]|[Ll][Ee]|[Mm][Ee][Gg]|[Mm][Ee][Ll][Ll][\xc9\xe9]|[Nn][Ee][Kk][Ii]|[Oo][Dd][Aa]|[\xd6\xf6][Ss][Ss][Zz][Ee]|[Rr][\xc1\xe1]|[Rr][Aa][Jj][Tt][Aa]|[Ss][Zz][\xc9\xe9][Jj][Jj][Ee][Ll]|[Ss][Zz][Ee][Mm][Bb][Ee]|[Ss][Zz][Ee][Rr][Tt][Ee]|[Ss][Zz][\xc9\xe9][Tt]|[Tt][Ee][Ll][Ee]|[Tt][Oo][Vv][Aa]|[Tt][Oo][Vv][\xc1\xe1][Bb][Bb]|[Tt][\xda\xfa][Ll]|[\xda\xfa][Jj][Jj][\xc1\xe1]|[\xda\xfa][Jj][Rr][Aa]|[Uu][Tt][\xc1\xe1][Nn][Aa]|[Vv][\xc9\xe9][Gg][Bb][Ee]|[Vv][\xc9\xe9][Gg][Ii][Gg]|[Vv][Ii][Ss][Ss][Zz][Aa])(?![-\\w\u2013\xad])', u'\\1d \\2', u'Felsz\xf3l\xedt\xf3 m\xf3d.', u'(not wordmin(s[:m.start()],1) or wordmin(s[:m.start()],1).lower() == "ne") and morph(LOCALE,m.group(1), "st:" + m.group(1).lower() + r"\\b") and morph(LOCALE,m.group(1)+"d", r"IMPER")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][\xc9\xe9][Rr][Dd][Dd] [Ee][Ll](?![-\\w\u2013\xad])', u'k\xe9rd el', u'\u201ek\xe9r\u201d felsz\xf3l\xedt\xf3 m\xf3dja.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Mm][Ee][Gg][Ff][Ee])([Dd]\\w*)(?![-\\w\u2013\xad])', u'\\1d\\2', u'Megfedd helyesen.', u'morph(LOCALE,m.group(1)+m.group(2), r"st:fed\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([Ee][Ll][Tt][Uu][Ss])([Oo][Ll]\\w*)(?![-\\w\u2013\xad])', u'\\1s\\2', u'Eltussol helyesen (kiv\xe9ve, ha zuhanyz\xe1sr\xf3l van sz\xf3).', u'morph(LOCALE,m.group(1)+m.group(2), r"st:tusol\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Ff][\u0150\u0151][Kk][\xc9\xe9]([Pp]|[Pp][Ee][Nn])(?![-\\w\u2013\xad])', u'f\u0151k\xe9p\\1', u'Ha hat\xe1roz\xf3sz\xf3, akkor f\u0151k\xe9pp.', u'wordmin(s[:m.start()],1) != "a" and wordmin(s[:m.start()],1) != "A"'], [u'(?u)\\b0-\xe1(\\w+)', u'0-\\1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[14])-el\\b', u'\\1-gyel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*2)-\u0151(\\w+)', u'\\1-\\2', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*3)-\xe1\\b', u'\\1-m\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*3)-al\\b', u'\\1-mal', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[57])-el\\b', u'\\1-tel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*6)-\xe1\\b', u'\\1-t\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*8)-\xe1\\b', u'\\1-c\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*9)-el\\b', u'\\1-cel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*10)-el\\b', u'\\1-zel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*20)-\xe1\\b', u'\\1-sz\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*30)-\xe1\\b', u'\\1-c\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[4579]0)-el\\b', u'\\1-nel', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)(\\d*[68]0)-\xe1\\b', u'\\1-n\xe1', u'Hib\xe1s toldal\xe9k?', False], [u'(?u)\\b(\\d)00-\xe1\\b', u'\\100-z\xe1', u'Hib\xe1s toldal\xe9k?', u'm.group(1) != "0"'], [u'(?u)\\b(\\d)000-el\\b', u'\\1000-rel', u'Hib\xe1s toldal\xe9k?', u'm.group(1) != "0"'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Tt][\xd6\xf6][Bb][Bb], [Mm][Ii][Nn][Tt](?![-\\w\u2013\xad])', u't\xf6bb mint', u'Ha nem \xf6sszehasonl\xedt\xe1st, hanem a mondanival\xf3 er\u0151s\xedt\xe9s\xe9t szolg\xe1lja a \u201et\xf6bb mint\u201d, nem haszn\xe1lunk vessz\u0151t (AkH. 243.).', u'morph(LOCALE,word(s[m.end():],1), r"(po:noun.*ds:s_\\w*|po:adj|PRESPART_adj|po:adj_num.*(is:|An_MODE_adv))\\b") or (morph(LOCALE,word(s[m.end():],1), r"(po:adj_num|^\\d+$)") and morph(LOCALE,word(s[m.end():],2), r"(po:noun\\b.*is:|(po:adj_num|st:ezer\\b).*(is:|An_MODE_adv))")) or (re.match(r"\\d+$", word(s[m.end():],1)) and morph(LOCALE,word(s[m.end():],2), r"po:adj_num|st:ezer\\b") and morph(LOCALE,word(s[m.end():],3), r"po:noun\\b.*is:")) or re.match(r"\\d+%-", word(s[m.end():],1))'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Aa][Vv][Aa][Gg][Yy])(?![-\\w\u2013\xad])', u'\\1,\\2', u'Az avagy k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Ii][Ll][Ll][Ee][Tt][Vv][Ee])(?![-\\w\u2013\xad])', u'\\1,\\2', u'Az illetve k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Ii][Ll][Ll][.])(?![-\\w\u2013\xad])', u'\\1,\\2\\n\\1, illetve', u'Az illetve k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+)( [Vv][Aa][Ll][Aa][Mm][Ii][Nn][Tt])(?![-\\w\u2013\xad])', u'\\1,\\2', u'A valamint k\xf6t\u0151sz\xf3 el\xe9 vessz\u0151t tesz\xfcnk.', False], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'mellett', u'Nem ink\xe1bb mellett (vagy hib\xe1s k\xfcl\xf6n\xedr\xe1s)?', u'morph(LOCALE,wordmin(s[:m.start()],1), r"po:noun.*:NOM(?!.*[di]s:)|_noun\\s+ts:NOM$")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'kellett', u'Helyes\xedr\xe1si hiba.', u'morph(LOCALE,wordmin(s[:m.start()],1), r"INF_|_inf") or morph(LOCALE,wordmin(s[:m.start()],2), r"INF_|_inf")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Kk][Ee][Ll][Ll][Ee][Tt](?![-\\w\u2013\xad])', u'kellett', u'Helyes\xedr\xe1si hiba.', u'morph(LOCALE,word(s[m.end():],1), r"INF_|_inf") or morph(LOCALE,word(s[m.end():],2), r"INF_|_inf") or word(s[m.end():],1) == "volna"'], [u'(?iu)(?<![-\\w\u2013.,\xad])(\\w+) [Hh][Ee][Ll][Yy][Ee][Tt][Tt] ([Kk][Aa][Pp]\\w*)(?![-\\w\u2013\xad])', u'\\1 helyet \\2', u'Helyesen: helyet kap.', u'morph(LOCALE,m.group(1), r"st:(is|ism\xe9t|mellett|m\xe9g)\\b|is:INE") and morph(LOCALE,m.group(2), r"st:kap\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?<=[NNn][Ee][Mm] )[Hh][Aa][Ll][Oo][Tt][Tt]([Aa][Mm]|[Uu][Nn][Kk])(?![-\\w\u2013\xad])', u'hallott\\1', u'Helyes\xedr\xe1si hiba?', False], [u'(?iu)(?<![-\\w\u2013.,\xad])([Hh][Aa][Ll])([Oo][Tt][Tt]\\w*)(?= r\xf3la\\w*)(?![-\\w\u2013\xad])', u'\\1l\\2', u'Helyes\xedr\xe1si hiba?', False], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,5})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"compound") and morph(LOCALE,m.group("W_1"), "pa:")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"compound") and morph(LOCALE,m.group("W_1"), ur"(?u)pa:\\w\\w\\b")'], [u'(?iu)(?<![-\\w\u2013.,\xad])(?P<W_1>\\w{4,})(?![-\\w\u2013\xad])', u'=suggest(LOCALE,m.group("W_1"))', u'Biztos, hogy helyes \xf6sszetett sz\xf3?', u'option(LOCALE,"allcompound") and morph(LOCALE,m.group("W_1"), "pa:")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Mm][\xc9\xe9][Dd][Ii][\xc1\xe1][Kk](?![-\\w\u2013\xad])', u'm\xe9di\xe1k\\nm\xe9dia\\nh\xedrek\\nlapok\\nh\xedrcsatorn\xe1k', u'Vitatott st\xedlus\xe9rt\xe9k\u0171 alak.', u'option(LOCALE,"style")'], [u'(?iu)(?<![-\\w\u2013.,\xad])[Uu][Nn][Ss][Zz][Ii][Mm][Pp][Aa][Tt][Ii][Kk][Uu][Ss](?![-\\w\u2013\xad])', u'unszimpatikus\\nellenszenves\\nantipatikus', u'Vitatott st\xedlus\xe9rt\xe9k\u0171 alak.', u'option(LOCALE,"style")'], [u'(?u) (-\\w+)', u'\\1', u'A toldal\xe9kot sz\xf3k\xf6z n\xe9lk\xfcl \xedrjuk.', u'option(LOCALE,"wordpart") and morph(LOCALE,m.group(0), "st:-e|po:(suffix|punct)")'], [u'(?iu)(?<![-\\w\u2013.,\xad])([Aa]|[Aa][Zz]|[Ee][Gg][Yy]) (\\w+) (\\w+)(?![-\\w\u2013\xad])', u'\\1 \\2\\3', u'Hib\xe1s k\xfcl\xf6n\xedr\xe1s?', u'option(LOCALE,"wordpart") and spell(LOCALE,m.group(2) + m.group(3)) and morph(LOCALE,word(s[m.end():],1), "po:vrb") and affix(LOCALE,m.group(2), "ts:NOM$") and not morph(LOCALE,m.group(2), "ts:PLUR") and affix(LOCALE,m.group(3), "[it]s:NOM$")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,}) \\1(?![-\\w\u2013\xad])', u'\\g<W_1>\\n\\g<W_1>-\\1', u'Sz\xf3ism\xe9tl\xe9s vagy hi\xe1nyz\xf3 k\xf6t\u0151jel?', u'option(LOCALE,"dup0") and (not wordmin(s[:m.start()],1) or not wordmin(s[:m.start()],1).lower() in ["a", "az", "minden"]) and word(s[m.end():],1) != u"h\xe1t\xe1n" and word(s[m.end():],1) != u"h\xe1t\xe1n." and not morph(LOCALE,word(s[m.end():],1), "po:post", False)'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})(?: [-\u2013\\w\u201e\u201d]+)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup")'], [u'(?u)(?<![-\\w\u2013.,\xad])(?P<W_1>[-\\w]{3,})[;,:]?(?: [-\u2013\\w\u201e\u201d]+[;,:]?)* \\1(?![-\\w\u2013\xad])', u'\\g<W_1>', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup2")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]{4})([-\\w]+)(?: [-\u2013\\w\u201e\u201d]+)* \\1(\\w+)(?![-\\w\u2013\xad])', u'\\1\\2', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup3") and option(LOCALE,"dup") and morph(LOCALE,m.group(1)+m.group(2), r"(?u)st:\\w+") == morph(LOCALE,m.group(1)+m.group(3), r"(?u)st:\\w+") and not morph(LOCALE,m.group(1)+m.group(3), "pa:") and not morph(LOCALE,m.group(1)+m.group(2), "pa:")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\\w]{4})([-\\w]+)[;,:]?(?: [-\u2013\\w\u201e\u201d]+[;,:]?)* \\1(\\w+)(?![-\\w\u2013\xad])', u'\\1\\2', u'T\xfalzott sz\xf3ism\xe9tl\xe9s?', u'option(LOCALE,"dup3") and option(LOCALE,"dup2") and morph(LOCALE,m.group(1)+m.group(2), r"(?u)st:\\w+") == morph(LOCALE,m.group(1)+m.group(3), r"(?u)st:\\w+") and not morph(LOCALE,m.group(1)+m.group(3), "pa:") and not morph(LOCALE,m.group(1)+m.group(2), "pa:")'], [u'(?u)(?<![-\\w\u2013.,\xad])[-\\w]*f[fil][-\\w]*(?![-\\w\u2013\xad])', u'=m.group(0).replace("ffi",u"\ufb03").replace("ffl",u"\ufb04").replace("ff",u"\ufb00").replace("fi",u"\ufb01").replace("fl",u"\ufb02")', u'A sz\xf3 unicode-os f-ligat\xfar\xe1kkal:', u'option(LOCALE,"ligature")'], [u'(?u)(?<![-\\w\u2013.,\xad])[-\\w]*(\ufb03|\ufb04|\ufb00|\ufb01|\ufb02)[-\\w]*(?![-\\w\u2013\xad])', u'=m.group(0).replace(u"\ufb03","ffi").replace(u"\ufb04","ffl").replace(u"\ufb00","ff").replace(u"\ufb01","fi").replace(u"\ufb02","fl")', u'A sz\xf3 unicode-os f-ligat\xfar\xe1k n\xe9lk\xfcl:', u'option(LOCALE,"noligature")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/2((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbd\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/3((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2153\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/4((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbc\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])3/4((-\\w+)?)(?![-\\w\u2013\xad])', u'\xbe\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])2/3((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2154\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/5((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2155\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/6((-\\w+)?)(?![-\\w\u2013\xad])', u'\u2159\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])5/6((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215a\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215b\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])3/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215c\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])5/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215d\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])7/8((-\\w+)?)(?![-\\w\u2013\xad])', u'\u215e\\1', u'Tipogr\xe1fiai jel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])1/(\\d{1,3})((-\\w+)?)(?![-\\w\u2013\xad])', u'= u"\u215f" + m.group(1).replace("0", u"\u2080").replace("1", u"\u2081").replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084").replace("5", u"\u2085").replace("6", u"\u2086").replace("7", u"\u2087").replace("8", u"\u2088").replace("9", u"\u2089") + m.group(2)', u'T\xf6rt tipogr\xe1fiai jelekkel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])([2-9]|\\d{2,3})/(\\d{1,3})((-\\w+)?)(?![-\\w\u2013\xad])', u'= m.group(1).replace("0", u"\u2070").replace("1", u"\xb9").replace("2", u"\xb2").replace("3", u"\xb3").replace("4", u"\u2074").replace("5", u"\u2075").replace("6", u"\u2076").replace("7", u"\u2077").replace("8", u"\u2078").replace("9", u"\u2079") + u"\u2044" + m.group(2).replace("0", u"\u2080").replace("1", u"\u2081").replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084").replace("5", u"\u2085").replace("6", u"\u2086").replace("7", u"\u2087").replace("8", u"\u2088").replace("9", u"\u2089") + m.group(3)', u'T\xf6rt tipogr\xe1fiai jelekkel:', u'option(LOCALE,"frac")'], [u'(?u)(?<![-\\w\u2013.,\xad])[\xb5mck]?m[23](-\\w+)?(?![-\\w\u2013\xad])', u'=m.group(0).replace("2", u"\xb2").replace("3", u"\xb3")', u'Index tipogr\xe1fiai jellel:', u'option(LOCALE,"idx")'], [u'(?u)(?<![-\\w\u2013.,\xad])(Ca(CO3|SO4)|CO2|(H2|Na2)(CO3|O|SO4)|[HNO]2|HNO3|Fe2O3|KMnO4|NO2|SiO2|SO[23])(-\\w+)?(?![-\\w\u2013\xad])', u'=m.group(0).replace("2", u"\u2082").replace("3", u"\u2083").replace("4", u"\u2084")', u'Index tipogr\xe1fiai jellel.', u'option(LOCALE,"idx")'], [u'(?u)(?<![-\\w\u2013.,\xad])kedvel(?![-\\w\u2013\xad])', u'kedvvel', u'Sz\xf3t\xe9veszt\xe9s?', u'wordmin(s[:m.start()],1).lower() == u"j\xf3" or wordmin(s[:m.start()],1).lower() == "rossz"'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (\xb0F(-\\w+)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", " " + m.group(2).replace("F", "C"))', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (\u2109(-\\w+)?)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "F", "C", " \xb0C" + m.group(2)[1:])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d(?:,\\d+)?) (l\xe1b\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "cm", " " + generate(LOCALE,u"centim\xe9ter", m.group(2))[0]) + "\\n" + measurement(m.group(1), "ft", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI") and stem(LOCALE,m.group(2)) == [u"l\xe1b"]'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d\\d+(?:,\\d+)?) (l\xe1b\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "ft", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI") and stem(LOCALE,m.group(2)) == [u"l\xe1b"]'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (h\xfcvelyk\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "in", "cm", " " + generate(LOCALE,u"centim\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (m\xe9rf\xf6ld\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "mi", "km", " " + generate(LOCALE,u"kilom\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (yard\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "yd", "m", " " + generate(LOCALE,u"m\xe9ter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (font (s\xfaly\xfa\\w*))(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "lbm", "kg", " " + generate(LOCALE,"kilogramm", u"szomor" + m.group(3)[4:])[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (gallon\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "gal", "l", " " + generate(LOCALE,"liter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])([-\u2212]?\\d+(?:,\\d+)?) (pint\\w*)(?![-\\w\u2013\xad])', u'= measurement(m.group(1), "uk_pt", "dl", " " + generate(LOCALE,"deciliter", m.group(2))[0]) + "\\n" + measurement(m.group(1), "us_pt", "dl", " " + generate(LOCALE,"deciliter", m.group(2))[0])', u'V\xe1lt\xe1s SI m\xe9rt\xe9kegys\xe9gre (angol \xe9s amerikai pint)', u'option(LOCALE,"SI")'], [u'(?u)(?<![-\\w\u2013.,\xad])adat\xfat(?![-\\w\u2013\xad])', u'ada\xadt\xfat\\nadat\xad\xfat', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])felett(em|ed|e|\xfcnk|\xfck)(?![-\\w\u2013\xad])', u'fe\xadlet\xadt\\1\\nfel\xadet\xadt\\1', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])felettetek(?![-\\w\u2013\xad])', u'fe\xadlet\xadte\xadtek\\nfel\xadet\xadte\xadtek', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])f\xf6l\xfcl(?![-\\w\u2013\xad])', u'f\xf6\xadl\xfcl\\nf\xf6l\xad\xfcl', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])g\xe9pelem(?![-\\w\u2013\xad])', u'g\xe9\xadpe\xadlem\\ng\xe9p\xadelem', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])kar\xf3ra(?![-\\w\u2013\xad])', u'kar\xad\xf3ra\\nka\xadr\xf3\xadra', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])meg\xe1s(?![-\\w\u2013\xad])', u'me\xadg\xe1s\\nmeg\xad\xe1s', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")'], [u'(?u)(?<![-\\w\u2013.,\xad])megint(?![-\\w\u2013\xad])', u'me\xadgint\\nmeg\xadint', u'Elv\xe1laszt\xe1s:', u'option(LOCALE,"hyphen")']] \ No newline at end of file diff --git a/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py new file mode 100644 index 0000000..a7ae09c --- /dev/null +++ b/dictionaries/hu_HU/pythonpath/lightproof_impl_hu_HU.py @@ -0,0 +1,6 @@ +# -*- encoding: UTF-8 -*- +pkg = "hu_HU" +lang = "hu_HU" +locales = {'hu-HU': ['hu', 'HU', '']} +version = "1.4" +author = "" diff --git a/dictionaries/hu_HU/pythonpath/lightproof_opts_hu_HU.py b/dictionaries/hu_HU/pythonpath/lightproof_opts_hu_HU.py new file mode 100644 index 0000000..6b18d60 --- /dev/null +++ b/dictionaries/hu_HU/pythonpath/lightproof_opts_hu_HU.py @@ -0,0 +1,4 @@ +lopts = {} +lopts_default = {} +lopts['hu_HU'] = [u'cap', u'par', u'quot', u'wordpart', u'dash', u'comma', u'numpart', u'grammar', u'style', u'dup0', u'compound', u'dup', u'allcompound', u'dup2', u'money', u'dup3', u'SI', u'hyphen', u'apost', u'spaces', u'frac', u'ligature', u'elli', u'spaces2', u'thin', u'noligature', u'idx', u'minus'] +lopts_default['hu_HU'] = [u'dash', u'dup0', u'money', u'apost', u'spaces'] -- 1.7.4.1
Attachment:
sentencecheck.odt
Description: application/vnd.oasis.opendocument.text