Skip to content

Grouping

provide.foundation.formatting.grouping

TODO: Add module docstring.

Functions

format_grouped

format_grouped(
    text: str,
    group_size: int = 8,
    groups: int = 0,
    separator: str = " ",
) -> str

Format a string with grouping separators for display.

Parameters:

Name Type Description Default
text str

Text to format

required
group_size int

Number of characters per group

8
groups int

Number of groups to show (0 for all)

0
separator str

Separator between groups

' '

Returns:

Type Description
str

Formatted string with groups

Examples:

>>> format_grouped("abc123def456", group_size=4, separator="-")
'abc1-23de-f456'
>>> format_grouped("abc123def456", group_size=4, groups=2)
'abc1 23de'
>>> format_grouped("1234567890abcdef", group_size=4)
'1234 5678 90ab cdef'
Source code in provide/foundation/formatting/grouping.py
def format_grouped(
    text: str,
    group_size: int = 8,
    groups: int = 0,
    separator: str = " ",
) -> str:
    """Format a string with grouping separators for display.

    Args:
        text: Text to format
        group_size: Number of characters per group
        groups: Number of groups to show (0 for all)
        separator: Separator between groups

    Returns:
        Formatted string with groups

    Examples:
        >>> format_grouped("abc123def456", group_size=4, separator="-")
        'abc1-23de-f456'
        >>> format_grouped("abc123def456", group_size=4, groups=2)
        'abc1 23de'
        >>> format_grouped("1234567890abcdef", group_size=4)
        '1234 5678 90ab cdef'

    """
    if group_size <= 0:
        return text

    formatted_parts = []
    for i in range(0, len(text), group_size):
        formatted_parts.append(text[i : i + group_size])
        if groups > 0 and len(formatted_parts) >= groups:
            break

    return separator.join(formatted_parts)