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
|
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
|
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
+
+
|
sErrLine += " " * (nEnd - len(sErrLine))
sErrLine = sErrLine[:nStart] + "°" * (nEnd - nStart) + sErrLine[nEnd:]
else:
break
if sErrLine:
sText += sErrLine + "\n"
if nGrammErr:
for dErr in lGrammErrs[:nGrammErr]:
sText += getReadableErrors(lGrammErrs[:nGrammErr], nWidth)
sMsg, *others = getReadableError(dErr).split("\n")
sText += "\n".join(textwrap.wrap(sMsg, nWidth, subsequent_indent=" ")) + "\n"
for arg in others:
sText += "\n".join(textwrap.wrap(arg, nWidth, subsequent_indent=" ")) + "\n"
sText += "\n"
del lGrammErrs[0:nGrammErr]
if nSpellErr:
sText += getReadableErrors(lSpellErrs[:nSpellErr], nWidth, True)
del lSpellErrs[0:nSpellErr]
nOffset += ln
return sText
def getReadableErrors (lErrs, nWidth, bSpell=False):
"Returns lErrs errors as readable errors"
sErrors = ""
for dErr in lErrs:
if not bSpell or "aSuggestions" in dErr:
sMsg, *others = getReadableError(dErr, bSpell).split("\n")
sErrors += "\n".join(textwrap.wrap(sMsg, nWidth, subsequent_indent=" ")) + "\n"
for arg in others:
sErrors += "\n".join(textwrap.wrap(arg, nWidth, subsequent_indent=" ")) + "\n"
if sErrors != "":
sErrors += "\n"
return sErrors
def getReadableError (dErr):
def getReadableError (dErr, bSpell=False):
"Returns an error dErr as a readable error"
try:
if bSpell:
s = u"* {nStart}:{nEnd} # {sValue}:".format(**dErr)
else:
s = u"* {nStart}:{nEnd} # {sLineId} / {sRuleId}:\n".format(**dErr)
s += " " + dErr.get("sMessage", "# error : message not found")
s = u"* {nStart}:{nEnd} # {sLineId} / {sRuleId}:\n".format(**dErr)
s += " " + dErr.get("sMessage", "# error : message not found")
if dErr.get("aSuggestions", None):
s += "\n > Suggestions : " + " | ".join(dErr.get("aSuggestions", "# error : suggestions not found"))
if dErr.get("URL", None):
s += "\n > URL: " + dErr["URL"]
return s
except KeyError:
return u"* Non-compliant error: {}".format(dErr)
|