A small utility to camelize (convert to camel-case) or snakeize (convert to snake-case) any object.
This is a very early-stage project & for the time-being is only there as a personal utility.
import snakecamel
>>> snakecamel.camelize("simple_string")
'simpleString
>>> snakecamel.snakeize("simpleString")
'simple_string'
- The library is designed to be very forgiving. It does not raise upon encountering an unknown type, it just skips it. This way, you can pass arbitrary objects to it & everything that can be camelized/snakeized, will be.
>>> import snakecamel
>>> snakecamel.camelize(50)
50
>>> from datetime import date
>>> snakecamel.camelize({"hello_world": "hello_world", 50: 50, date.today(): "today"})
{'helloWorld': 'hello_world', 50: 50, datetime.date(2022, 7, 31): 'today'}
- The library will try to re-construct the type you pass to it, so that if you pass different kinds of iterables, you'll get the same type returned. Unfortunately, that still does not work with mappings.
>>> import snakecamel
>>> snakecamel.camelize(["simple_string"])
['simpleString']
>>> snakecamel.camelize({"simple_string"})
{'simpleString'}
>>> snakecamel.camelize(("simple_string",))
('simpleString',)
>>> snakecamel.camelize("simple_string")
'simpleString'
- When camelizing/snakeizing mappings, you can choose to do so with keys only or keys & values.
>>> import snakecamel
>>> snakecamel.camelize({"simple_key": "simple_value"})
{'simpleKey': 'simple_value'}
>>> snakecamel.camelize({"simple_key": "simple_value"}, camelize_mapping_values=True)
{'simpleKey': 'simpleValue'}
- You can shoose between capitalized or non-capitalized camel case.
>>> import snakecamel
>>> snakecamel.camelize("simple_string")
'simpleString'
>>> snakecamel.camelize("simple_string", capitalized=True)
'SimpleString'
When snakeizing, you need to pass capitalized=True
, if you want the first letter of a
capitalized camel-case word to be lowercased.
>>> snakecamel.snakeize("simpleString")
'simple_string'
>>> snakecamel.snakeize("simpleString", capitalized=True)
'simple_string'
>>> snakecamel.snakeize("SimpleString")
'Simple_string'
>>> snakecamel.snakeize("SimpleString", capitalized=True)
'simple_string'
- When camelizing, you can choose whether you're stripping leading/trailing underscores or not.
import snakecamel
>>> import snakecamel
>>> snakecamel.camelize("_simple_string_")
'_simpleString_'
>>> snakecamel.camelize("_simple_string_", strip_underscores=True)
'simpleString'