gitara 0.7.0 → 0.8.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.
@@ -0,0 +1,37 @@
1
+ Gitara.define do
2
+ title "Walking After You"
3
+ composer "Foo Fighters"
4
+ arranger "Arranged by George Mendoza"
5
+ instrument "DADGBE (capo on second fret)"
6
+ midi_instrument "acoustic guitar (nylon)"
7
+
8
+ string_tunings "#guitar-drop-d-tuning"
9
+ tempo "4 = 100"
10
+ transposition "d"
11
+
12
+ score do
13
+ line :manual_break => false do
14
+ bar do
15
+ notes "<fs'/1>4. <d'/2>4 <a/3>4 <d'~/2>8 "
16
+ notes "<d,/6>4 <d/4>4 <d,/6>4 <d/4>4 "
17
+ end
18
+
19
+ bar do
20
+ notes "<d'/2>8 <a/3>4 <d'/2>4 <a/3>8 /skip 4 "
21
+ notes "<d,/6>4 <d/4>4 <d,/6>4 <d/4>4 "
22
+ end
23
+ end
24
+
25
+ line do
26
+ bar do
27
+ notes "/skip 4 r8 <d'/2 fs'/1 >4 <d'/2 fs'/1 >4 <d'~/2 fs'~/1 >8 "
28
+ notes "<d,/6>4 <d/4>4 r4 <d/4>4 "
29
+ end
30
+
31
+ bar do
32
+ notes "<d'/2 fs'/1 >8 <d'/2 fs'/1 >4 <d'/2>8 <d'/2>8 <e'/1>4. "
33
+ notes "r4 <d/4>4 r4 r4 "
34
+ end
35
+ end
36
+ end
37
+ end
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.add_runtime_dependency "active_support"
22
22
  s.add_runtime_dependency "erubis"
23
23
  s.add_runtime_dependency "linguistics"
24
+ s.add_runtime_dependency "loggability"
24
25
  s.add_runtime_dependency "pow"
25
26
  s.add_runtime_dependency "redwood"
26
27
  s.add_runtime_dependency "thor"
@@ -31,7 +31,12 @@ module Gitara
31
31
  names = options[:names].empty? ? [nil] : options[:names]
32
32
  node_class = options[:node_class]
33
33
 
34
- names.map{|name| node_class.new(:name => name) }.each do |child|
34
+ children = names.map{|name|
35
+ attributes = (options[:options] || {}).merge(:name => name)
36
+ node_class.new(attributes)
37
+ }
38
+
39
+ children.each do |child|
35
40
  add child, &block
36
41
  end
37
42
  end
@@ -49,7 +54,10 @@ module Gitara
49
54
  end
50
55
 
51
56
  def line(*names, &block)
52
- add_names :names => names, :node_class => Node::Line, &block
57
+ args = {}
58
+ args[:options] = names.pop if names.last.is_a?(Hash)
59
+ args.merge!(:names => names, :node_class => Node::Line)
60
+ add_names args, &block
53
61
  end
54
62
 
55
63
  def notes(value)
@@ -1,6 +1,7 @@
1
1
  module Gitara
2
2
  module Node
3
3
  class Line < Base
4
+ has_value :manual_break, :klass => :boolean, :default => true
4
5
  end
5
6
  end
6
7
  end
@@ -1,5 +1,5 @@
1
1
  <% self.voiced_as(self.root.voices).each do |voiced_line| %>
2
- <%= voiced_line.definition_name %> = { <%= voiced_line.value %> \break }
2
+ <%= voiced_line.definition_name %> = { <%= voiced_line.value %> <%= voiced_line.node.manual_break? ? '\break' : '' %> }
3
3
  <% end %>
4
4
  <%= self.chorded.definition_name %> = { <%= self.chorded.value %> }
5
5
  <%= self.stanza_version.definition_name %> = { <%= self.stanza_version.value %> }
@@ -1,3 +1,3 @@
1
1
  module Gitara
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
@@ -37,5 +37,11 @@ describe Gitara::App do
37
37
  app_test.run
38
38
  app_test.actual.should == app_test.expected
39
39
  end
40
+
41
+ it "can convert a tab with a line without a break to lilypond" do
42
+ app_test = AppTester.new(:name => 'tab-with-line-with-no-break')
43
+ app_test.run
44
+ app_test.actual.should == app_test.expected
45
+ end
40
46
  end
41
47
  end
@@ -109,6 +109,15 @@ describe Gitara::Dsl do
109
109
  line.children.should have(1).bar
110
110
  line.children[0].should == bar
111
111
  end
112
+
113
+ it "should allow breaking to be toggled" do
114
+ dsl = FactoryGirl.build(:dsl, :node => FactoryGirl.build(:tab, :children => []))
115
+ dsl.line :manual_break => false
116
+
117
+ dsl.node.children.should have(1).line
118
+ dsl.node.children[0].name.should == 'TabOneLineOne' # not manual_breaking=false
119
+ dsl.node.children[0].manual_break?.should be_false
120
+ end
112
121
  end
113
122
 
114
123
  describe "#add_names" do
@@ -135,6 +144,19 @@ describe Gitara::Dsl do
135
144
  dsl.node.children[0].attributes[:name].should be_nil
136
145
  dsl.node.children[0].should be_a(Node::Bar)
137
146
  end
147
+
148
+ it "should set o[:options] as attributes of the nodes" do
149
+ dsl = FactoryGirl.build(:dsl, :node => FactoryGirl.build(:tab, :children => []))
150
+ dsl.node.children.should be_empty
151
+
152
+ dsl.add_names :names => [:Intro, :Intro], :options => {:value => 1 }, :node_class => Node::Base
153
+
154
+ dsl.node.children.should have(2).nodes
155
+ dsl.node.children.each do |child|
156
+ child.name.should == :Intro
157
+ child.value.should == 1
158
+ end
159
+ end
138
160
  end
139
161
 
140
162
  describe "#score" do
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gitara::Node::Line do
4
+ describe "#manual_break?" do
5
+ it "should be true by default" do
6
+ described_class.new.manual_break?.should be_true
7
+ end
8
+
9
+ it "should be based on #manual_break field" do
10
+ line = described_class.new
11
+ line.manual_break = false
12
+ line.manual_break?.should be_false
13
+ end
14
+ end
15
+ end
16
+
metadata CHANGED
@@ -1,181 +1,272 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
5
4
  prerelease:
5
+ version: 0.8.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - George Mendoza
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-29 00:00:00.000000000 Z
12
+ date: 2013-01-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: active_support
16
- requirement: &72250440 !ruby/object:Gem::Requirement
15
+ type: :runtime
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
- type: :runtime
23
22
  prerelease: false
24
- version_requirements: *72250440
25
- - !ruby/object:Gem::Dependency
26
- name: erubis
27
- requirement: &72250160 !ruby/object:Gem::Requirement
23
+ version_requirements: !ruby/object:Gem::Requirement
28
24
  none: false
29
25
  requirements:
30
26
  - - ! '>='
31
27
  - !ruby/object:Gem::Version
32
28
  version: '0'
29
+ name: active_support
30
+ - !ruby/object:Gem::Dependency
33
31
  type: :runtime
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
34
38
  prerelease: false
35
- version_requirements: *72250160
36
- - !ruby/object:Gem::Dependency
37
- name: linguistics
38
- requirement: &72249910 !ruby/object:Gem::Requirement
39
+ version_requirements: !ruby/object:Gem::Requirement
39
40
  none: false
40
41
  requirements:
41
42
  - - ! '>='
42
43
  - !ruby/object:Gem::Version
43
44
  version: '0'
45
+ name: erubis
46
+ - !ruby/object:Gem::Dependency
44
47
  type: :runtime
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
45
54
  prerelease: false
46
- version_requirements: *72249910
47
- - !ruby/object:Gem::Dependency
48
- name: pow
49
- requirement: &72249630 !ruby/object:Gem::Requirement
55
+ version_requirements: !ruby/object:Gem::Requirement
50
56
  none: false
51
57
  requirements:
52
58
  - - ! '>='
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
61
+ name: linguistics
62
+ - !ruby/object:Gem::Dependency
55
63
  type: :runtime
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  prerelease: false
57
- version_requirements: *72249630
58
- - !ruby/object:Gem::Dependency
59
- name: redwood
60
- requirement: &72249330 !ruby/object:Gem::Requirement
71
+ version_requirements: !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
64
75
  - !ruby/object:Gem::Version
65
76
  version: '0'
77
+ name: loggability
78
+ - !ruby/object:Gem::Dependency
66
79
  type: :runtime
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
67
86
  prerelease: false
68
- version_requirements: *72249330
69
- - !ruby/object:Gem::Dependency
70
- name: thor
71
- requirement: &72249010 !ruby/object:Gem::Requirement
87
+ version_requirements: !ruby/object:Gem::Requirement
72
88
  none: false
73
89
  requirements:
74
90
  - - ! '>='
75
91
  - !ruby/object:Gem::Version
76
92
  version: '0'
93
+ name: pow
94
+ - !ruby/object:Gem::Dependency
77
95
  type: :runtime
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
78
102
  prerelease: false
79
- version_requirements: *72249010
80
- - !ruby/object:Gem::Dependency
81
- name: valuable
82
- requirement: &72248620 !ruby/object:Gem::Requirement
103
+ version_requirements: !ruby/object:Gem::Requirement
83
104
  none: false
84
105
  requirements:
85
106
  - - ! '>='
86
107
  - !ruby/object:Gem::Version
87
108
  version: '0'
109
+ name: redwood
110
+ - !ruby/object:Gem::Dependency
88
111
  type: :runtime
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
89
118
  prerelease: false
90
- version_requirements: *72248620
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ name: thor
91
126
  - !ruby/object:Gem::Dependency
92
- name: factory_girl
93
- requirement: &72248250 !ruby/object:Gem::Requirement
127
+ type: :runtime
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
97
132
  - !ruby/object:Gem::Version
98
133
  version: '0'
99
- type: :development
100
134
  prerelease: false
101
- version_requirements: *72248250
102
- - !ruby/object:Gem::Dependency
103
- name: guard
104
- requirement: &72248000 !ruby/object:Gem::Requirement
135
+ version_requirements: !ruby/object:Gem::Requirement
105
136
  none: false
106
137
  requirements:
107
138
  - - ! '>='
108
139
  - !ruby/object:Gem::Version
109
140
  version: '0'
141
+ name: valuable
142
+ - !ruby/object:Gem::Dependency
110
143
  type: :development
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
111
150
  prerelease: false
112
- version_requirements: *72248000
113
- - !ruby/object:Gem::Dependency
114
- name: guard-rspec
115
- requirement: &72247730 !ruby/object:Gem::Requirement
151
+ version_requirements: !ruby/object:Gem::Requirement
116
152
  none: false
117
153
  requirements:
118
154
  - - ! '>='
119
155
  - !ruby/object:Gem::Version
120
156
  version: '0'
157
+ name: factory_girl
158
+ - !ruby/object:Gem::Dependency
121
159
  type: :development
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
122
166
  prerelease: false
123
- version_requirements: *72247730
124
- - !ruby/object:Gem::Dependency
125
- name: pry
126
- requirement: &72247480 !ruby/object:Gem::Requirement
167
+ version_requirements: !ruby/object:Gem::Requirement
127
168
  none: false
128
169
  requirements:
129
170
  - - ! '>='
130
171
  - !ruby/object:Gem::Version
131
172
  version: '0'
173
+ name: guard
174
+ - !ruby/object:Gem::Dependency
132
175
  type: :development
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
133
182
  prerelease: false
134
- version_requirements: *72247480
135
- - !ruby/object:Gem::Dependency
136
- name: rb-inotify
137
- requirement: &72247170 !ruby/object:Gem::Requirement
183
+ version_requirements: !ruby/object:Gem::Requirement
138
184
  none: false
139
185
  requirements:
140
186
  - - ! '>='
141
187
  - !ruby/object:Gem::Version
142
188
  version: '0'
189
+ name: guard-rspec
190
+ - !ruby/object:Gem::Dependency
143
191
  type: :development
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
144
198
  prerelease: false
145
- version_requirements: *72247170
146
- - !ruby/object:Gem::Dependency
147
- name: rspec
148
- requirement: &72246840 !ruby/object:Gem::Requirement
199
+ version_requirements: !ruby/object:Gem::Requirement
149
200
  none: false
