Class: Clef::Core::Rest

Inherits:
Object
  • Object
show all
Defined in:
lib/clef/core/rest.rb

Constant Summary collapse

KINDS =
%i[visible invisible spacer multi_measure].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(duration, kind: :visible, measures: 1) ⇒ Rest

Returns a new instance of Rest.

Parameters:

  • duration (Duration)
  • kind (Symbol) (defaults to: :visible)
  • measures (Integer) (defaults to: 1)

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
21
# File 'lib/clef/core/rest.rb', line 13

def initialize(duration, kind: :visible, measures: 1)
  raise ArgumentError, "duration must be a Clef::Core::Duration" unless duration.is_a?(Duration)
  raise ArgumentError, "unsupported rest kind" unless KINDS.include?(kind)
  raise ArgumentError, "measures must be positive" unless measures.is_a?(Integer) && measures.positive?

  @duration = duration
  @kind = kind
  @measures = measures
end

Instance Attribute Details

#durationObject (readonly)

Returns the value of attribute duration.



8
9
10
# File 'lib/clef/core/rest.rb', line 8

def duration
  @duration
end

#kindObject (readonly)

Returns the value of attribute kind.



8
9
10
# File 'lib/clef/core/rest.rb', line 8

def kind
  @kind
end

#measuresObject (readonly)

Returns the value of attribute measures.



8
9
10
# File 'lib/clef/core/rest.rb', line 8

def measures
  @measures
end

Instance Method Details

#lengthRational

Returns:

  • (Rational)


24
25
26
# File 'lib/clef/core/rest.rb', line 24

def length
  duration.length * measures
end