coltrane 3.4.2 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +1 -1
  5. data/CHANGELOG.md +6 -0
  6. data/Gemfile +1 -1
  7. data/Gemfile.lock +88 -75
  8. data/bin/bundle +23 -14
  9. data/bin/console +24 -12
  10. data/bin/gambiarra +29 -0
  11. data/bin/old-coltrane +29 -0
  12. data/bin/setup +27 -6
  13. data/bin/thor +1 -1
  14. data/coltrane.gemspec +4 -4
  15. data/exe/coltrane +14 -55
  16. data/lib/.DS_Store +0 -0
  17. data/lib/coltrane/.DS_Store +0 -0
  18. data/lib/coltrane/commands.rb +4 -9
  19. data/lib/coltrane/commands/available_chord_representations.rb +9 -0
  20. data/lib/coltrane/commands/available_classic_scales.rb +9 -0
  21. data/lib/coltrane/commands/available_notable_progressions.rb +9 -0
  22. data/lib/coltrane/commands/available_representations.rb +9 -0
  23. data/lib/coltrane/commands/command.rb +3 -54
  24. data/lib/coltrane/commands/find_chord_by_notes.rb +9 -0
  25. data/lib/coltrane/commands/find_common_chords.rb +9 -0
  26. data/lib/coltrane/commands/find_progressions_from_chords.rb +9 -0
  27. data/lib/coltrane/commands/find_scale_by_chords.rb +9 -0
  28. data/lib/coltrane/commands/find_scale_by_notes.rb +9 -0
  29. data/lib/coltrane/commands/get_chords_from_notable_progression.rb +9 -0
  30. data/lib/coltrane/commands/get_chords_from_progression.rb +9 -0
  31. data/lib/coltrane/commands/get_chords_from_scale.rb +9 -0
  32. data/lib/coltrane/commands/get_chords_from_string.rb +11 -0
  33. data/lib/coltrane/commands/get_classic_scale.rb +9 -0
  34. data/lib/coltrane/commands/get_notes.rb +9 -0
  35. data/lib/coltrane/commands/get_notes_from_string.rb +9 -0
  36. data/lib/coltrane/commands/get_representation_chords.rb +18 -0
  37. data/lib/coltrane/commands/get_representation_notes.rb +12 -0
  38. data/lib/coltrane/commands/render.rb +9 -0
  39. data/lib/coltrane/renderers/text_renderer/hash_drawer.rb +1 -0
  40. data/lib/coltrane/renderers/text_renderer/representation_guitar_chord_drawer.rb +2 -2
  41. data/lib/coltrane/renderers/text_renderer/representation_piano_note_set_drawer.rb +1 -1
  42. data/lib/coltrane/renderers/text_renderer/theory_chord_drawer.rb +1 -2
  43. data/lib/coltrane/theory/classic_scales.rb +1 -1
  44. data/lib/coltrane/theory/interval.rb +1 -1
  45. data/lib/coltrane/ui.rb +8 -0
  46. data/lib/coltrane/ui/.DS_Store +0 -0
  47. data/lib/coltrane/ui/base_view.rb +9 -0
  48. data/lib/coltrane/ui/views/.DS_Store +0 -0
  49. data/lib/coltrane/ui/views/chords.rb +19 -0
  50. data/lib/coltrane/ui/views/custom_progression.rb +27 -0
  51. data/lib/coltrane/ui/views/find_chord_by_notes.rb +16 -0
  52. data/lib/coltrane/ui/views/find_chords_in_scale.rb +36 -0
  53. data/lib/coltrane/ui/views/find_common_chords_in_scales.rb +40 -0
  54. data/lib/coltrane/ui/views/find_progressions_from_chords.rb +14 -0
  55. data/lib/coltrane/ui/views/find_scale.rb +14 -0
  56. data/lib/coltrane/ui/views/find_scale_by_chords.rb +16 -0
  57. data/lib/coltrane/ui/views/find_scale_by_notes.rb +16 -0
  58. data/lib/coltrane/ui/views/index.rb +14 -0
  59. data/lib/coltrane/ui/views/notes.rb +20 -0
  60. data/lib/coltrane/ui/views/progressions.rb +18 -0
  61. data/lib/coltrane/ui/views/scales.rb +17 -0
  62. data/lib/coltrane/ui/views/show_chord.rb +21 -0
  63. data/lib/coltrane/ui/views/show_progression.rb +26 -0
  64. data/lib/coltrane/ui/views/show_scale.rb +26 -0
  65. data/lib/coltrane/version.rb +1 -1
  66. metadata +61 -26
  67. data/lib/coltrane/commands/chords.rb +0 -93
  68. data/lib/coltrane/commands/common_chords.rb +0 -33
  69. data/lib/coltrane/commands/errors.rb +0 -44
  70. data/lib/coltrane/commands/find_guitar_chord.rb +0 -25
  71. data/lib/coltrane/commands/find_progression.rb +0 -28
  72. data/lib/coltrane/commands/find_scale.rb +0 -39
  73. data/lib/coltrane/commands/notes.rb +0 -50
  74. data/lib/coltrane/commands/progression.rb +0 -28
  75. data/lib/coltrane/commands/scale.rb +0 -46
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32946013238830132b204f366ee7b647033bc899d46326634a51a639dcd29dbc
4
- data.tar.gz: b67609e215a09f1e9b2f4a4346e0f0b37f6d89f0cea3b06a4266f838f0e17cdc
3
+ metadata.gz: 200087e08310a5e41ca48641d1f3c1cf87f114eb3add7743fbc73ebd33d3953d
4
+ data.tar.gz: 03b3da0eb7f619d778cd12008cd397e15883678179c1e385a1e7c0f49b8e9671
5
5
  SHA512:
