Skip to content

Commit b2bfd19

Browse files
committed
Removed LiteralInt but kept the _encode_underscoresfunction.
1 parent 525a187 commit b2bfd19

File tree

2 files changed

+26
-58
lines changed

2 files changed

+26
-58
lines changed

python/selfie-lib/selfie_lib/Literals.py

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -44,36 +44,22 @@ def parse(self, string: str, language: Language) -> T:
4444
PADDING_SIZE = len(str(MAX_RAW_NUMBER)) - 1
4545

4646

47-
class LiteralInt(LiteralFormat[int]):
48-
def _encode_underscores(
49-
self, buffer: io.StringIO, value: int, language: Language
50-
) -> io.StringIO:
51-
if value >= MAX_RAW_NUMBER:
52-
mod = value % MAX_RAW_NUMBER
53-
left_padding = PADDING_SIZE - len(str(mod))
54-
self._encode_underscores(buffer, value // MAX_RAW_NUMBER, language)
55-
buffer.write("_")
56-
buffer.write("0" * left_padding)
57-
buffer.write(str(mod))
58-
return buffer
59-
elif value < 0:
60-
buffer.write("-")
61-
self._encode_underscores(buffer, abs(value), language)
62-
return buffer
63-
else:
64-
buffer.write(str(value))
65-
return buffer
66-
67-
def encode(
68-
self,
69-
value: int,
70-
language: Language,
71-
encoding_policy: EscapeLeadingWhitespace, # noqa: ARG002
72-
) -> str:
73-
return self._encode_underscores(io.StringIO(), value, language).getvalue()
74-
75-
def parse(self, string: str, language: Language) -> int: # noqa: ARG002
76-
return int(string.replace("_", ""))
47+
def _encode_int_underscores(buffer: io.StringIO, value: int) -> str:
48+
if value >= MAX_RAW_NUMBER:
49+
mod = value % MAX_RAW_NUMBER
50+
left_padding = PADDING_SIZE - len(str(mod))
51+
_encode_int_underscores(buffer, value // MAX_RAW_NUMBER)
52+
buffer.write("_")
53+
buffer.write("0" * left_padding)
54+
buffer.write(str(mod))
55+
return buffer.getvalue()
56+
elif value < 0:
57+
buffer.write("-")
58+
_encode_int_underscores(buffer, abs(value))
59+
return buffer.getvalue()
60+
else:
61+
buffer.write(str(value))
62+
return buffer.getvalue()
7763

7864

7965
TRIPLE_QUOTE = '"""'
@@ -252,10 +238,13 @@ def handle_escape_sequences(line: str) -> str:
252238

253239
class LiteralRepr(LiteralFormat[Any]):
254240
def encode(
255-
self, value: Any, language: Language, encoding_policy: EscapeLeadingWhitespace
241+
self,
242+
value: Any,
243+
language: Language, # noqa: ARG002
244+
encoding_policy: EscapeLeadingWhitespace, # noqa: ARG002
256245
) -> str:
257246
if isinstance(value, int):
258-
return LiteralInt().encode(value, language, encoding_policy)
247+
return _encode_int_underscores(io.StringIO(), value)
259248
else:
260249
return repr(value)
261250

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,11 @@
1-
from selfie_lib.EscapeLeadingWhitespace import EscapeLeadingWhitespace
2-
from selfie_lib.Literals import Language, LiteralInt
1+
import io
32

4-
5-
def _encode(value: int, expected: str):
6-
literal_int = LiteralInt()
7-
actual = literal_int.encode(value, Language.PYTHON, EscapeLeadingWhitespace.NEVER)
8-
assert actual == expected, f"Expected '{expected}', but got '{actual}'"
3+
from selfie_lib.Literals import _encode_int_underscores
94

105

11-
def _decode(value: str, expected: int):
12-
literal_int = LiteralInt()
13-
actual = literal_int.parse(value, Language.PYTHON)
14-
assert actual == expected, f"Expected '{expected}', but got '{actual}'"
6+
def _encode(value: int, expected: str):
7+
actual = _encode_int_underscores(io.StringIO(), value)
8+
assert actual == expected
159

1610

1711
class TestLiteralInt:
@@ -35,18 +29,3 @@ def test_encode(self):
3529
]
3630
for value, expected in test_cases:
3731
_encode(value, expected)
38-
39-
def test_decode(self):
40-
test_cases = [
41-
("0", 0),
42-
("1", 1),
43-
("-1", -1),
44-
("999", 999),
45-
("9_99", 999),
46-
("9_9_9", 999),
47-
("-999", -999),
48-
("-9_99", -999),
49-
("-9_9_9", -999),
50-
]
51-
for value, expected in test_cases:
52-
_decode(value, expected)

0 commit comments

Comments
 (0)