chord_diagrams 0.0.11 → 0.0.12
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 +4 -4
- data/Gemfile +1 -1
- data/Rakefile +9 -8
- data/chord_diagrams.gemspec +24 -23
- data/lib/chord_diagrams/fingerings.csv +1 -0
- data/lib/chord_diagrams/fingerings.rb +2 -2
- data/lib/chord_diagrams/version.rb +1 -1
- data/lib/chord_diagrams.rb +21 -23
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a16a88b747ac512e5fc309130f6cd953228ac284fe4ffdef1aba5022e31fd059
|
4
|
+
data.tar.gz: ab2db5f28c06082ae209bd575420d3f98c5cdca1167f7a6e4b1f7b0d4f4ecdeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c23e1acd4a41acd93365ebf96e96ca680ef13cb841e6a8ddf3df0398d7d4c65ff2ad14f491055fbc316815b53334b58f49200e9ad83312781aaf33418f112c7b
|
7
|
+
data.tar.gz: 28e712bd7a6ebdacbccaa6b85f5e7df6e0fb01ff1cc0b8bc693b6de073a0d779673c5b788fca390b787b6f9e862181fb96a8498907a65fed87b55c7c8ff0d5e4
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,29 +1,30 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
require "chord_diagrams"
|
4
|
+
require "standard/rake"
|
4
5
|
|
5
6
|
RSpec::Core::RakeTask.new(:spec)
|
6
7
|
|
7
|
-
task default: :spec
|
8
|
+
task default: [:spec, :standard]
|
8
9
|
|
9
10
|
task sheets: %i[guitar ukulele]
|
10
11
|
|
11
12
|
task :guitar do
|
12
|
-
html =
|
13
|
+
html = ""
|
13
14
|
|
14
15
|
ChordDiagrams::GUITAR_FINGERINGS.keys.each do |name|
|
15
16
|
html << ChordDiagrams.guitar_svg(name)
|
16
17
|
end
|
17
18
|
|
18
|
-
File.open(
|
19
|
+
File.open("guitar.html", "w") { |file| file.write(html) }
|
19
20
|
end
|
20
21
|
|
21
22
|
task :ukulele do
|
22
|
-
html =
|
23
|
+
html = ""
|
23
24
|
|
24
25
|
ChordDiagrams::UKULELE_FINGERINGS.keys.each do |name|
|
25
26
|
html << ChordDiagrams.ukulele_svg(name)
|
26
27
|
end
|
27
28
|
|
28
|
-
File.open(
|
29
|
+
File.open("ukulele.html", "w") { |file| file.write(html) }
|
29
30
|
end
|
data/chord_diagrams.gemspec
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
lib = File.expand_path(
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
3
|
+
require "chord_diagrams/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name
|
7
|
-
spec.version
|
8
|
-
spec.authors
|
9
|
-
spec.email
|
6
|
+
spec.name = "chord_diagrams"
|
7
|
+
spec.version = ChordDiagrams::VERSION
|
8
|
+
spec.authors = ["Brian Kelly"]
|
9
|
+
spec.email = ["bkelly@carbonfive.com"]
|
10
10
|
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
11
|
+
spec.summary = "Generate Chord Diagrams for Guitar and Ukulele"
|
12
|
+
spec.description = "Generate Chord Diagrams for Guitar and Ukulele"
|
13
|
+
spec.homepage = "https://github.com/spilth/chord_diagrams"
|
14
|
+
spec.license = "MIT"
|
15
15
|
|
16
16
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
17
17
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
18
18
|
if spec.respond_to?(:metadata)
|
19
|
-
spec.metadata[
|
19
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
20
|
|
21
|
-
spec.metadata[
|
22
|
-
spec.metadata[
|
21
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
22
|
+
spec.metadata["source_code_uri"] = "https://github.com/spilth/chord_diagrams"
|
23
23
|
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
24
24
|
else
|
25
|
-
raise
|
26
|
-
|
25
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
26
|
+
"public gem pushes."
|
27
27
|
end
|
28
28
|
|
29
29
|
# Specify which files should be added to the gem when it is released.
|
@@ -31,13 +31,14 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
32
32
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
33
33
|
end
|
34
|
-
spec.bindir
|
35
|
-
spec.executables
|
36
|
-
spec.require_paths = [
|
34
|
+
spec.bindir = "exe"
|
35
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
36
|
+
spec.require_paths = ["lib"]
|
37
37
|
|
38
|
-
spec.add_dependency
|
39
|
-
spec.add_development_dependency
|
40
|
-
spec.add_development_dependency
|
41
|
-
spec.add_development_dependency
|
42
|
-
spec.add_development_dependency
|
38
|
+
spec.add_dependency "victor", "0.3.2"
|
39
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
40
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
41
|
+
spec.add_development_dependency "rspec", "~> 3.8"
|
42
|
+
spec.add_development_dependency "nokogiri", "~> 1.11"
|
43
|
+
spec.add_development_dependency "standardrb"
|
43
44
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "csv"
|
2
2
|
|
3
3
|
module ChordDiagrams
|
4
4
|
guitar_fingerings = {}
|
5
5
|
ukulele_fingerings = {}
|
6
6
|
|
7
|
-
fingerings_file = File.join(
|
7
|
+
fingerings_file = File.join(__dir__, "fingerings.csv")
|
8
8
|
|
9
9
|
CSV.foreach(fingerings_file, headers: true) do |row|
|
10
10
|
guitar_fingerings[row[0]] = row[1] unless row[1].nil?
|
data/lib/chord_diagrams.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "chord_diagrams/version"
|
2
|
+
require "chord_diagrams/fingerings"
|
3
|
+
require "victor"
|
4
4
|
|
5
5
|
module ChordDiagrams
|
6
6
|
LINE_STYLE = {
|
@@ -10,8 +10,8 @@ module ChordDiagrams
|
|
10
10
|
}.freeze
|
11
11
|
|
12
12
|
class << self
|
13
|
-
def ukulele_svg(name,
|
14
|
-
svg = Victor::SVG.new template: :minimal, width: 80, height: 100, viewBox:
|
13
|
+
def ukulele_svg(name, fingering = nil)
|
14
|
+
svg = Victor::SVG.new template: :minimal, width: 80, height: 100, viewBox: "0 0 160 200"
|
15
15
|
|
16
16
|
ChordDiagrams.draw_ukulele_name(name, svg)
|
17
17
|
ChordDiagrams.draw_ukulele_frets(svg)
|
@@ -29,7 +29,7 @@ module ChordDiagrams
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def guitar_svg(name, fingering = nil)
|
32
|
-
svg = Victor::SVG.new template: :minimal, width: 100, height: 100, viewBox:
|
32
|
+
svg = Victor::SVG.new template: :minimal, width: 100, height: 100, viewBox: "0 0 200 200"
|
33
33
|
|
34
34
|
ChordDiagrams.draw_guitar_name(name, svg)
|
35
35
|
ChordDiagrams.draw_guitar_frets(svg)
|
@@ -47,14 +47,14 @@ module ChordDiagrams
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def draw_ukulele_name(name, svg)
|
50
|
-
svg.text name, id:
|
50
|
+
svg.text name, id: "chordName", x: 80, y: 40, text_anchor: :middle, style: {
|
51
51
|
font_size: 36,
|
52
52
|
font_weight: :bold
|
53
53
|
}
|
54
54
|
end
|
55
55
|
|
56
56
|
def draw_guitar_name(name, svg)
|
57
|
-
svg.text name, id:
|
57
|
+
svg.text name, id: "chordName", x: 100, y: 40, text_anchor: :middle, style: {
|
58
58
|
font_size: 36,
|
59
59
|
font_weight: :bold
|
60
60
|
}
|
@@ -87,7 +87,7 @@ module ChordDiagrams
|
|
87
87
|
def draw_guitar_missing_chord_diagram(name, svg)
|
88
88
|
puts "Could't find fingerings for the Guitar chord '#{name}'"
|
89
89
|
|
90
|
-
svg.text
|
90
|
+
svg.text "?", x: 102, y: 155, text_anchor: :middle, style: {
|
91
91
|
font_size: 96,
|
92
92
|
font_weight: :bold,
|
93
93
|
fill: :gray
|
@@ -95,9 +95,9 @@ module ChordDiagrams
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def draw_ukulele_missing_chord_diagram(name, svg)
|
98
|
-
puts "
|
98
|
+
puts "Couldn't find fingerings for the Ukulele chord '#{name}'"
|
99
99
|
|
100
|
-
svg.text
|
100
|
+
svg.text "?", x: 81, y: 155, text_anchor: :middle, style: {
|
101
101
|
font_size: 96,
|
102
102
|
font_weight: :bold,
|
103
103
|
fill: :gray
|
@@ -105,7 +105,7 @@ module ChordDiagrams
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def draw_chord_diagram(fingerings, svg)
|
108
|
-
fingerings = fingerings.
|
108
|
+
fingerings = fingerings.chars
|
109
109
|
|
110
110
|
lowest_fret = fingerings.reject { |fret| fret.to_i < 1 }.min
|
111
111
|
highest_fret = fingerings.reject { |fret| fret.to_i < 1 }.max
|
@@ -114,20 +114,18 @@ module ChordDiagrams
|
|
114
114
|
draw_fret_number(lowest_fret, svg)
|
115
115
|
|
116
116
|
fingerings = shift_guitar_fingerings(fingerings, lowest_fret)
|
117
|
+
elsif fingerings.size == 6
|
118
|
+
draw_guitar_nut(svg)
|
117
119
|
else
|
118
|
-
|
119
|
-
draw_guitar_nut(svg)
|
120
|
-
else
|
121
|
-
draw_ukulele_nut(svg)
|
122
|
-
end
|
120
|
+
draw_ukulele_nut(svg)
|
123
121
|
end
|
124
122
|
|
125
123
|
fingerings.each_with_index do |fingering, index|
|
126
124
|
offset = 50 + (20 * index)
|
127
125
|
|
128
|
-
if fingering ==
|
126
|
+
if fingering == "x"
|
129
127
|
draw_muted_string(offset, svg)
|
130
|
-
elsif fingering ==
|
128
|
+
elsif fingering == "0"
|
131
129
|
draw_open_string(offset, svg)
|
132
130
|
else
|
133
131
|
draw_fingered_string(fingering, offset, svg)
|
@@ -136,14 +134,14 @@ module ChordDiagrams
|
|
136
134
|
end
|
137
135
|
|
138
136
|
def draw_guitar_nut(svg)
|
139
|
-
svg.line id:
|
137
|
+
svg.line id: "nut", x1: 49, y1: 77, x2: 151, y2: 77, style: {
|
140
138
|
stroke: :black,
|
141
139
|
stroke_width: 8
|
142
140
|
}
|
143
141
|
end
|
144
142
|
|
145
143
|
def draw_ukulele_nut(svg)
|
146
|
-
svg.line id:
|
144
|
+
svg.line id: "nut", x1: 49, y1: 77, x2: 111, y2: 77, style: {
|
147
145
|
stroke: :black,
|
148
146
|
stroke_width: 8
|
149
147
|
}
|
@@ -169,12 +167,12 @@ module ChordDiagrams
|
|
169
167
|
private
|
170
168
|
|
171
169
|
def draw_fret_number(number, svg)
|
172
|
-
svg.text number, id:
|
170
|
+
svg.text number, id: "fretNumber", x: 37, y: 98, text_anchor: :end, style: {font_size: 24}
|
173
171
|
end
|
174
172
|
|
175
173
|
def shift_guitar_fingerings(fingerings, lowest_fret)
|
176
174
|
fingerings.map do |fingering|
|
177
|
-
if fingering !=
|
175
|
+
if fingering != "x" && fingering != "0"
|
178
176
|
fingering.to_i - lowest_fret.to_i + 1
|
179
177
|
else
|
180
178
|
fingering
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chord_diagrams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Kelly
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: victor
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.11'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: standardrb
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: Generate Chord Diagrams for Guitar and Ukulele
|
84
98
|
email:
|
85
99
|
- bkelly@carbonfive.com
|