fretboard 1.4.3 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2aeb1806f3f22ec8707add870368e8485214f99090e6c19c219ae6771d96a9a
4
- data.tar.gz: 6cb78c994692eeb29d30f366a15020114608e2cf3c1f82170ca1fff17be8e630
3
+ metadata.gz: e986ef81e9af0a26b46ff706a6cd63cb4b9f9635eb61fe4a52c0b4e2056d2d63
4
+ data.tar.gz: 07b4ef762cc5b654cae33669c91a9f96c32e2b1bc1e068328600ff2eefa874c4
5
5
  SHA512:
6
- metadata.gz: c45b527d086a79808cd21a980ca863446c434825bfb194aaf5a6fd1c17e90d82e121175da5fb797b4e963af96aa4ca98a6395d0c9602db8230c603b777c3da6b
7
- data.tar.gz: 33762c5bea84f8609e430313e7791998ef0c7d430b8f70f1955d3b3ceb671e2bb37fb5d3ada4b32bc86820b6127951a9de58a478d0acc1abb97d709faac7eb4e
6
+ metadata.gz: c6fcfc957583acdc5208c9e1cb44d2ed4f1d3e0ea28399a55890388a772cca48cd6ef3a90ac27ff130e784de41cae9ab90a5b4085f6bce0b2c1346d25c18bf4f
7
+ data.tar.gz: dceda2b4fa1cc80172c4f5ee060cd8d849613b5fd7c9bd676152e5ebf01f56639bb4b7e44f00aa78bd0879bb327b111cb671e15cdbdc6493b8be6398242fe785
data/README.md CHANGED
@@ -15,12 +15,12 @@ gem 'fretboard'
15
15
  ### Creates a fretboard with the specified tuning
16
16
 
17
17
  ```ruby
18
- fretboard = Fretboard::Builder.new(:standart)
18
+ fretboard = Fretboard::Builder.new(:standard)
19
19
  # or
20
- fretboard = Fretboard::Builder.standart
20
+ fretboard = Fretboard::Builder.standard
21
21
  ```
22
22
 
