Module textual.case

Expand source code
import re

from typing import Match, Pattern


def camel_to_snake(
    name: str, _re_snake: Pattern[str] = re.compile("[a-z][A-Z]")
) -> str:
    """Convert name from CamelCase to snake_case.

    Args:
        name (str): A symbol name, such as a class name.

    Returns:
        str: Name in camel case.
    """

    def repl(match: Match[str]) -> str:
        lower: str
        upper: str
        lower, upper = match.group()  # type: ignore
        return f"{lower}_{upper.lower()}"

    return _re_snake.sub(repl, name).lower()


if __name__ == "__main__":
    print(camel_to_snake("HelloWorldEvent"))

Functions

def camel_to_snake(name: str) ‑> str

Convert name from CamelCase to snake_case.

Args

name : str
A symbol name, such as a class name.

Returns

str
Name in camel case.
Expand source code
def camel_to_snake(
    name: str, _re_snake: Pattern[str] = re.compile("[a-z][A-Z]")
) -> str:
    """Convert name from CamelCase to snake_case.

    Args:
        name (str): A symbol name, such as a class name.

    Returns:
        str: Name in camel case.
    """

    def repl(match: Match[str]) -> str:
        lower: str
        upper: str
        lower, upper = match.group()  # type: ignore
        return f"{lower}_{upper.lower()}"

    return _re_snake.sub(repl, name).lower()