Skip to content

Commit

Permalink
Fixes #69 dude
Browse files Browse the repository at this point in the history
  • Loading branch information
Semprini committed Mar 17, 2024
1 parent 111c127 commit d858bc5
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 10 deletions.
25 changes: 19 additions & 6 deletions mdg/tests/test_tools.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import unittest

from mdg.tools.case import camelcase, snakecase
from mdg.tools.case import camelcase, snakecase, pascalcase
from typing import List
from mdg.tools.io import obj_to_dict, dict_to_obj

Expand All @@ -10,11 +10,24 @@ def setUp(self):
pass

def test_camel(self):
self.assertEqual("TestCase", camelcase("TestCase"))
self.assertEqual("TestCase", camelcase("testCase"))
self.assertEqual("TestCase", camelcase("test case"))
self.assertEqual("TestCase", camelcase("Test Case"))
self.assertEqual("TestCase", camelcase("Test_Case"))
self.assertEqual("test", camelcase("test"))
self.assertEqual("test", camelcase("Test"))
self.assertEqual("testCase", camelcase("TestCase"))
self.assertEqual("testCase", camelcase("testCase"))
self.assertEqual("testCase", camelcase("test case"))
self.assertEqual("testCase", camelcase("Test Case"))
self.assertEqual("testCase", camelcase("Test_Case"))


def test_pascal(self):
self.assertEqual("Test", pascalcase("test"))
self.assertEqual("Test", pascalcase("Test"))
self.assertEqual("TestCase", pascalcase("TestCase"))
self.assertEqual("TestCase", pascalcase("testCase"))
self.assertEqual("TestCase", pascalcase("test case"))
self.assertEqual("TestCase", pascalcase("Test Case"))
self.assertEqual("TestCase", pascalcase("Test_Case"))


def test_snake(self):
self.assertEqual("test_case", snakecase("testCase"))
Expand Down
9 changes: 6 additions & 3 deletions mdg/tools/case.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@
import re


def camelcase(string):
def camelcase(string:str) -> str:
if string is None or string == "":
return string
words = re.split(' |_', string)
return "".join(word[0].upper() + word[1:] for word in words)
words: list = re.split(' |_', string)

# Can't use Title function in str library as this lowers all but the first char: does not handle existing camelCased input
words_camel: list = [(words[0][0].lower() + words[0][1:])] + list(word[0].upper() + word[1:] for word in words[1:])
return "".join(words_camel)


def capitalcase(string: str) -> str:
Expand Down
9 changes: 8 additions & 1 deletion mdg/tools/filters.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from ..config import settings
from .case import camelcase, snakecase, titlecase, sentencecase, uppercase
from .case import camelcase, snakecase, titlecase, sentencecase, uppercase, pascalcase


def get_filters():
Expand All @@ -10,26 +10,33 @@ def get_filters():
'titlecase': titlecase,
'sentencecase': sentencecase,
'uppercase': uppercase,
'pascalcase': pascalcase,
}

if settings['case_package'] == "CamelCase":
filters['case_package'] = camelcase
elif settings['case_package'] == "snake_case":
filters['case_package'] = snakecase
elif settings['case_package'] == "PacalCase":
filters['case_package'] = pascalcase
else:
filters['case_package'] = camelcase

if settings['case_class'] == "CamelCase":
filters['case_class'] = camelcase
elif settings['case_class'] == "snake_case":
filters['case_class'] = snakecase
elif settings['case_class'] == "PacalCase":
filters['case_class'] = pascalcase
else:
filters['case_class'] = camelcase

if settings['case_attribute'] == "CamelCase":
filters['case_attribute'] = camelcase
elif settings['case_attribute'] == "snake_case":
filters['case_attribute'] = snakecase
elif settings['case_attribute'] == "PacalCase":
filters['case_attribute'] = pascalcase
else:
filters['case_class'] = snakecase

Expand Down

0 comments on commit d858bc5

Please sign in to comment.