From a9f340fba196f9420e95ae9711a7f1a6f2f220dd Mon Sep 17 00:00:00 2001 From: Benson Muite Date: Mon, 24 Jul 2023 11:45:26 +0300 Subject: Drop stringcase dependency --- lib/extensions/base.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'lib') 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): -- cgit v1.2.3 From 298ea484bdd801a5ad1a46326873d8b1b13aa52d Mon Sep 17 00:00:00 2001 From: Benson Muite Date: Thu, 27 Jul 2023 12:28:55 +0300 Subject: Use simpler and clearer code Retain UTF8 compatibility but convert only CamelCase to snake_case assuming not space characters --- lib/extensions/base.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) (limited to 'lib') 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): -- cgit v1.2.3 From fe4f26c58ec4820dc8aa5a2e193e567bff310b03 Mon Sep 17 00:00:00 2001 From: Benson Muite Date: Sat, 29 Jul 2023 11:14:50 +0300 Subject: Use compact form due to kaalleen and lexelby --- lib/extensions/base.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/extensions/base.py b/lib/extensions/base.py index bd1049de..e0bf4131 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -32,16 +32,8 @@ class InkstitchExtension(inkex.EffectExtension): @classmethod def name(cls): # Convert CamelCase to snake_case - snakecasename = cls.__name__ - 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 + return cls.__name__[0].lower() + ''.join([x if x.islower() else f'_{x.lower()}' + for x in cls.__name__[1:]]) def hide_all_layers(self): for g in self.document.getroot().findall(SVG_GROUP_TAG): -- cgit v1.2.3