Mercurial > hgrepos > Python > libs > ConfigMix
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: |
