gitara 0.5.0 → 0.6.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.
- data/.gitignore +2 -0
- data/.yardopts +5 -0
- data/CHANGELOG.markdown +5 -0
- data/README.markdown +135 -99
- data/examples/tab-with-repeats.ly +117 -0
- data/examples/tab-with-repeats.rb +19 -0
- data/gitara.gemspec +3 -0
- data/lib/gitara.rb +5 -3
- data/lib/gitara/dsl.rb +13 -0
- data/lib/gitara/node/alternative.rb +14 -0
- data/lib/gitara/node/bar.rb +3 -1
- data/lib/gitara/node/base.rb +22 -24
- data/lib/gitara/node/base/chorded_version.rb +1 -4
- data/lib/gitara/node/base/node_version.rb +35 -0
- data/lib/gitara/node/base/stanza_version.rb +1 -4
- data/lib/gitara/node/base/voiced_version.rb +5 -6
- data/lib/gitara/node/repeat.rb +10 -0
- data/lib/gitara/node/tab.rb +3 -5
- data/lib/gitara/utilities.rb +8 -0
- data/lib/gitara/version.rb +1 -1
- data/lib/gitara/voice.rb +2 -0
- data/spec/factories.rb +6 -0
- data/spec/lib/gitara/app_spec.rb +12 -28
- data/spec/lib/gitara/dsl_spec.rb +218 -173
- data/spec/lib/gitara/node/alternative_spec.rb +15 -0
- data/spec/lib/gitara/node/bar/chorded_version_spec.rb +2 -2
- data/spec/lib/gitara/node/bar/stanza_version_spec.rb +2 -2
- data/spec/lib/gitara/node/bar/voiced_version_spec.rb +2 -2
- data/spec/lib/gitara/node/bar_spec.rb +7 -7
- data/spec/lib/gitara/node/base/chorded_version_spec.rb +1 -1
- data/spec/lib/gitara/node/base/node_version_spec.rb +66 -0
- data/spec/lib/gitara/node/base/voiced_version_spec.rb +5 -5
- data/spec/lib/gitara/node/base_spec.rb +36 -42
- data/spec/lib/gitara/node/chord_set/chorded_version_spec.rb +2 -2
- data/spec/lib/gitara/node/chord_set_spec.rb +1 -1
- data/spec/lib/gitara/node/note_set_spec.rb +1 -1
- data/spec/lib/gitara/node/repeat_spec.rb +15 -0
- data/spec/lib/gitara/node/stanza_spec.rb +2 -2
- data/spec/lib/gitara/node/tab_spec.rb +6 -6
- data/spec/lib/gitara/voice_spec.rb +9 -9
- data/spec/lib/gitara_spec.rb +3 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/app_tester.rb +22 -0
- metadata +70 -29
- data/lib/gitara/is_node_version.rb +0 -23
- data/lib/gitara/pow/base.rb +0 -11
- data/spec/lib/gitara/is_node_version_spec.rb +0 -58
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
describe "heading_in_lilypond" do
|
3
|
+
describe Gitara::Node::Stanza do
|
4
|
+
describe "#heading_in_lilypond" do
|
5
5
|
it "should allow the stanza's name to be added as a heading to the lilypond template" do
|
6
6
|
stanza = FactoryGirl.build(:stanza, :name => "Verse 1", :children => [
|
7
7
|
FactoryGirl.build(:line, :children => [
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
describe "voices" do
|
5
|
-
it "should create a
|
3
|
+
describe Gitara::Node::Tab do
|
4
|
+
describe "#voices" do
|
5
|
+
it "should create a max_number_of_voices voices" do
|
6
6
|
tab = FactoryGirl.build(:tab, :children => [
|
7
7
|
FactoryGirl.build(:bar, :children => [
|
8
8
|
FactoryGirl.build(:note_set),
|
@@ -17,7 +17,7 @@ describe 'Tab' do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
describe "max_number_of_voices" do
|
20
|
+
describe "#max_number_of_voices" do
|
21
21
|
it "should be the max number of note_sets in a bar" do
|
22
22
|
tab = FactoryGirl.build(:tab, :children => [
|
23
23
|
FactoryGirl.build(:bar, :children => [
|
@@ -30,7 +30,7 @@ describe 'Tab' do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe "playable_child" do
|
33
|
+
describe "#playable_child" do
|
34
34
|
it "should be the last child of the tab" do
|
35
35
|
tab = FactoryGirl.build(:tab, :children => [
|
36
36
|
FactoryGirl.build(:bar, :name => 'Intro', :children => [
|
@@ -44,7 +44,7 @@ describe 'Tab' do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
describe "midi_instrument" do
|
47
|
+
describe "#midi_instrument" do
|
48
48
|
it "should have acoustic guitar (nylon) as default" do
|
49
49
|
tab = FactoryGirl.build(:tab)
|
50
50
|
tab.midi_instrument.should == 'acoustic guitar (nylon)'
|
@@ -1,37 +1,37 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Voice do
|
4
|
-
describe "call_name" do
|
3
|
+
describe Gitara::Voice do
|
4
|
+
describe "#call_name" do
|
5
5
|
it "should be the variable name of the node when called inside lilypond" do
|
6
6
|
voice = FactoryGirl.build(:voice, :id => 1)
|
7
7
|
voice.call_name.should == '\vOne'
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
describe "definition_name" do
|
11
|
+
describe "#definition_name" do
|
12
12
|
it "should be the name of the voice in a lilypond variable definition statement" do
|
13
13
|
voice = FactoryGirl.build(:voice, :id => 1)
|
14
14
|
voice.definition_name.should == "vOne"
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
describe "id_as_word" do
|
18
|
+
describe "#id_as_word" do
|
19
19
|
it "should convert the id to word" do
|
20
20
|
node = FactoryGirl.build(:voice, :id => 1)
|
21
21
|
node.id_as_word.should == "One"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
describe "stem_type" do
|
25
|
+
describe "#stem_type" do
|
26
26
|
it "should be the lilypond stem type for the voice" do
|
27
27
|
voice = FactoryGirl.build(:voice, :id => 1)
|
28
28
|
voice.stem_type.should == '\voiceOne'
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
describe "transposition" do
|
32
|
+
describe "#transposition" do
|
33
33
|
it "should be based on the tab's transposition and the voice's octave" do
|
34
|
-
tab = FactoryGirl.build(:tab,
|
34
|
+
tab = FactoryGirl.build(:tab,
|
35
35
|
:transposition => 'd',
|
36
36
|
:children => [
|
37
37
|
FactoryGirl.build(:bar, :children => [
|
@@ -50,7 +50,7 @@ describe Voice do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should be blank if the tab has no transposition" do
|
53
|
-
tab = FactoryGirl.build(:tab,
|
53
|
+
tab = FactoryGirl.build(:tab,
|
54
54
|
:children => [
|
55
55
|
FactoryGirl.build(:bar, :children => [
|
56
56
|
FactoryGirl.build(:note_set),
|
@@ -65,7 +65,7 @@ describe Voice do
|
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
describe "octave" do
|
68
|
+
describe "#octave" do
|
69
69
|
it "should be based on the voice's position in the tab" do
|
70
70
|
tab = FactoryGirl.build(:tab, :children => [
|
71
71
|
FactoryGirl.build(:bar, :children => [
|
data/spec/lib/gitara_spec.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Gitara do
|
4
|
-
describe "tab" do
|
4
|
+
describe ".tab" do
|
5
5
|
it "should create a tab instance if it does not exist" do
|
6
6
|
Gitara.tab.should be_nil
|
7
7
|
Gitara.define
|
8
8
|
Gitara.tab.should be_a(Node::Tab)
|
9
9
|
end
|
10
|
+
end
|
10
11
|
|
12
|
+
describe ".define" do
|
11
13
|
it "should instance evaluate a block if given" do
|
12
14
|
tab = Gitara.define do
|
13
15
|
bar "Intro" do
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
# @private
|
2
|
+
class AppTester < Valuable
|
3
|
+
has_value :name
|
4
|
+
|
5
|
+
def run
|
6
|
+
app = FactoryGirl.build(:app)
|
7
|
+
app.invoke :export, ["examples/#{name}.rb"], "target-directory" => test_tmp_dir.path, "run-lilypond" => false
|
8
|
+
(Pow("tmp") / "#{name}.ly").write actual if self.expected != self.actual
|
9
|
+
end
|
10
|
+
|
11
|
+
def expected
|
12
|
+
@expected ||= Utilities.read!(Pow("examples/#{name}.ly")).gsub(/\n\s+\n/, "\n")
|
13
|
+
rescue PowError => e
|
14
|
+
puts "#{e.message}. Copying actual result..."
|
15
|
+
Pow("examples/#{name}.ly").write actual
|
16
|
+
retry
|
17
|
+
end
|
18
|
+
|
19
|
+
def actual
|
20
|
+
@actual ||= Utilities.read!((test_tmp_dir / "#{name}.ly")).gsub(/\n\s+\n/, "\n")
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: active_support
|
16
|
-
requirement: &
|
16
|
+
requirement: &69443170 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *69443170
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: erubis
|
27
|
-
requirement: &
|
27
|
+
requirement: &69442290 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *69442290
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: linguistics
|
38
|
-
requirement: &
|
38
|
+
requirement: &69441980 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *69441980
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: pow
|
49
|
-
requirement: &
|
49
|
+
requirement: &69441550 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,21 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *69441550
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: redwood
|
60
|
+
requirement: &69441120 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *69441120
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: thor
|
60
|
-
requirement: &
|
71
|
+
requirement: &69440840 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :runtime
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *69440840
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: valuable
|
71
|
-
requirement: &
|
82
|
+
requirement: &69440430 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :runtime
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *69440430
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: factory_girl
|
82
|
-
requirement: &
|
93
|
+
requirement: &69440080 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *69440080
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: guard
|
93
|
-
requirement: &
|
104
|
+
requirement: &69439780 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *69439780
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: guard-rspec
|
104
|
-
requirement: &
|
115
|
+
requirement: &69439500 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *69439500
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: pry
|
115
|
-
requirement: &
|
126
|
+
requirement: &69439160 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *69439160
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: rb-inotify
|
126
|
-
requirement: &
|
137
|
+
requirement: &69438880 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,32 @@ dependencies:
|
|
131
142
|
version: '0'
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *69438880
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: rspec
|
137
|
-
requirement: &
|
148
|
+
requirement: &69438580 !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: *69438580
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: yard
|
159
|
+
requirement: &69438320 !ruby/object:Gem::Requirement
|
160
|
+
none: false
|
161
|
+
requirements:
|
162
|
+
- - ! '>='
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
type: :development
|
166
|
+
prerelease: false
|
167
|
+
version_requirements: *69438320
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: yard-rspec
|
170
|
+
requirement: &69438040 !ruby/object:Gem::Requirement
|
138
171
|
none: false
|
139
172
|
requirements:
|
140
173
|
- - ! '>='
|
@@ -142,7 +175,7 @@ dependencies:
|
|
142
175
|
version: '0'
|
143
176
|
type: :development
|
144
177
|
prerelease: false
|
145
|
-
version_requirements: *
|
178
|
+
version_requirements: *69438040
|
146
179
|
description: A Ruby DSL for generating Lilypond guitar tablatures.
|
147
180
|
email:
|
148
181
|
- gsmendoza@gmail.com
|
@@ -152,6 +185,7 @@ extensions: []
|
|
152
185
|
extra_rdoc_files: []
|
153
186
|
files:
|
154
187
|
- .gitignore
|
188
|
+
- .yardopts
|
155
189
|
- CHANGELOG.markdown
|
156
190
|
- Gemfile
|
157
191
|
- Guardfile
|
@@ -172,6 +206,8 @@ files:
|
|
172
206
|
- examples/tab-with-key-signature.rb
|
173
207
|
- examples/tab-with-partial.ly
|
174
208
|
- examples/tab-with-partial.rb
|
209
|
+
- examples/tab-with-repeats.ly
|
210
|
+
- examples/tab-with-repeats.rb
|
175
211
|
- examples/tab.ly
|
176
212
|
- examples/tab.rb
|
177
213
|
- gitara.gemspec
|
@@ -179,23 +215,24 @@ files:
|
|
179
215
|
- lib/gitara/app.rb
|
180
216
|
- lib/gitara/dsl.rb
|
181
217
|
- lib/gitara/dsl_macros.rb
|
182
|
-
- lib/gitara/
|
218
|
+
- lib/gitara/node/alternative.rb
|
183
219
|
- lib/gitara/node/bar.rb
|
184
220
|
- lib/gitara/node/bar/chorded_version.rb
|
185
221
|
- lib/gitara/node/bar/stanza_version.rb
|
186
222
|
- lib/gitara/node/bar/voiced_version.rb
|
187
223
|
- lib/gitara/node/base.rb
|
188
224
|
- lib/gitara/node/base/chorded_version.rb
|
225
|
+
- lib/gitara/node/base/node_version.rb
|
189
226
|
- lib/gitara/node/base/stanza_version.rb
|
190
227
|
- lib/gitara/node/base/voiced_version.rb
|
191
228
|
- lib/gitara/node/chord_set.rb
|
192
229
|
- lib/gitara/node/chord_set/chorded_version.rb
|
193
230
|
- lib/gitara/node/line.rb
|
194
231
|
- lib/gitara/node/note_set.rb
|
232
|
+
- lib/gitara/node/repeat.rb
|
195
233
|
- lib/gitara/node/score.rb
|
196
234
|
- lib/gitara/node/stanza.rb
|
197
235
|
- lib/gitara/node/tab.rb
|
198
|
-
- lib/gitara/pow/base.rb
|
199
236
|
- lib/gitara/template/bar.erb
|
200
237
|
- lib/gitara/template/chord_set.erb
|
201
238
|
- lib/gitara/template/line.erb
|
@@ -210,22 +247,25 @@ files:
|
|
210
247
|
- spec/factories.rb
|
211
248
|
- spec/lib/gitara/app_spec.rb
|
212
249
|
- spec/lib/gitara/dsl_spec.rb
|
213
|
-
- spec/lib/gitara/
|
250
|
+
- spec/lib/gitara/node/alternative_spec.rb
|
214
251
|
- spec/lib/gitara/node/bar/chorded_version_spec.rb
|
215
252
|
- spec/lib/gitara/node/bar/stanza_version_spec.rb
|
216
253
|
- spec/lib/gitara/node/bar/voiced_version_spec.rb
|
217
254
|
- spec/lib/gitara/node/bar_spec.rb
|
218
255
|
- spec/lib/gitara/node/base/chorded_version_spec.rb
|
256
|
+
- spec/lib/gitara/node/base/node_version_spec.rb
|
219
257
|
- spec/lib/gitara/node/base/voiced_version_spec.rb
|
220
258
|
- spec/lib/gitara/node/base_spec.rb
|
221
259
|
- spec/lib/gitara/node/chord_set/chorded_version_spec.rb
|
222
260
|
- spec/lib/gitara/node/chord_set_spec.rb
|
223
261
|
- spec/lib/gitara/node/note_set_spec.rb
|
262
|
+
- spec/lib/gitara/node/repeat_spec.rb
|
224
263
|
- spec/lib/gitara/node/stanza_spec.rb
|
225
264
|
- spec/lib/gitara/node/tab_spec.rb
|
226
265
|
- spec/lib/gitara/voice_spec.rb
|
227
266
|
- spec/lib/gitara_spec.rb
|
228
267
|
- spec/spec_helper.rb
|
268
|
+
- spec/support/app_tester.rb
|
229
269
|
homepage: ''
|
230
270
|
licenses: []
|
231
271
|
post_install_message:
|
@@ -251,3 +291,4 @@ signing_key:
|
|
251
291
|
specification_version: 3
|
252
292
|
summary: Ruby + Lilypond = pretty guitar tablatures.
|
253
293
|
test_files: []
|
294
|
+
has_rdoc:
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Gitara
|
2
|
-
module IsNodeVersion
|
3
|
-
def call_name
|
4
|
-
"\\#{definition_name}"
|
5
|
-
end
|
6
|
-
|
7
|
-
def children
|
8
|
-
node.children.map{|child| self.class.new(:node => child)}
|
9
|
-
end
|
10
|
-
|
11
|
-
def definition_name
|
12
|
-
"#{prefix}#{node.class.to_s.split('::').last}#{node.definition_name}"
|
13
|
-
end
|
14
|
-
|
15
|
-
def prefix
|
16
|
-
self.class.to_s.split('::').last[0].downcase
|
17
|
-
end
|
18
|
-
|
19
|
-
def value
|
20
|
-
children.map(&:call_name).join(' ')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|