diff options
author | Norbert Thiebaud <nthiebaud@gmail.com> | 2012-09-01 09:50:26 -0500 |
---|---|---|
committer | Norbert Thiebaud <nthiebaud@gmail.com> | 2012-10-16 11:09:27 -0500 |
commit | a4473e06b56bfe35187e302754f6baaa8d75e54f (patch) | |
tree | fd17c2dc5dbf56469de2eaa851eda4087f385313 /ru_RU/Lightproof.py | |
parent | 0493c1b142b0c498931e8ff5d6460ef852026d20 (diff) |
move dictionaries structure one directory up
Change-Id: I70388bf6b95d8692cc6f25fc5a9c7baf3a675710
Diffstat (limited to 'ru_RU/Lightproof.py')
-rw-r--r-- | ru_RU/Lightproof.py | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/ru_RU/Lightproof.py b/ru_RU/Lightproof.py new file mode 100644 index 0000000..95c56dd --- /dev/null +++ b/ru_RU/Lightproof.py @@ -0,0 +1,155 @@ +# -*- encoding: UTF-8 -*- +# Lightproof grammar checker for LibreOffice and OpenOffice.org +# 2009-2012 (c) László Németh (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+ + +import uno, unohelper, os, sys, traceback +from lightproof_impl_ru_RU import locales +from lightproof_impl_ru_RU import pkg +import lightproof_impl_ru_RU +import lightproof_handler_ru_RU + +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 +# reload in obj.reload in Python 3 +try: + from obj import reload +except: + pass + +class Lightproof( unohelper.Base, XProofreader, XServiceInfo, XServiceName, XServiceDisplayName, XSupportedLocales): + + def __init__( self, ctx, *args ): + 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() + lightproof_impl_ru_RU.SMGR = currentContext.ServiceManager + lightproof_impl_ru_RU.spellchecker = \ + lightproof_impl_ru_RU.SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext) + lightproof_handler_ru_RU.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 + aRes.aProperties = () + aRes.xProofreader = self + aRes.aErrors = () + if len(rProperties) > 0 and rProperties[0].Name == "Update": + try: + import lightproof_compile_ru_RU + try: + code = lightproof_compile_ru_RU.c(rProperties[0].Value, rLocale.Language, True) + except Exception as e: + aRes.aText, aRes.nStartOfSentencePosition = e + return aRes + path = lightproof_impl_ru_RU.get_path() + f = open(path.replace("_impl", ""), "w") + f.write("dic = %s" % code["rules"]) + f.close() + if pkg in lightproof_impl_ru_RU.langrule: + mo = lightproof_impl_ru_RU.langrule[pkg] + reload(mo) + lightproof_impl_ru_RU.compile_rules(mo.dic) + lightproof_impl_ru_RU.langrule[pkg] = mo + if "code" in code: + f = open(path, "r") + ft = f.read() + f.close() + f = open(path, "w") + f.write(ft[:ft.find("# [code]") + 8] + "\n" + code["code"]) + f.close() + try: + reload(lightproof_impl_ru_RU) + except Exception as e: + aRes.aText = e.args[0] + if e.args[1][3] == "": # "expected an indented block" (end of file) + aRes.nStartOfSentencePosition = len(rText.split("\n")) + else: + aRes.nStartOfSentencePosition = rText.split("\n").index(e.args[1][3][:-1]) + 1 + return aRes + aRes.aText = "" + return aRes + except: + if 'PYUNO_LOGLEVEL' in os.environ: + print(traceback.format_exc()) + + 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 = lightproof_impl_ru_RU.proofread( nDocId, rText, rLocale, \ + nStartOfSentencePos, aRes.nBehindEndOfSentencePosition, rProperties) + except Exception as e: + if len(rProperties) > 0 and rProperties[0].Name == "Debug" and len(e.args) == 2: + aRes.aText, aRes.nStartOfSentencePosition = e + else: + if 'PYUNO_LOGLEVEL' in os.environ: + print(traceback.format_exc()) + return aRes + + def ignoreRule(self, rid, aLocale): + lightproof_impl_ru_RU.ignore[rid] = 1 + + def resetIgnoreRules(self): + lightproof_impl_ru_RU.ignore = {} + + # XServiceDisplayName + def getServiceDisplayName(self, aLocale): + return lightproof_impl_ru_RU.name + +g_ImplementationHelper = unohelper.ImplementationHelper() +g_ImplementationHelper.addImplementation( Lightproof, \ + "org.openoffice.comp.pyuno.Lightproof." + pkg, + ("com.sun.star.linguistic2.Proofreader",),) + +g_ImplementationHelper.addImplementation( lightproof_handler_ru_RU.LightproofOptionsEventHandler, \ + "org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg, + ("com.sun.star.awt.XContainerWindowEventHandler",),) |