comparison configmix/config.py @ 479:490f0c4665bb

Optimize .unquote(): instead of doing string comparisone do this with characters
author Franz Glasner <f.glasner@feldmann-mg.com>
date Fri, 17 Dec 2021 11:52:56 +0100
parents ff8a9a7c6a93
children 3cfc808e613b
comparison
equal deleted inserted replaced
478:ff8a9a7c6a93 479:490f0c4665bb
741 return s 741 return s
742 parts = s.split(klass._QUOTE) 742 parts = s.split(klass._QUOTE)
743 res = [parts[0]] 743 res = [parts[0]]
744 res_append = res.append 744 res_append = res.append
745 for p in parts[1:]: 745 for p in parts[1:]:
746 if p.startswith(klass._QUOTE_x): 746 try:
747 qc = p[0]
748 except IndexError:
749 raise ValueError("unknown quote syntax string: {}".format(s))
750 if qc == klass._QUOTE_x:
747 if len(p) < 3: 751 if len(p) < 3:
748 raise ValueError("quote syntax: length too small") 752 raise ValueError("quote syntax: length too small")
749 res_append(uchr(int(p[1:3], 16))) 753 res_append(uchr(int(p[1:3], 16)))
750 res_append(p[3:]) 754 res_append(p[3:])
751 elif p.startswith(klass._QUOTE_u): 755 elif qc == klass._QUOTE_u:
752 if len(p) < 5: 756 if len(p) < 5:
753 raise ValueError("quote syntax: length too small") 757 raise ValueError("quote syntax: length too small")
754 res_append(uchr(int(p[1:5], 16))) 758 res_append(uchr(int(p[1:5], 16)))
755 res_append(p[5:]) 759 res_append(p[5:])
756 elif p.startswith(klass._QUOTE_U): 760 elif qc == klass._QUOTE_U:
757 if len(p) < 9: 761 if len(p) < 9:
758 raise ValueError("quote syntax: length too small") 762 raise ValueError("quote syntax: length too small")
759 res_append(uchr(int(p[1:9], 16))) 763 res_append(uchr(int(p[1:9], 16)))
760 res_append(p[9:]) 764 res_append(p[9:])
761 else: 765 else: