def offset_happens_during_timespan(timespan=None, offset=None, hold=False):
    r'''Makes time relation indicating that `offset` happens during `timespan`.

    ..  container:: example

        >>> relation = abjad.timespantools.offset_happens_during_timespan()
        >>> abjad.f(relation)
        abjad.timespantools.OffsetTimespanTimeRelation(
            inequality=abjad.timespantools.CompoundInequality(
                [
                    abjad.TimespanInequality('timespan.start <= offset'),
                    abjad.TimespanInequality('offset < timespan.stop'),
                    ],
                logical_operator='and',
                ),
            )

    Returns time relation or boolean.
    '''
    from abjad.tools import timespantools

    inequality = timespantools.CompoundInequality([
        'timespan.start <= offset',
        'offset < timespan.stop',
        ])

    time_relation = timespantools.OffsetTimespanTimeRelation(
        inequality,
        timespan=timespan,
        offset=offset)

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
Exemple #2
0
def offset_happens_when_timespan_stops(timespan=None, offset=None, hold=False):
    r'''Makes time relation indicating that `offset` happens
    when `timespan` stops.

    ::

        >>> relation = timespantools.offset_happens_when_timespan_stops()
        >>> print(format(relation))
        timespantools.OffsetTimespanTimeRelation(
            inequality=timespantools.CompoundInequality(
                [
                    timespantools.SimpleInequality('offset == timespan.stop'),
                    ],
                logical_operator='and',
                ),
            )

    Returns time relation or boolean.
    '''
    from abjad.tools import timespantools

    inequality = timespantools.CompoundInequality([
        'offset == timespan.stop',
    ])

    time_relation = timespantools.OffsetTimespanTimeRelation(inequality,
                                                             timespan=timespan,
                                                             offset=offset)

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation
def offset_happens_before_timespan_starts(
    timespan=None,
    offset=None,
    hold=False,
):
    r'''Makes time relation indicating that `offset` happens
    before `timespan` starts.

    ..  container:: example

        **Example 1.** Makes time relation indicating that `offset`
        happens before `timespan` starts:

        ::

            >>> relation = timespantools.offset_happens_before_timespan_starts()
            >>> print(format(relation))
            timespantools.OffsetTimespanTimeRelation(
                inequality=timespantools.CompoundInequality(
                    [
                        timespantools.Inequality('offset < timespan.start'),
                        ],
                    logical_operator='and',
                    ),
                )

    ..  container:: example

        **Example 2.** Makes time relation indicating that offset ``1/2``
        happens before `timespan` starts:

        ::

            >>> offset = durationtools.Offset(1, 2)

        ::

            >>> relation = \
            ...     timespantools.offset_happens_before_timespan_starts(
            ...     offset=offset)

        ::

            >>> print(format(relation))
            timespantools.OffsetTimespanTimeRelation(
                inequality=timespantools.CompoundInequality(
                    [
                        timespantools.Inequality('offset < timespan.start'),
                        ],
                    logical_operator='and',
                    ),
                offset=durationtools.Offset(1, 2),
                )

    ..  container:: example

        **Example 3.** Makes time relation indicating that `offset` happens
        before timespan ``[2, 8)`` starts:

        ::

            >>> timespan = timespantools.Timespan(2, 8)

        ::

            >>> relation = \
            ...     timespantools.offset_happens_before_timespan_starts(
            ...     timespan=timespan)

        ::

            >>> print(format(relation))
            timespantools.OffsetTimespanTimeRelation(
                inequality=timespantools.CompoundInequality(
                    [
                        timespantools.Inequality('offset < timespan.start'),
                        ],
                    logical_operator='and',
                    ),
                timespan=timespantools.Timespan(
                    start_offset=durationtools.Offset(2, 1),
                    stop_offset=durationtools.Offset(8, 1),
                    ),
                )

    ..  container:: example

        **Example 4.** Makes time relation indicating that offset ``1/2``
        happens before timespan ``[2, 8)`` starts:

        ::

            >>> relation = timespantools.offset_happens_before_timespan_starts(
            ...     timespan=timespan,
            ...     offset=offset,
            ...     hold=True,
            ...     )

        ::

            >>> print(format(relation))
            timespantools.OffsetTimespanTimeRelation(
                inequality=timespantools.CompoundInequality(
                    [
                        timespantools.Inequality('offset < timespan.start'),
                        ],
                    logical_operator='and',
                    ),
                timespan=timespantools.Timespan(
                    start_offset=durationtools.Offset(2, 1),
                    stop_offset=durationtools.Offset(8, 1),
                    ),
                offset=durationtools.Offset(1, 2),
                )

    ..  container:: example

        **Example 5.** Evaluates time relation indicating that offset ``1/2``
        happens before timespan ``[2, 8)`` starts:

        ::

            >>> timespantools.offset_happens_before_timespan_starts(
            ...     timespan=timespan,
            ...     offset=offset,
            ...     hold=False,
            ...     )
            True

    Returns time relation or boolean.
    '''
    from abjad.tools import timespantools

    inequality = timespantools.CompoundInequality([
        'offset < timespan.start',
    ])

    time_relation = timespantools.OffsetTimespanTimeRelation(inequality,
                                                             timespan=timespan,
                                                             offset=offset)

    if time_relation.is_fully_loaded and not hold:
        return time_relation()
    else:
        return time_relation