# Case Converter
[](https://gitlab.com/chrisdoherty4/python-case-converter/-/pipelines) [](https://pypi.org/project/case-converter/)  
A robust python package for transforming string cases such as `Hello, world!` into
`helloWorld` (camelcase).
## General usage
```python
from caseconverter import camelcase
camelcase("Hello, world!") # output: helloWorld
```
### Delimeter behavior
If multiple delimeter characters are identified next to eachother they will be considered as a single delimeter. For example, `-_` contains 2 different delimeter characters and is considered a single delimeter.
## Available conversions
### `camelcase`
```python
from caseconverter import camelcase
camelcase("Hello, world!")
```
```text
helloWorld
```
### `cobolcase`
```python
from caseconverter import cobolcase
cobolcase("Hello, world!")
```
```text
HELLO-WORLD
```
### `flatcase`
```python
from caseconverter import flatcase
flatcase("Hello, world!")
```
```text
helloworld
```
### `kebabcase`
```python
from caseconverter import kebabcase
kebabcase("Hello, world!")
```
```text
hello-world
```
### `macrocase`
```python
from caseconverter import macrocase
macrocase("Hello, world!")
```
```text
HELLO_WORLD
```
#### Additional options
`delims_only : bool` - Only consider delimiters as boundaries (default: `False`).
### `pascalcase`
```python
from caseconverter import pascalcase
pascalcase("Hello, world!")
```
```text
HelloWorld
```
### `snakecase`
```python
from caseconverter import snakecase
snakecase("Hello, world!")
```
```text
hello_world
```
## Options for all conversions
### Stripping punctuation
Punctuation is stripped when doing a case conversion. However, should you
wish to keep the punctuation you can do so by passing `strip_punctuation=False`.
```python
camelcase("Hello, world!", strip_punctuation=False) # output: hello,World!
```
### Delimeter customization
Default delimiters used to denote a token boundary.
```python
DELIMITERS = " -_"
```
You can pass `delims` to each case conversion function to specify a custom
set of delimiters.
```python
# Use a pipe `|` as the only delimiter.
camelcase("Hello,|world!", delims="|") # output: helloWorld
```
## Boundaries definitions
|Name|Description|
|---|---|
|OnDelimeterUppercaseNext|On a delimieter, upper case the following character|
|OnDelimeterLowercaseNext|On a delimeter, lower case the following character|
|OnUpperPrecededByLowerAppendUpper|On an upper case character followed by a lower case character, append the upper case character|
|OnUpperPrecededByLowerAppendLower|On an upper case character preceeded by a lower case character append the lower case character|
|OnUpperPrecededByUpperAppendJoin|On an upper case caharacter preceeded by an upper append the join character. Join characters are context dependent. Example: macro cast join character is `_`|
|OnUpperPrecededByUpperAppendCurrent|On an upper case character preceeded by an upper case character append the upper case character|
## Contributing
1. Write clean code.
2. Write new tests for new use-cases.
3. Test your code before raising a PR.
4. Use [black](https://pypi.org/project/black/) to format your code.