Class: Clef::Core::StaffGroup

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

Constant Summary collapse

BRACKETS =
%i[bracket brace none].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(staves = [], bracket_type: :none) ⇒ StaffGroup

Returns a new instance of StaffGroup.

Parameters:

  • staves (Array<Staff>) (defaults to: [])
  • bracket_type (Symbol) (defaults to: :none)

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
# File 'lib/clef/core/staff_group.rb', line 12

def initialize(staves = [], bracket_type: :none)
  raise ArgumentError, "unsupported bracket type" unless BRACKETS.include?(bracket_type)

  @staves = []
  @bracket_type = bracket_type
  staves.each { |staff| add_staff(staff) }
end

Instance Attribute Details

#bracket_typeObject (readonly)

Returns the value of attribute bracket_type.



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

def bracket_type
  @bracket_type
end

Instance Method Details

#add_staff(staff) ⇒ StaffGroup

Parameters:

Returns:

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
# File 'lib/clef/core/staff_group.rb', line 22

def add_staff(staff)
  raise ArgumentError, "staff must be a Clef::Core::Staff" unless staff.is_a?(Staff)
  raise ArgumentError, "duplicate staff id: #{staff.id}" if @staves.any? { |item| item.id == staff.id }

  @staves << staff
  self
end

#stavesArray<Staff>

Returns:



31
32
33
# File 'lib/clef/core/staff_group.rb', line 31

def staves
  @staves.dup.freeze
end