23
- [Available tunings](#available-tunings)
23
+ [Supported guitar tunings](#supported-guitar-tunings)
24
24
 
25
25
  Creating the fretboard data:
26
26
 
@@ -55,17 +55,80 @@ fretboard.draw
55
55
 
56
56
  ### Using from the console
57
57
 
58
+ #### Drawing the fretboard
59
+
58
60
  ```
59
- bundle exec fretboard --draw-tuning standart
61
+ bundle exec fretboard --draw-tuning standard
60
62
  ```
61
63
 
62
- ## Available tunings
64
+ <details>
65
+ <summary>Result</summary>
66
+
67
+ ```
68
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69
+ | № | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
70
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71
+ | 1 | E | F | F#/Gb | G | G#/Ab | A | A#/Bb | B | C | C#/Db | D | D#/Eb | E |
72
+ | 2 | B | C | C#/Db | D | D#/Eb | E | F | F#/Gb | G | G#/Ab | A | A#/Bb | B |
73
+ | 3 | G | G#/Ab | A | A#/Bb | B | C | C#/Db | D | D#/Eb | E | F | F#/Gb | G |
74
+ | 4 | D | D#/Eb | E | F | F#/Gb | G | G#/Ab | A | A#/Bb | B | C | C#/Db | D |
75
+ | 5 | A | A#/Bb | B | C | C#/Db | D | D#/Eb | E | F | F#/Gb | G | G#/Ab | A |
76
+ | 6 | E | F | F#/Gb | G | G#/Ab | A | A#/Bb | B | C | C#/Db | D | D#/Eb | E |
77
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78
+ ```
79
+ </details>
80
+
81
+ #### Getting a list of supported guitar tunings.
82
+
83
+ ```
84
+ bundle exec fretboard --draw-tuning standard
85
+ ```
86
+
87
+ <details>
88
+ <summary>Result</summary>
89
+
90
+ ```
91
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
92
+ | Tuning | Notes |
93
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94
+ | STANDARD | E, B, G, D, A, E |
95
+ | TUNING_A | A, E, C, G, D, A |
96
+ | OPEN_A | E, A, E, C#/Db, A, E |
97
+ | DROP_A | B, F#/Gb, D, A, E, A |
98
+ | DROP_A_SHARP | C, G, D#/Eb, A#/Bb, F, A#/Bb |
99
+ | DROP_A_FLAT | A#/Bb, F, C#/Db, G#/Ab, D#/Eb, G#/Ab |
100
+ | TUNING_B | B, F#/Gb, D, A, E, B |
101
+ | OPEN_B | D#/Eb, B, F#/Gb, B, F#/Gb, B |
102
+ | DROP_B | C#/Db, G#/Ab, E, B, F#/Gb, B |
103
+ | DROP_B_FLAT | C, G, D#/Eb, A#/Bb, F, A#/Bb |
104
+ | TUNING_C | C, G, D#/Eb, A#/Bb, F, C |
105
+ | OPEN_C | E, C, G, C, G, C |
106
+ | DROP_C | D, A, F, C, G, C |
107
+ | TUNING_D | D, A, F, C, G, D |
108
+ | OPEN_D | D, A, F#/Gb, D, A, D |
109
+ | OPEN_D_MINOR | D, A, F, D, A, D |
110
+ | DROP_D | E, B, G, D, A, D |
111
+ | DOUBLE_DROP_D | D, B, G, D, A, D |
112
+ | MODAL_D | D, A, G, D, A, D |
113
+ | OPEN_E | E, B, G#/Ab, E, B, E |
114
+ | TUNING_F | F, C, G#/Ab, D#/Eb, A#/Bb, F |
115
+ | TUNING_G | G, D, A#/Bb, F, C, G |
116
+ | OPEN_F | F, C, F, C, A, F |
117
+ | OPEN_G | D, B, G, D, G, D |
118
+ | OPEN_G_MINOR | D, A#/Bb, G, D, G, D |
119
+ | DROP_G_SHARP | A#/Bb, F, C#/Db, G#/Ab, D#/Eb, G#/Ab |
120
+ | MODAL_G | D, C, G, D, G, D |
121
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122
+ ```
123
+ </details>
124
+
125
+ ## Supported guitar tunings
63
126
 
64
127
  <details>
65
- <summary>Standart (standart)</summary>
128
+ <summary>Standard (standard)</summary>
66
129
 
67
130
  ```
68
- bundle exec fretboard --draw-tuning standart
131
+ bundle exec fretboard --draw-tuning standard
69
132
  ```
70
133
 
71
134
  ```
data/RELEASE.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ```shell
2
2
  gem build fretboard.gemspec
3
3
 
4
- gem push fretboard-1.4.3.gem
4
+ gem push fretboard-1.5.0.gem
5
5
 
6
- gem push --key github --host https://rubygems.pkg.github.com/afuno fretboard-1.4.3.gem
6
+ gem push --key github --host https://rubygems.pkg.github.com/afuno fretboard-1.5.0.gem
7
7
  ```
data/bin/fretboard CHANGED
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- unless File.exist?('./Gemfile')
5
- abort 'Please run fretboard from the root of the project'
6
- end
4
+ abort 'Please run fretboard from the root of the project' unless File.exist?('./Gemfile')
7
5
 
8
6
  require 'rubygems'
9
7
 
data/fretboard.gemspec CHANGED
@@ -21,10 +21,12 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.executables = ['fretboard']
23
23
 
24
+ spec.metadata['rubygems_mfa_required'] = 'true'
25
+
24
26
  spec.required_ruby_version = '>= 3.1.0'
25
27
 
26
28
  spec.add_dependency 'activesupport', '~> 7.0.3'
27
29
  spec.add_dependency 'colorize', '~> 0.8.1'
28
- spec.add_dependency 'terminal-table', '~> 3.0.1'
29
- spec.add_development_dependency 'rubocop', '~> 1.29.1'
30
+ spec.add_dependency 'terminal-table', '~> 3.0.2'
31
+ spec.add_development_dependency 'rubocop', '~> 1.37.1'
30
32
  end
@@ -6,8 +6,8 @@ require 'fretboard/console'
6
6
 
7
7
  module Fretboard
8
8
  class Builder # rubocop:disable Style/Documentation, Metrics/ClassLength
9
- # fretboard = Fretboard::Builder.new(:standart)
10
- # fretboard = Fretboard::Builder.standart
9
+ # fretboard = Fretboard::Builder.new(:standard)
10
+ # fretboard = Fretboard::Builder.standard
11
11
  # fretboard = Fretboard::Builder.tuning_a
12
12
  # fretboard = Fretboard::Builder.open_a
13
13
  # fretboard = Fretboard::Builder.drop_a
@@ -42,7 +42,7 @@ module Fretboard
42
42
  DEFAULT_NUMBER_OF_FRETS = 12
43
43
 
44
44
  # METHODS_NAMES = %i[
45
- # standart
45
+ # standard
46
46
  # tuning_a
47
47
  # open_a
48
48
  # drop_a
@@ -79,8 +79,8 @@ module Fretboard
79
79
  # end
80
80
  # end
81
81
 
82
- def self.standart(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
83
- new(:standart, number_of_frets)
82
+ def self.standard(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
83
+ new(:standard, number_of_frets)
84
84
  end
85
85
 
86
86
  def self.tuning_a(number_of_frets = DEFAULT_NUMBER_OF_FRETS)
@@ -200,30 +200,30 @@ module Fretboard
200
200
  return
201
201
  end
202
202
 
203
- tuning = Fretboard::Tunings.get(@tuning)
203
+ tuning = Fretboard::Tunings.fetch(@tuning)
204
204
  strings = tuning[:STRINGS]
205
205
  number_of_strings = strings.size
206
206
 
207
207
  (1..number_of_strings).each do |string_number|
208
- puts
209
- puts "String: #{string_number}"
210
- puts
208
+ # puts
209
+ # puts "String: #{string_number}"
210
+ # puts
211
211
 
212
212
  current_note = strings[string_number][:NOTE]
213
213
 
214
214
  @data[string_number] = {}
215
215
 
216
- puts "Fret: 0 (#{current_note})"
216
+ # puts "Fret: 0 (#{current_note})"
217
217
 
218
218
  @data[string_number][0] = current_note
219
219
 
220
220
  (1..@number_of_frets).each do |fret|
221
221
  next_note = Fretboard::Note.next_for(
222
222
  current_note,
223
- sharp_or_flat: sharp_or_flat
223
+ sharp_or_flat:
224
224
  )
225
225
 
226
- puts "Fret: #{fret} (#{next_note})"
226
+ # puts "Fret: #{fret} (#{next_note})"
227
227
 
228
228
  @data[string_number][fret] = next_note
229
229
 
@@ -231,13 +231,13 @@ module Fretboard
231
231
  end
232
232
  end
233
233
 
234
- puts
235
- puts 'done'
234
+ # puts
235
+ # puts 'done'
236
236
  end
237
237
 
238
238
  def draw(sharp_or_flat: :both) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
239
239
  unless @data.any?
240
- Fretboard::Console.danger('Create the data')
240
+ Fretboard::Console.danger('Build the guitar fretboard data for drawing')
241
241
  return
242
242
  end
243
243
 
@@ -23,8 +23,8 @@ module Fretboard
23
23
 
24
24
  def self.print_table(headings, rows)
25
25
  table = Terminal::Table.new(
26
- headings: headings,
27
- rows: rows,
26
+ headings:,
27
+ rows:,
28
28
  style: { border_x: '~', border_i: '~' }
29
29
  )
30
30
 
@@ -42,11 +42,15 @@ module Fretboard
42
42
  exit
43
43
  end
44
44
 
45
- opts.on('--draw-tuning CODE', 'Build a guitar tuning') do |code|
45
+ opts.on('-d', '--draw-tuning CODE', 'Build a guitar tuning') do |code|
46
46
  fretboard = Fretboard::Builder.new(code.to_sym)
47
47
  fretboard.build
48
48
  fretboard.draw
49
49
  end
50
+
51
+ opts.on('-l', '--tunings-list', 'List of supported guitar tunings') do
52
+ Fretboard::Tunings.draw_list
53
+ end
50
54
  end
51
55
  end
52
56
  end
@@ -2,11 +2,11 @@
2
2
 
3
3
  module Fretboard
4
4
  class Tunings # rubocop:disable Style/Documentation, Metrics/ClassLength
5
- # Fretboard::Tunings.get(:standart)
6
- # Fretboard::Tunings.exists?(:standart)
5
+ # Fretboard::Tunings.fetch(:standard)
6
+ # Fretboard::Tunings.exists?(:standard)
7
7
 
8
8
  TUNINGS = {
9
- STANDART: {
9
+ STANDARD: {
10
10
  STRINGS: {
11
11
  1 => { NOTE: 'E' },
12
12
  2 => { NOTE: 'B' },
@@ -304,8 +304,42 @@ module Fretboard
304
304
  }
305
305
  }.freeze
306
306
 
307
- def self.get(tuning_name)
308
- new(tuning_name).get
307
+ private_constant :TUNINGS
308
+
309
+ def self.list
310
+ TUNINGS
311
+ end
312
+
313
+ def self.draw_list # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
314
+ headings = []
315
+ rows = []
316
+
317
+ headings << 'Tuning'
318
+ headings << 'Notes'
319
+
320
+ list.each do |tuning_code, tuning_data|
321
+ row = []
322
+
323
+ row << tuning_code
324
+
325
+ prepared_string_notes = tuning_data[:STRINGS].map do |_string_number, string_notes|
326
+ note = string_notes[:NOTE]
327
+
328
+ note.is_a?(Array) ? note.join('/') : note
329
+ end.join(', ')
330
+
331
+ row << prepared_string_notes
332
+
333
+ rows << row
334
+ end
335
+
336
+ Fretboard::Console.print_table(headings.uniq, rows)
337
+
338
+ nil
339
+ end
340
+
341
+ def self.fetch(tuning_name)
342
+ new(tuning_name).fetch
309
343
  end
310
344
 
311
345
  def self.exists?(tuning_name)
@@ -316,7 +350,7 @@ module Fretboard
316
350
  @tuning_name = tuning_name.upcase.to_sym
317
351
  end
318
352
 
319
- def get
353
+ def fetch
320
354
  TUNINGS[@tuning_name]
321
355
  end
322
356
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Fretboard
4
4
  MAJOR = 1
5
- MINOR = 4
6
- PATCH = 3
5
+ MINOR = 5
6
+ PATCH = 0
7
7
 
8
8
  VERSION = [
9
9
  MAJOR,
data/lib/fretboard.rb CHANGED
@@ -6,6 +6,6 @@ require 'fretboard/note'
6
6
  require 'fretboard/notes'
7
7
  require 'fretboard/tunings'
8
8
 
9
- module Fretboard
9
+ module Fretboard # rubocop:disable Style/Documentation
10
10
  # extend Constants
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fretboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sokolov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-20 00:00:00.000000000 Z
11
+ date: 2022-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.1
47
+ version: 3.0.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.0.1
54
+ version: 3.0.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.29.1
61
+ version: 1.37.1
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.29.1
68
+ version: 1.37.1
69
69
  description: Tools for working with the guitar fretboard
70
70
  email:
71
71
  - anton@sokolov.digital
@@ -91,7 +91,8 @@ files:
91
91
  homepage: https://github.com/afuno/fretboard
92
92
  licenses:
93
93
  - MIT
94
- metadata: {}
94
+ metadata:
95
+ rubygems_mfa_required: 'true'
95
96
  post_install_message:
96
97
  rdoc_options: []
97
98
  require_paths: