Skip to content

Commit 5190e36

Browse files
Use single source of truth for default text values (ManimCommunity#2530)
1 parent 280854e commit 5190e36

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

Diff for: manim/mobject/svg/text_mobject.py

+18-13
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,10 @@ def _text2hash(self, color: Color):
607607
return hasher.hexdigest()[:16]
608608

609609
def _merge_settings(
610-
self, left_setting: TextSetting, right_setting: TextSetting, args: Sequence[str]
610+
self,
611+
left_setting: TextSetting,
612+
right_setting: TextSetting,
613+
default_args: dict[str, Iterable[str]],
611614
) -> TextSetting:
612615
contained = right_setting.end < left_setting.end
613616
new_setting = copy.copy(left_setting) if contained else copy.copy(right_setting)
@@ -617,10 +620,10 @@ def _merge_settings(
617620
if not contained:
618621
right_setting.end = new_setting.start
619622

620-
for arg in args:
623+
for arg in default_args:
621624
left = getattr(left_setting, arg)
622625
right = getattr(right_setting, arg)
623-
default = getattr(self, arg)
626+
default = default_args[arg]
624627
if left != default and getattr(right_setting, arg) != default:
625628
raise ValueError(
626629
f"Ambiguous style for text '{self.text[right_setting.start:right_setting.end]}':"
@@ -630,13 +633,15 @@ def _merge_settings(
630633
return new_setting
631634

632635
def _get_settings_from_t2xs(
633-
self, t2xs: Sequence[tuple[dict[str, str], str]]
636+
self,
637+
t2xs: Sequence[tuple[dict[str, str], str]],
638+
default_args: dict[str, Iterable[str]],
634639
) -> Sequence[TextSetting]:
635640
settings = []
636641
t2xwords = set(chain(*([*t2x.keys()] for t2x, _ in t2xs)))
637642
for word in t2xwords:
638643
setting_args = {
639-
arg: t2x[word] if word in t2x else getattr(self, arg)
644+
arg: t2x[word] if word in t2x else default_args[arg]
640645
for t2x, arg in t2xs
641646
}
642647

@@ -645,10 +650,10 @@ def _get_settings_from_t2xs(
645650
return settings
646651

647652
def _get_settings_from_gradient(
648-
self, setting_args: dict[str, Iterable[str]]
653+
self, default_args: dict[str, Iterable[str]]
649654
) -> Sequence[TextSetting]:
650655
settings = []
651-
args = copy.copy(setting_args)
656+
args = copy.copy(default_args)
652657
if self.gradient:
653658
colors = color_gradient(self.gradient, len(self.text))
654659
for i in range(len(self.text)):
@@ -678,12 +683,12 @@ def _text2settings(self, color: Color):
678683
(self.t2w, "weight"),
679684
(self.t2c, "color"),
680685
]
681-
setting_args = {
686+
default_args = {
682687
arg: getattr(self, arg) if arg != "color" else color for _, arg in t2xs
683688
}
684689

685-
settings = self._get_settings_from_t2xs(t2xs)
686-
settings.extend(self._get_settings_from_gradient(setting_args))
690+
settings = self._get_settings_from_t2xs(t2xs, default_args)
691+
settings.extend(self._get_settings_from_gradient(default_args))
687692

688693
# Handle overlaps
689694

@@ -694,7 +699,7 @@ def _text2settings(self, color: Color):
694699

695700
next_setting = settings[index + 1]
696701
if setting.end > next_setting.start:
697-
new_setting = self._merge_settings(setting, next_setting, setting_args)
702+
new_setting = self._merge_settings(setting, next_setting, default_args)
698703
new_index = index + 1
699704
while (
700705
new_index < len(settings)
@@ -708,10 +713,10 @@ def _text2settings(self, color: Color):
708713
start = 0
709714
for setting in settings:
710715
if setting.start != start:
711-
temp_settings.append(TextSetting(start, setting.start, **setting_args))
716+
temp_settings.append(TextSetting(start, setting.start, **default_args))
712717
start = setting.end
713718
if start != len(self.text):
714-
temp_settings.append(TextSetting(start, len(self.text), **setting_args))
719+
temp_settings.append(TextSetting(start, len(self.text), **default_args))
715720
settings = sorted(temp_settings, key=lambda setting: setting.start)
716721

717722
if re.search(r"\n", self.text):

0 commit comments

Comments
 (0)