addon manager py3 fixes

Only decode / encode if on py2 except for the b'\xc2\xa0', replace, which must be decoded to create the unicode string.
This commit is contained in:
Mark Ganson TheMarkster
2018-09-14 13:01:06 -05:00
committed by wmayer
parent 68fb70ff3c
commit ce8ee78993

View File

@@ -681,18 +681,15 @@ class Macro(object):
from HTMLParser import HTMLParser
except ImportError:
from html.parser import HTMLParser
try:
if sys.version_info.major < 3:
code = code.decode('utf8')
try:
code = HTMLParser().unescape(code)
code = code.encode('utf8')
code = code.replace('\xc2\xa0', ' ')
code = code.replace(b'\xc2\xa0'.decode("utf-8"), ' ')
except:
#HTMLParser().unescape() didn't work, so try manually
try:
code = code.replace('&gt;','>').replace('&lt;','<').replace('&#160;','').replace('&amp;','&').replace('\xc2\xa0', ' ')
code = code.replace('\t',' ')#some macros in the wiki have tabs interspersed, this might fix some of them
except:
FreeCAD.Console.PrintWarning(translate("AddonsInstaller", "Unable to clean macro code: ") + code + '\n')
FreeCAD.Console.PrintWarning(translate("AddonsInstaller", "Unable to clean macro code: ") + code + '\n')
if sys.version_info.major < 3:
code = code.encode('utf8')
desc = re.findall("<td class=\"ctEven left macro-description\">(.*?)<\/td>", p.replace('\n', ' '))
if desc:
desc = desc[0]