150
201
  requirements:
151
202
  - - ! '>='
152
203
  - !ruby/object:Gem::Version
153
204
  version: '0'
205
+ name: pry
206
+ - !ruby/object:Gem::Dependency
154
207
  type: :development
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
155
214
  prerelease: false
156
- version_requirements: *72246840
157
- - !ruby/object:Gem::Dependency
158
- name: yard
159
- requirement: &72246430 !ruby/object:Gem::Requirement
215
+ version_requirements: !ruby/object:Gem::Requirement
160
216
  none: false
161
217
  requirements:
162
218
  - - ! '>='
163
219
  - !ruby/object:Gem::Version
164
220
  version: '0'
221
+ name: rb-inotify
222
+ - !ruby/object:Gem::Dependency
165
223
  type: :development
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
166
230
  prerelease: false
167
- version_requirements: *72246430
231
+ version_requirements: !ruby/object:Gem::Requirement
232
+ none: false
233
+ requirements:
234
+ - - ! '>='
235
+ - !ruby/object:Gem::Version
236
+ version: '0'
237
+ name: rspec
168
238
  - !ruby/object:Gem::Dependency
169
- name: yard-rspec
170
- requirement: &72245950 !ruby/object:Gem::Requirement
239
+ type: :development
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
171
248
  none: false
172
249
  requirements:
173
250
  - - ! '>='
174
251
  - !ruby/object:Gem::Version
175
252
  version: '0'
253
+ name: yard
254
+ - !ruby/object:Gem::Dependency
176
255
  type: :development
256
+ requirement: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ! '>='
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
177
262
  prerelease: false
178
- version_requirements: *72245950
263
+ version_requirements: !ruby/object:Gem::Requirement
264
+ none: false
265
+ requirements:
266
+ - - ! '>='
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ name: yard-rspec
179
270
  description: A Ruby DSL for generating Lilypond guitar tablatures.
180
271
  email:
181
272
  - gsmendoza@gmail.com
@@ -200,10 +291,16 @@ files:
200
291
  - examples/eraserheads-huling-el-bimbo/tab.midi
201
292
  - examples/eraserheads-huling-el-bimbo/tab.pdf
202
293
  - examples/eraserheads-huling-el-bimbo/tab.rb
294
+ - examples/foo-fighters-walking-after-you/foo-fighters-walking-after-you.ly
295
+ - examples/foo-fighters-walking-after-you/foo-fighters-walking-after-you.midi
296
+ - examples/foo-fighters-walking-after-you/foo-fighters-walking-after-you.pdf
297
+ - examples/foo-fighters-walking-after-you/foo-fighters-walking-after-you.rb
203
298
  - examples/tab-with-alternate-tuning.ly
204
299
  - examples/tab-with-alternate-tuning.rb
205
300
  - examples/tab-with-key-signature.ly
206
301
  - examples/tab-with-key-signature.rb
302
+ - examples/tab-with-line-with-no-break.ly
303
+ - examples/tab-with-line-with-no-break.rb
207
304
  - examples/tab-with-partial.ly
208
305
  - examples/tab-with-partial.rb
209
306
  - examples/tab-with-repeats.ly
@@ -262,6 +359,7 @@ files:
262
359
  - spec/lib/gitara/node/base_spec.rb
263
360
  - spec/lib/gitara/node/chord_set/chorded_version_spec.rb
264
361
  - spec/lib/gitara/node/chord_set_spec.rb
362
+ - spec/lib/gitara/node/line_spec.rb
265
363
  - spec/lib/gitara/node/note_set_spec.rb
266
364
  - spec/lib/gitara/node/repeat_spec.rb
267
365
  - spec/lib/gitara/node/stanza_spec.rb
@@ -291,7 +389,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
389
  version: '0'
292
390
  requirements: []
293
391
  rubyforge_project: gitara
294
- rubygems_version: 1.8.6
392
+ rubygems_version: 1.8.24
295
393
  signing_key:
296
394
  specification_version: 3
297
395
  summary: Ruby + Lilypond = pretty guitar tablatures.