43 lines
822 B
Python
43 lines
822 B
Python
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
from src.core.format_spec.token import Token
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FormatSpecAlignment:
|
|
fill: Optional[Token]
|
|
align: Optional[Token]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FormatSpecOptions:
|
|
alignment: Optional[FormatSpecAlignment]
|
|
sign: Optional[Token]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FormatSpecIntegral:
|
|
width: Optional[int]
|
|
grouping: Optional[Token]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FormatSpecDecimal:
|
|
dot: Token
|
|
precision: Optional[int]
|
|
grouping: Optional[Token]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FormatSpecNumber:
|
|
integral: FormatSpecIntegral
|
|
decimal: Optional[FormatSpecDecimal]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FormatSpec:
|
|
options: FormatSpecOptions
|
|
number: FormatSpecNumber
|
|
type: Optional[Token]
|