Sha256: a993087c89cfd600fb9e5fccf7698badb507a4269eaadbf2b7caf1915736f0e2

Contents?: true

Size: 1.21 KB

Versions: 15

Compression:

Stored size: 1.21 KB

Contents

module Coltrane
  module Commands
    class FindScale < Command
      attr_reader :scale_set

      def initialize(scale_set)
        @scale_set = scale_set
      end

      def representation
        scale_set
      end

      def self.mercenary_init(program)
        program.command(:'find-scale') do |c|
          c.syntax 'find-scale --notes C-D-E-...] OR --chord Cmaj7-Db7'
          c.description 'finds scales with the provided --notes or --chord'
          c.option :notes, '--notes C-D-E', 'Find scales with those notes'
          c.option :chords, '--chords Cmaj7-D11', 'find scales with those chords'
          c.action do |(_), notes: nil, chords: nil|
            begin
              if notes
                Theory::Scale.having_notes(
                  Theory::NoteSet[*notes.to_s.split('-')]
                )
              elsif chords
                Theory::Scale.having_chords(*chords.to_s.split('-'))
              else
                raise 'Provide --notes or --chords separated by dashes.' \
                      'For example coltrane find-scale --notes C-E-F#'
              end
            end
            .yield_self { |scale_set| new(scale_set).render }
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
coltrane-3.4.2 lib/coltrane/commands/find_scale.rb
coltrane-3.4.1 lib/coltrane/commands/find_scale.rb
coltrane-3.4.0 lib/coltrane/commands/find_scale.rb
coltrane-3.3.3 lib/coltrane/commands/find_scale.rb
coltrane-3.3.2 lib/coltrane/commands/find_scale.rb
coltrane-3.3.1 lib/coltrane/commands/find_scale.rb
coltrane-3.3.0 lib/coltrane/commands/find_scale.rb
coltrane-3.2.0 lib/coltrane/commands/find_scale.rb
coltrane-3.1.3 lib/coltrane/commands/find_scale.rb
coltrane-3.1.2 lib/coltrane/commands/find_scale.rb
coltrane-3.1.1 lib/coltrane/commands/find_scale.rb
coltrane-3.1.0 lib/coltrane/commands/find_scale.rb
coltrane-3.0.0 lib/coltrane/commands/find_scale.rb
coltrane-3.0.0.rc1 lib/coltrane/commands/find_scale.rb
coltrane-3.0.0.pre lib/coltrane/commands/find_scale.rb