fretboard 1.4.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
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: