summaryrefslogtreecommitdiff
path: root/lib/extensions/base.py
diff options
context:
space:
mode:
authorBenson Muite <benson_muite@emailplus.org>2023-07-27 12:28:55 +0300
committerBenson Muite <benson_muite@emailplus.org>2023-07-27 12:50:04 +0300
commit298ea484bdd801a5ad1a46326873d8b1b13aa52d (patch)
tree58e142324aadf9a4261e9ff067e0908ffd093d11 /lib/extensions/base.py
parenta9f340fba196f9420e95ae9711a7f1a6f2f220dd (diff)
Use simpler and clearer code
Retain UTF8 compatibility but convert only CamelCase to snake_case assuming not space characters
Diffstat (limited to 'lib/extensions/base.py')
-rw-r--r--lib/extensions/base.py24
1 files changed, 10 insertions, 14 deletions
diff --git a/lib/extensions/base.py b/lib/extensions/base.py
index 2218a6b5..bd1049de 100644
--- a/lib/extensions/base.py
+++ b/lib/extensions/base.py
@@ -31,21 +31,17 @@ class InkstitchExtension(inkex.EffectExtension):
@classmethod
def name(cls):
- # Create a table to do replacements of other separating characters
- chars2underscore = ("-", ".", " ", "\t", "\n", "\r", "\v", "\f")
- table = dict((ord(c), "_") for c in chars2underscore)
- # Add underscores before any uppercase letters except the first
+ # Convert CamelCase to snake_case
snakecasename = cls.__name__
- for i in range(len(snakecasename)-1):
- if snakecasename[i+1].isupper() and snakecasename[i].islower():
- table.update({ord(snakecasename[i+1]): "_"+snakecasename[i+1]})
- # Replace characters
- snakecasename = snakecasename.translate(table)
- # Ensure leading character is not an underscore
- if snakecasename[0] == "_":
- snakecasename = snakecasename[1:]
- # Transform all characters to lowercase
- return snakecasename.lower()
+ underscores = 0
+ # First character is lower case
+ snakecasename = snakecasename[0].lower() + snakecasename[1:]
+ for i in range(len(snakecasename) - 1):
+ if snakecasename[i + 1 + underscores].isupper() and snakecasename[i + underscores].islower():
+ snakecasename = snakecasename.replace(snakecasename[i + 1 + underscores],
+ "_" + snakecasename[i + 1 + underscores].lower())
+ underscores += 1
+ return snakecasename
def hide_all_layers(self):
for g in self.document.getroot().findall(SVG_GROUP_TAG):