6
- metadata.gz: 19aa9d773da33d5b2adf560071c0d3bd6ab3cb7e936014ff8065cda097b0d6ffb959f15eba5e26ca1bc0de3970fcb76a2e5b03a7ee9b01ff34dfccf9b7241cb8
7
- data.tar.gz: b3f307536e4a287135ace9901c7707cbb94c6138e05eaa7b1799c07e1162fc11eda8f854e06b0530fe9320d8e228e0de2f31072e0d275a7c1d0decc2c968081a
6
+ metadata.gz: b438a82b687d8a673b08c5dca43a81ca06d2264260a4f11fc7e5fe62da5e313198e18fd35c71f8d253198e59239261bc10d890dbf069f1f3f7253378d342cc8d
7
+ data.tar.gz: ffa7d8a8dae84e23438cd1c42c7efafd64943b41b1672d0563f673e2ca5860da8c87d0cf4d6ce09b5e1870c6f3acfa493078ab417e61c881dff3b95e6db104e4
Binary file
@@ -0,0 +1 @@
1
+ 3.0.0
@@ -7,7 +7,7 @@ git:
7
7
  depth: 1
8
8
 
9
9
  rvm:
10
- - 2.5.0
10
+ - 3.0.0
11
11
 
12
12
  before_script:
13
13
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
@@ -5,6 +5,12 @@
5
5
  - Fix chords so that they generate a barre and a non-barre version and prevent
6
6
  barre chords from picking notes before the barre.
7
7
 
8
+ ## [4.0.6]
9
+ - Change the CLI into a more intuitive one
10
+
11
+ ## [4.0.0]
12
+ - Includes totally revamped, easy to use command line interface.
13
+
8
14
  ## [3.4.2]
