/usr/lib/libreoffice/share/extensions/lightproof_en/Lightproof.py is in libreoffice-lightproof-en 0.4.3+1.5+git20140515-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 | # -*- encoding: UTF-8 -*-
# Lightproof grammar checker for LibreOffice and OpenOffice.org
# 2009-2012 (c) Laszlo Nemeth (nemeth at numbertext org), license: MPL 1.1 / GPLv3+ / LGPLv3+
import uno, unohelper, os, sys, traceback
from lightproof_impl_lightproof_en import locales
from lightproof_impl_lightproof_en import pkg
import lightproof_impl_lightproof_en
import lightproof_handler_lightproof_en
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_lightproof_en.SMGR = currentContext.ServiceManager
lightproof_impl_lightproof_en.spellchecker = \
lightproof_impl_lightproof_en.SMGR.createInstanceWithContext("com.sun.star.linguistic2.SpellChecker", currentContext)
lightproof_handler_lightproof_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
aRes.aProperties = ()
aRes.xProofreader = self
aRes.aErrors = ()
# PATCH FOR LO 4
# Fix for http://nabble.documentfoundation.org/Grammar-checker-Undocumented-change-in-the-API-for-LO-4-td4030639.html
if nStartOfSentencePos != 0:
return aRes
aRes.nStartOfNextSentencePosition = len(rText)
# END OF PATCH
if len(rProperties) > 0 and rProperties[0].Name == "Update":
try:
import lightproof_compile_lightproof_en
try:
code = lightproof_compile_lightproof_en.c(rProperties[0].Value, rLocale.Language, True)
except Exception as e:
aRes.aText, aRes.nStartOfSentencePosition = e
return aRes
path = lightproof_impl_lightproof_en.get_path()
f = open(path.replace("_impl", ""), "w")
f.write("dic = %s" % code["rules"])
f.close()
if pkg in lightproof_impl_lightproof_en.langrule:
mo = lightproof_impl_lightproof_en.langrule[pkg]
reload(mo)
lightproof_impl_lightproof_en.compile_rules(mo.dic)
lightproof_impl_lightproof_en.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_lightproof_en)
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_lightproof_en.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_lightproof_en.ignore[rid] = 1
def resetIgnoreRules(self):
lightproof_impl_lightproof_en.ignore = {}
# XServiceDisplayName
def getServiceDisplayName(self, aLocale):
return lightproof_impl_lightproof_en.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_lightproof_en.LightproofOptionsEventHandler, \
"org.openoffice.comp.pyuno.LightproofOptionsEventHandler." + pkg,
("com.sun.star.awt.XContainerWindowEventHandler",),)
|