Exemplo n.º 1
0
    def tweak_string(self, directed=True, grob=False) -> str:
        r"""
        Gets LilyPond grob override \tweak string.

        ..  container:: example

            >>> override = abjad.LilyPondGrobOverride(
            ...     grob_name='Glissando',
            ...     property_path='style',
            ...     value=abjad.SchemeSymbol('zigzag'),
            ...     )
            >>> override.tweak_string()
            "- \\tweak style #'zigzag"

        ..  container:: example

            >>> override = abjad.LilyPondGrobOverride(
            ...     grob_name='RehearsalMark',
            ...     property_path='color',
            ...     value='red',
            ...     )
            >>> override.tweak_string(directed=False)
            '\\tweak color #red'

        ..  container:: example

            LilyPond literals are allowed:

            >>> override = abjad.LilyPondGrobOverride(
            ...     grob_name='TextSpann',
            ...     property_path=('bound-details', 'left-broken', 'text'),
            ...     value=abjad.LilyPondLiteral(r'\markup \upright pont.'),
            ...     )
            >>> override.tweak_string(directed=False)
            '\\tweak bound-details.left-broken.text \\markup \\upright pont.'

        """
        from abjad.indicators.LilyPondLiteral import LilyPondLiteral

        if directed:
            result = [r"- \tweak"]
        else:
            result = [r"\tweak"]
        if grob:
            property_path = (self.grob_name,) + self.property_path
        else:
            property_path = self.property_path
        string = ".".join(property_path)
        result.append(string)
        if isinstance(self.value, LilyPondLiteral):
            assert isinstance(self.value.argument, str)
            string = self.value.argument
        else:
            string = Scheme.format_embedded_scheme_value(self.value)
        result.append(string)
        return " ".join(result)
Exemplo n.º 2
0
    def override_format_pieces(self) -> typing.Tuple[str, ...]:
        r"""
        Gets LilyPond grob override \override format pieces.

        ..  container:: example

            >>> override = abjad.LilyPondGrobOverride(
            ...    lilypond_type='Staff',
            ...    grob_name='TextSpanner',
            ...    once=True,
            ...    property_path=(
            ...        'bound-details',
            ...        'left',
            ...        'text',
            ...        ),
            ...    value=abjad.Markup(r'\bold { over pressure }'),
            ...    )
            >>> for line in override.override_format_pieces:
            ...     line
            ...
            '\\once \\override Staff.TextSpanner.bound-details.left.text = \\markup {'
            '    \\bold'
            '        {'
            '            over'
            '            pressure'
            '        }'
            '    }'

        """
        result = []
        if self.once:
            result.append(r'\once')
        result.append(r'\override')
        result.append(self._override_property_path_string())
        result.append('=')
        string = Scheme.format_embedded_scheme_value(self.value)
        value_pieces = string.split('\n')
        result.append(value_pieces[0])
        result[:] = [' '.join(result)]
        result.extend(value_pieces[1:])
        return tuple(result)
Exemplo n.º 3
0
 def format_pieces(self) -> typing.Tuple[str, ...]:
     r"""
     Gets LilyPond context setting ``\set`` or ``\unset`` format pieces.
     """
     result = []
     if not self.is_unset:
         result.append(r"\set")
     else:
         result.append(r"\unset")
     if self.lilypond_type is not None:
         string = f"{self.lilypond_type}.{self.context_property}"
         result.append(string)
     else:
         result.append(self.context_property)
     result.append("=")
     string = Scheme.format_embedded_scheme_value(self.value)
     value_pieces = string.split("\n")
     result.append(value_pieces[0])
     result[:] = [" ".join(result)]
     result.extend(value_pieces[1:])
     return tuple(result)
Exemplo n.º 4
0
 def format_pieces(self) -> typing.Tuple[str, ...]:
     r"""
     Gets LilyPond context setting ``\set`` or ``\unset`` format pieces.
     """
     result = []
     if not self.is_unset:
         result.append(r"\set")
     else:
         result.append(r"\unset")
     if self.lilypond_type is not None:
         string = f"{self.lilypond_type}.{self.context_property}"
         result.append(string)
     else:
         result.append(self.context_property)
     result.append("=")
     string = Scheme.format_embedded_scheme_value(self.value)
     value_pieces = string.split("\n")
     result.append(value_pieces[0])
     result[:] = [" ".join(result)]
     result.extend(value_pieces[1:])
     return tuple(result)