Sha256: 43907b1644ba9ca6db050c83ee76e912bd92e16f72ccfcbf68608026f4ed191e

Contents?: true

Size: 459 Bytes

Versions: 8

Compression:

Stored size: 459 Bytes

Contents

class HeadMusic::Consonance
  LEVELS = %w[perfect imperfect dissonant]

  def self.get(name)
    @consonances ||= {}
    @consonances[name.to_sym] ||= new(name) if LEVELS.include?(name.to_s)
  end
  singleton_class.send(:alias_method, :[], :get)

  attr_reader :name

  delegate :to_s, to: :name

  def initialize(name)
    @name = name.to_s.to_sym
  end

  LEVELS.each do |method_name|
    define_method(:"#{method_name}?") { to_s == method_name }
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
head_music-0.8.0 lib/head_music/consonance.rb
head_music-0.7.0 lib/head_music/consonance.rb
head_music-0.6.4 lib/head_music/consonance.rb
head_music-0.6.3 lib/head_music/consonance.rb
head_music-0.6.1 lib/head_music/consonance.rb
head_music-0.6.0 lib/head_music/consonance.rb
head_music-0.5.4 lib/head_music/consonance.rb
head_music-0.5.3 lib/head_music/consonance.rb