def _tag_hide(strings): abjad_tags = Tags() return LilyPondFormatManager.tag( strings, deactivate=False, tag=abjad_tags.HIDE_TO_JOIN_BROKEN_SPANNERS, )
def has_persistence_tag(self) -> bool: """ Is true when tag has persistence tag. .. container:: example >>> abjad.Tag('FOO').has_persistence_tag() False >>> abjad.Tag('FOO:DEFAULT_CLEF').has_persistence_tag() True >>> abjad.Tag('DEFAULT_CLEF').has_persistence_tag() True """ from abjad.system.Tags import Tags tags = Tags().persistent_indicator_tags() for word in self: if word in tags: return True return False
import typing from abjad import enums, mathtools from abjad.lilypondnames.LilyPondTweakManager import LilyPondTweakManager from abjad.mathtools import Infinity, NegativeInfinity from abjad.system.FormatSpecification import FormatSpecification from abjad.system.LilyPondFormatBundle import LilyPondFormatBundle from abjad.system.StorageFormatManager import StorageFormatManager from abjad.system.Tags import Tags from abjad.utilities.String import String abjad_tags = Tags() class Dynamic(object): r""" Dynamic. .. container:: example Initializes from dynamic name: >>> voice = abjad.Voice("c'8 d'8 e'8 f'8") >>> dynamic = abjad.Dynamic('f') >>> abjad.attach(dynamic, voice[0]) .. docs:: >>> abjad.f(voice) \new Voice {
def attach_defaults(self, argument) -> typing.List: """ Attaches defaults to all staff and staff group contexts in ``argument`` when ``argument`` is a score. Attaches defaults to ``argument`` (without iterating ``argument``) when ``argument`` is a staff or staff group. Returns list of one wrapper for every indicator attached. """ assert isinstance(argument, (Score, Staff, StaffGroup)), repr(argument) wrappers: typing.List[Wrapper] = [] tag = Tags().REMOVE_ALL_EMPTY_STAVES empty_prototype = (MultimeasureRest, Skip) prototype = (Staff, StaffGroup) if isinstance(argument, Score): staff__groups = select(argument).components(prototype) staves = select(argument).components(Staff) elif isinstance(argument, Staff): staff__groups = [argument] staves = [argument] else: assert isinstance(argument, StaffGroup), repr(argument) staff__groups = [argument] staves = [] for staff__group in staff__groups: leaf = None voices = select(staff__group).components(Voice) # find first leaf in first nonempty voice for voice in voices: leaves = select(voice).leaves() if not all(isinstance(_, empty_prototype) for _ in leaves): leaf = inspect(voice).leaf(0) # otherwise, find first leaf in voice in non-removable staff if leaf is None: for voice in voices: voice_might_vanish = False for component in inspect(voice).parentage(): if inspect(component).annotation(tag) is True: voice_might_vanish = True if not voice_might_vanish: leaf = inspect(voice).leaf(0) if leaf is not None: break # otherwise, as last resort find first leaf in first voice if leaf is None: leaf = inspect(voices[0]).leaf(0) if leaf is None: continue instrument = inspect(leaf).indicator(instruments.Instrument) if instrument is None: string = 'default_instrument' instrument = inspect(staff__group).annotation(string) if instrument is not None: wrapper = attach(instrument, leaf, tag='ST1', wrapper=True) wrappers.append(wrapper) margin_markup = inspect(leaf).indicator(MarginMarkup) if margin_markup is None: string = 'default_margin_markup' margin_markup = inspect(staff__group).annotation(string) if margin_markup is not None: wrapper = attach( margin_markup, leaf, tag=Tag('-PARTS').prepend('ST2'), wrapper=True, ) wrappers.append(wrapper) for staff in staves: leaf = inspect(staff).leaf(0) clef = inspect(leaf).indicator(Clef) if clef is not None: continue clef = inspect(staff).annotation('default_clef') if clef is not None: wrapper = attach(clef, leaf, tag='ST3', wrapper=True) wrappers.append(wrapper) return wrappers