9
15
  - Fixes guitar strings rendering order (#41)
10
16
 
data/Gemfile CHANGED
@@ -15,4 +15,4 @@ group :test do
15
15
  gem 'rubocop', require: false
16
16
  end
17
17
 
18
- gemspec
18
+ gemspec
@@ -1,114 +1,127 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- coltrane (3.4.2)
4
+ coltrane (4.1.0)
5
+ activesupport (> 5.2)
5
6
  color (~> 1.8)
6
7
  dry-monads (~> 0.4)
8
+ gambiarra (~> 0)
7
9
  paint (~> 2.0)
8
- pedrozath-mercenary (= 0.3.8)
9
- tty-reader (~> 0.2)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- ast (2.4.0)
15
- byebug (10.0.2)
16
- coderay (1.1.2)
14
+ activesupport (6.1.1)
15
+ concurrent-ruby (~> 1.0, >= 1.0.2)
16
+ i18n (>= 1.6, < 2)
17
+ minitest (>= 5.1)
18
+ tzinfo (~> 2.0)
19
+ zeitwerk (~> 2.3)
20
+ ast (2.4.1)
21
+ byebug (11.1.3)
22
+ cli-ui (1.4.0)
23
+ coderay (1.1.3)
17
24
  color (1.8)
18
- concurrent-ruby (1.0.5)
19
- diff-lcs (1.3)
20
- docile (1.3.0)
21
- dry-core (0.4.7)
25
+ concurrent-ruby (1.1.7)
26
+ diff-lcs (1.4.4)
27
+ docile (1.3.5)
28
+ dry-core (0.5.0)
22
29
  concurrent-ruby (~> 1.0)
23
- dry-equalizer (0.2.1)
30
+ dry-equalizer (0.3.0)
24
31
  dry-monads (0.4.0)
25
32
  dry-core (~> 0.3, >= 0.3.3)
26
33
  dry-equalizer
27
- equatable (0.5.0)
34
+ gambiarra (0.0.3)
35
+ activesupport (> 5.2)
36
+ cli-ui (~> 1.1)
37
+ thor (= 0.20)
28
38
  hike (1.2.3)
29
- hitimes (1.2.6)
30
- json (2.1.0)
31
- method_source (0.9.0)
32
- necromancer (0.4.0)
33
- opal (0.10.5)
39
+ i18n (1.8.7)
40
+ concurrent-ruby (~> 1.0)
41
+ method_source (1.0.0)
42
+ minitest (5.14.3)
43
+ opal (0.10.6)
34
44
  hike (~> 1.2)
35
45
  sourcemap (~> 0.1.0)
36
46
  sprockets (~> 3.1)
37
47
  tilt (>= 1.4)
38
- opal-rspec (0.6.1)
48
+ opal-rspec (0.6.2)
39
49
  opal (>= 0.10.0, < 0.12)
40
- paint (2.0.1)
41
- parallel (1.12.1)
42
- parser (2.5.0.5)
43
- ast (~> 2.4.0)
44
- pastel (0.7.2)
45
- equatable (~> 0.5.0)
46
- tty-color (~> 0.4.0)
47
- pedrozath-mercenary (0.3.8)
48
- powerpack (0.1.1)
49
- pry (0.11.3)
50
- coderay (~> 1.1.0)
51
- method_source (~> 0.9.0)
52
- pry-byebug (3.6.0)
53
- byebug (~> 10.0)
54
- pry (~> 0.10)
55
- rack (2.0.4)
50
+ paint (2.2.1)
51
+ parallel (1.20.1)
52
+ parser (3.0.0.0)
53
+ ast (~> 2.4.1)
54
+ pastel (0.8.0)
55
+ tty-color (~> 0.5)
56
+ pry (0.13.1)
57
+ coderay (~> 1.1)
58
+ method_source (~> 1.0)
59
+ pry-byebug (3.9.0)
60
+ byebug (~> 11.0)
61
+ pry (~> 0.13.0)
62
+ rack (2.2.3)
56
63
  rainbow (3.0.0)
57
64
  rake (10.5.0)
58
- rspec (3.7.0)
59
- rspec-core (~> 3.7.0)
60
- rspec-expectations (~> 3.7.0)
61
- rspec-mocks (~> 3.7.0)
62
- rspec-core (3.7.1)
63
- rspec-support (~> 3.7.0)
64
- rspec-expectations (3.7.0)
65
+ regexp_parser (2.0.3)
66
+ rexml (3.2.4)
67
+ rspec (3.10.0)
68
+ rspec-core (~> 3.10.0)
69
+ rspec-expectations (~> 3.10.0)
70
+ rspec-mocks (~> 3.10.0)
71
+ rspec-core (3.10.1)
72
+ rspec-support (~> 3.10.0)
73
+ rspec-expectations (3.10.1)
65
74
  diff-lcs (>= 1.2.0, < 2.0)
66
- rspec-support (~> 3.7.0)
67
- rspec-mocks (3.7.0)
75
+ rspec-support (~> 3.10.0)
76
+ rspec-mocks (3.10.1)
68
77
  diff-lcs (>= 1.2.0, < 2.0)
69
- rspec-support (~> 3.7.0)
70
- rspec-support (3.7.1)
71
- rubocop (0.54.0)
78
+ rspec-support (~> 3.10.0)
79
+ rspec-support (3.10.1)
80
+ rubocop (1.8.1)
72
81
  parallel (~> 1.10)
73
- parser (>= 2.5)
74
- powerpack (~> 0.1)
82
+ parser (>= 3.0.0.0)
75
83
  rainbow (>= 2.2.2, < 4.0)
84
+ regexp_parser (>= 1.8, < 3.0)
85
+ rexml
86
+ rubocop-ast (>= 1.2.0, < 2.0)
76
87
  ruby-progressbar (~> 1.7)
77
- unicode-display_width (~> 1.0, >= 1.0.1)
78
- ruby-progressbar (1.9.0)
79
- simplecov (0.16.1)
88
+ unicode-display_width (>= 1.4.0, < 3.0)
89
+ rubocop-ast (1.4.0)
90
+ parser (>= 2.7.1.5)
91
+ ruby-progressbar (1.11.0)
92
+ simplecov (0.21.2)
80
93
  docile (~> 1.1)
81
- json (>= 1.8, < 3)
82
- simplecov-html (~> 0.10.0)
83
- simplecov-html (0.10.2)
94
+ simplecov-html (~> 0.11)
95
+ simplecov_json_formatter (~> 0.1)
96
+ simplecov-html (0.12.3)
97
+ simplecov_json_formatter (0.1.2)
84
98
  sourcemap (0.1.1)
85
- sprockets (3.7.1)
99
+ sprockets (3.7.2)
86
100
  concurrent-ruby (~> 1.0)
87
101
  rack (> 1, < 3)
88
- tilt (2.0.8)
89
- timers (4.1.2)
90
- hitimes
91
- tty-color (0.4.2)
92
- tty-cursor (0.5.0)
93
- tty-prompt (0.16.0)
94
- necromancer (~> 0.4.0)
95
- pastel (~> 0.7.0)
96
- timers (~> 4.0)
97
- tty-cursor (~> 0.5.0)
98
- tty-reader (~> 0.2.0)
99
- tty-reader (0.2.0)
100
- tty-cursor (~> 0.5.0)
101
- tty-screen (~> 0.6.4)
102
- wisper (~> 2.0.0)
103
- tty-screen (0.6.4)
104
- unicode-display_width (1.3.0)
105
- wisper (2.0.0)
102
+ thor (0.20.0)
103
+ tilt (2.0.10)
104
+ tty-color (0.6.0)
105
+ tty-cursor (0.7.1)
106
+ tty-prompt (0.23.0)
107
+ pastel (~> 0.8)
108
+ tty-reader (~> 0.8)
109
+ tty-reader (0.9.0)
110
+ tty-cursor (~> 0.7)
111
+ tty-screen (~> 0.8)
112
+ wisper (~> 2.0)
113
+ tty-screen (0.8.1)
114
+ tzinfo (2.0.4)
115
+ concurrent-ruby (~> 1.0)
116
+ unicode-display_width (2.0.0)
117
+ wisper (2.0.1)
118
+ zeitwerk (2.4.2)
106
119
 
107
120
  PLATFORMS
108
121
  ruby
109
122
 
110
123
  DEPENDENCIES
111
- bundler (~> 1.14)
124
+ bundler (~> 2.2.5)
112
125
  coltrane!
113
126
  opal-rspec
114
127
  pry
@@ -120,4 +133,4 @@ DEPENDENCIES
120
133
  tty-prompt
121
134
 
122
135
  BUNDLED WITH
123
- 1.16.4
136
+ 2.2.5
data/bin/bundle CHANGED
@@ -11,7 +11,7 @@
11
11
  require "rubygems"
12
12
 
13
13
  m = Module.new do
14
- module_function
14
+ module_function
15
15
 
16
16
  def invoked_as_script?
17
17
  File.expand_path($0) == File.expand_path(__FILE__)
@@ -31,7 +31,7 @@ m = Module.new do
31
31
  bundler_version = a
32
32
  end
33
33
  next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34
- bundler_version = $1 || ">= 0.a"
34
+ bundler_version = $1
35
35
  update_index = i
36
36
  end
37
37
  bundler_version
@@ -61,32 +61,41 @@ m = Module.new do
61
61
  end
62
62
 
63
63
  def bundler_version
64
- @bundler_version ||= begin
64
+ @bundler_version ||=
65
65
  env_var_version || cli_arg_version ||
66
- lockfile_version || "#{Gem::Requirement.default}.a"
67
- end
66
+ lockfile_version
67
+ end
68
+
69
+ def bundler_requirement
70
+ return "#{Gem::Requirement.default}.a" unless bundler_version
71
+
72
+ bundler_gem_version = Gem::Version.new(bundler_version)
73
+
74
+ requirement = bundler_gem_version.approximate_recommendation
75
+
76
+ return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0")
77
+
78
+ requirement += ".a" if bundler_gem_version.prerelease?
79
+
80
+ requirement
68
81
  end
69
82
 
70
83
  def load_bundler!
71
84
  ENV["BUNDLE_GEMFILE"] ||= gemfile
72
85
 
73
- # must dup string for RG < 1.8 compatibility
74
- activate_bundler(bundler_version.dup)
86
+ activate_bundler
75
87
  end
76
88
 
77
- def activate_bundler(bundler_version)
78
- if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
79
- bundler_version = "< 2"
80
- end
89
+ def activate_bundler
81
90
  gem_error = activation_error_handling do
82
- gem "bundler", bundler_version
91
+ gem "bundler", bundler_requirement
83
92
  end
84
93
  return if gem_error.nil?
85
94
  require_error = activation_error_handling do
86
95
  require "bundler/version"
87
96
  end
88
- return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))
89
- warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
97
+ return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
98
+ warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
90
99
  exit 42
91
100
  end
92
101
 
@@ -1,17 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift(File.expand_path('../../lib', __FILE__))
2
+ # frozen_string_literal: true
3
3
 
4
- require "bundler/setup"
5
- require "coltrane"
6
- require "coltrane/commands"
7
- require "coltrane/representation"
8
- require "coltrane/renderers"
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'console' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
9
14
 
10
- require "pry"
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
11
16
 
12
- include Coltrane
13
- include Coltrane::Theory
14
- include Coltrane::Representation
15
- include Coltrane::Renderers
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
16
28
 
17
- Pry.start
29
+ load Gem.bin_path("wisper", "console")
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'gambiarra' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("gambiarra", "gambiarra")
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'old-coltrane' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("coltrane", "old-coltrane")
data/bin/setup CHANGED
@@ -1,8 +1,29 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
5
3
 
6
- bundle install
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'setup' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
7
10
 
8
- # Do any other automated setup that you need to do here
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("wisper", "setup")