| 46 | |
| 47 | |
| 48 | class Variable(Atom): |
| 49 | def __init__(self, name: str, default: Optional[str]) -> None: |
| 50 | self.name = name |
| 51 | self.default = default |
| 52 | |
| 53 | def __repr__(self) -> str: |
| 54 | return f"Variable(name={self.name}, default={self.default})" |
| 55 | |
| 56 | def __eq__(self, other: object) -> bool: |
| 57 | if not isinstance(other, self.__class__): |
| 58 | return NotImplemented |
| 59 | return (self.name, self.default) == (other.name, other.default) |
| 60 | |
| 61 | def __hash__(self) -> int: |
| 62 | return hash((self.__class__, self.name, self.default)) |
| 63 | |
| 64 | def resolve(self, env: Mapping[str, Optional[str]]) -> str: |
| 65 | default = self.default if self.default is not None else "" |
| 66 | result = env.get(self.name, default) |
| 67 | return result if result is not None else "" |
| 68 | |
| 69 | |
| 70 | def parse_variables(value: str) -> Iterator[Atom]: |
no outgoing calls
no test coverage detected
searching dependent graphs…