summaryrefslogtreecommitdiff
path: root/lib/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'lib/extensions')
-rw-r--r--lib/extensions/base.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/extensions/base.py b/lib/extensions/base.py
index 3c16a11c..2218a6b5 100644
--- a/lib/extensions/base.py
+++ b/lib/extensions/base.py
@@ -7,7 +7,6 @@ import os
import inkex
from lxml.etree import Comment
-from stringcase import snakecase
from ..commands import is_command, layer_commands
from ..elements import EmbroideryElement, nodes_to_elements
@@ -32,7 +31,21 @@ class InkstitchExtension(inkex.EffectExtension):
@classmethod
def name(cls):
- return snakecase(cls.__name__)
+ # 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
+ 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()
def hide_all_layers(self):
for g in self.document.getroot().findall(SVG_GROUP_TAG):