Skip to content

Commit e107bf0

Browse files
committed
Small refactorings
1 parent 7eefa06 commit e107bf0

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

src/cedarscript_ast_parser/cedarscript_ast_parser.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class Marker(MarkerCompatible):
6060
See also: Marker.to_search_range
6161
"""
6262
type: MarkerType
63-
value: str
63+
value: str | int | None
6464
offset: int | None = None
6565

6666
# See `line_base`
@@ -70,6 +70,15 @@ class Marker(MarkerCompatible):
7070
def as_marker(self) -> 'Marker':
7171
return self
7272

73+
def with_qualifier(self, qualifier: RelativePositionType):
74+
return RelativeMarker(
75+
qualifier=qualifier,
76+
type=self.type,
77+
value=self.value,
78+
offset=self.offset,
79+
marker_subtype = self.marker_subtype
80+
) if qualifier else self
81+
7382
def __str__(self):
7483
result = self.type.value
7584
match self.marker_subtype:
@@ -81,9 +90,9 @@ def __str__(self):
8190
result += f' {self.marker_subtype}'
8291

8392
if self.marker_subtype != 'empty':
84-
result += f" '{self.value.strip()}'"
93+
result += f" '{str(self.value).strip()}'"
8594
if self.offset is not None:
86-
result += f" at offset {self.offset}"
95+
result += f" ^{self.offset}"
8796
return result
8897

8998

@@ -110,7 +119,7 @@ class Segment:
110119
end: RelativeMarker
111120

112121
def __str__(self):
113-
return f"segment from ({self.start}) to ({self.end})"
122+
return f"segment from [{self.start}] to [{self.end}]"
114123

115124

116125
MarkerOrSegment: TypeAlias = Marker | Segment
@@ -596,9 +605,7 @@ def parse_region(self, node) -> Region:
596605
result = BodyOrWhole(bow.lower())
597606
case _:
598607
raise ValueError(f"Unexpected node type: {node.type}")
599-
if qualifier:
600-
result = RelativeMarker(qualifier=qualifier, type=result.type, value=result.value, offset=result.offset)
601-
return result
608+
return result.with_qualifier(qualifier) if qualifier else result
602609

603610
def parse_marker(self, node) -> Marker:
604611
# Handle marker inside marker_or_segment
@@ -622,8 +629,8 @@ def parse_marker(self, node) -> Marker:
622629
marker_type = node.children[0].type.casefold()
623630
value = self.find_primitive(node)
624631

625-
node1 = self.find_first_by_type(node.named_children, 'offset_clause')
626-
offset = self.find_primitive(node1)
632+
offset = self.find_first_by_type(node.named_children, 'offset_clause')
633+
offset = self.find_primitive(offset)
627634
return Marker(
628635
type=MarkerType(marker_type.casefold()),
629636
marker_subtype=marker_subtype,
@@ -705,10 +712,10 @@ def parse_case_when(self, node) -> CaseWhen:
705712
when.empty = True
706713

707714
elif indent := self.find_first_by_field_name(node, 'indent_level'):
708-
when.indent_level = int(indent.text)
715+
when.indent_level = int(indent.text.decode('utf8'))
709716

710717
elif line_num := self.find_first_by_field_name(node, 'line_number'):
711-
when.line_number = int(line_num.text)
718+
when.line_number = int(line_num.text.decode('utf8'))
712719

713720
elif line_str := self.find_first_by_field_name(node, 'line_matcher'):
714721
when.line_matcher = self.parse_string(line_str)

0 commit comments

Comments
 (0)