def check_discontiguous_spanners(self): r'''There are now two different types of spanner. Most spanners demand that spanner components be logical-voice-contiguous. But a few special spanners (like Tempo) do not make such a demand. The check here consults the experimental `_contiguity_constraint`. Returns violators and total. ''' from abjad.tools.selectiontools import Selection violators = [] total, bad = 0, 0 for spanner in self.expr._get_descendants()._get_spanners(): if spanner._contiguity_constraint == 'logical voice': if not Selection._all_are_contiguous_components_in_same_logical_voice( spanner[:]): violators.append(spanner) total += 1 return violators, total
def check_discontiguous_spanners(self): r'''There are now two different types of spanner. Most spanners demand that spanner components be logical-voice-contiguous. But a few special spanners (like Tempo) do not make such a demand. The check here consults the experimental `_contiguity_constraint`. Returns violators and total. ''' from abjad.tools.selectiontools import Selection violators = [] total, bad = 0, 0 for spanner in self.expr._get_descendants()._get_spanners(): if spanner._contiguity_constraint == 'logical voice': if not Selection._all_are_contiguous_components_in_same_logical_voice( spanner[:]): violators.append(spanner) total += 1 return violators, total