Skip to content

Commit 2a72d31

Browse files
committed
Simplify notation
1 parent 3861478 commit 2a72d31

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

sur-cli/sur/models.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def __str__(self) -> str:
7979
class Beat:
8080
"""A beat in a composition, containing one or more elements"""
8181
elements: List[Element] = field(default_factory=list)
82+
bracketed: bool = False # Track if this beat was originally in brackets
8283

8384
def __str__(self) -> str:
8485
"""Format the beat for display"""
@@ -89,13 +90,11 @@ def __str__(self) -> str:
8990
if len(self.elements) == 1:
9091
return str(self.elements[0])
9192

92-
# If all elements are just notes (no lyrics), compact them
93-
if all(not e.lyrics and e.note for e in self.elements):
94-
return "".join(str(e) for e in self.elements)
93+
# Format the elements - use spaces only if bracketed
94+
formatted = (" ".join if self.bracketed else "".join)(str(e) for e in self.elements if str(e))
9595

96-
# Multiple elements with at least one lyrics - use brackets
97-
formatted = " ".join(str(e) for e in self.elements if str(e))
98-
return f"[{formatted}]" if formatted else ""
96+
# Add brackets only if this was originally bracketed
97+
return f"[{formatted}]" if self.bracketed else formatted
9998

10099
@dataclass
101100
class Section:

sur-cli/sur/parser.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,12 @@ def _elements_to_beats(self, elements: List[Element]) -> List[Beat]:
106106
in_bracket = False
107107
last_was_separator = True # Start true to handle first element
108108

109-
def create_beat(elems):
109+
def create_beat(elems, bracketed=False):
110110
if elems:
111-
beats.append(Beat(elements=[e for e in elems if e.type == ElementType.NORMAL]))
111+
beats.append(Beat(
112+
elements=[e for e in elems if e.type == ElementType.NORMAL],
113+
bracketed=bracketed
114+
))
112115

113116
for element in elements:
114117
if element.type == ElementType.SEPARATOR:
@@ -127,7 +130,7 @@ def create_beat(elems):
127130
in_bracket = False
128131
# Create beat from bracketed elements
129132
if bracket_elements:
130-
beats.append(Beat(elements=[e for e in bracket_elements if e.type == ElementType.NORMAL]))
133+
create_beat(bracket_elements, bracketed=True)
131134
bracket_elements = []
132135
last_was_separator = True
133136
else: # Normal element

0 commit comments

Comments
 (0)