36 lines
850 B
Python
36 lines
850 B
Python
from dataclasses import dataclass
|
|
|
|
NUMBER_FORMAT_MAP = {
|
|
"#,###.##": (".", ",", 2),
|
|
"#.###,##": (",", ".", 2),
|
|
"# ###.##": (".", " ", 2),
|
|
"# ###,##": (",", " ", 2),
|
|
"#'###.##": (".", "'", 2),
|
|
"#, ###.##": (".", ", ", 2),
|
|
"#,##,###.##": (".", ",", 2),
|
|
"#,###.###": (".", ",", 3),
|
|
"#.###": ("", ".", 0),
|
|
"#,###": ("", ",", 0),
|
|
"#.########": (".", "", 8),
|
|
}
|
|
|
|
|
|
@dataclass
|
|
class NumberFormat:
|
|
precision: int
|
|
decimal_separator: str
|
|
thousands_separator: str
|
|
string: str
|
|
|
|
@classmethod
|
|
def from_string(cls, number_format: str) -> "NumberFormat":
|
|
decimal_separator, thousands_separator, precision = NUMBER_FORMAT_MAP[number_format]
|
|
return NumberFormat(
|
|
precision=precision,
|
|
decimal_separator=decimal_separator,
|
|
thousands_separator=thousands_separator,
|
|
string=number_format,
|
|
)
|
|
|
|
def __str__(self) -> str:
|
|
return self.string
|