hindbaer 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,27 +1,52 @@
1
1
  module Hindbaer
2
2
  class Track
3
3
 
4
- def initialize(fragment, session = nil)
5
- @doc = fragment
6
- @session = session
7
- end
8
-
9
- attr_reader :session
10
-
11
- def name
12
- @doc['Name']
13
- end
4
+ ATTRIBUTES = %w{
5
+ name pan
6
+ }
7
+
8
+ attr_accessor *ATTRIBUTES
9
+ attr_accessor :regions, :plugins
14
10
 
15
- def pan
16
- @doc['Pan']
11
+ def self.parse(doc)
12
+ new do
13
+ ATTRIBUTES.each do |attribute|
14
+ self.send("#{attribute.to_sym}=", doc[attribute.capitalize])
15
+ end
16
+
17
+ self.regions = doc.css('Region').map do |r|
18
+ Hindbaer::Region.parse(r)
19
+ end
20
+ self.plugins = doc.css('Plugin').map do |p|
21
+ Hindbaer::Plugin.parse(p)
22
+ end
23
+ end
17
24
  end
18
25
 
19
- def regions
20
- @doc.css('Region').map { |r| Hindbaer::Region.new(r.dup.unlink, self) }
26
+ def initialize(&block)
27
+ self.regions = []
28
+ self.plugins = []
29
+
30
+ block.arity > 0 ? block.call(self) : instance_eval(&block)
21
31
  end
22
32
 
23
- def plugins
24
- @doc.css('Plugin').map { |p| Hindbaer::Plugin.create(p.dup.unlink) }
33
+ def to_xml(xml)
34
+ xml.Track Name: name, Pan: pan do
35
+ regions.each do |region|
36
+ xml.Region Ref: region.ref, Name: region.name, Start: region.start, Length: region.length, Offset: region.offset, FadeIn: region.fade_in, FadeOut: region.fade_out, Gain: region.gain, Leq: region.leq do
37
+ region.fades.each do |fade|
38
+ fade.to_xml(xml)
39
+ end
40
+ end
41
+ end
42
+ unless plugins.empty?
43
+ xml.Plugins do
44
+ plugins.each do |plugin|
45
+ plugin.to_xml(xml)
46
+ end
47
+ end
48
+ end
49
+ end
25
50
  end
26
51
  end
27
52
  end
@@ -1,3 +1,3 @@
1
1
  module Hindbaer
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -3,8 +3,10 @@ require 'spec_helper'
3
3
  describe Hindbaer::AudioPool do
4
4
 
5
5
  before do
6
- session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @pool = session.audio_pool
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ @pool = session.audio_pool
9
+ end
8
10
  end
9
11
 
10
12
  it 'must return path to audio files' do
data/spec/clip_spec.rb CHANGED
@@ -3,14 +3,15 @@ require 'spec_helper'
3
3
  describe Hindbaer::Clip do
4
4
 
5
5
  before do
6
- @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @group = @session.clipboard_groups.first
8
- @clip = @group.clips.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ group = session.clipboard_groups.first
9
+ @clip = group.clips.first
10
+ end
9
11
  end
10
12
 
11
13
  it 'must return file reference' do
12
- @clip.reference.must_be_kind_of Hindbaer::File
13
- @clip.reference.id.must_equal 2
14
+ @clip.ref.must_equal '2'
14
15
  end
15
16
 
16
17
  it 'must return name' do
@@ -25,7 +26,4 @@ describe Hindbaer::Clip do
25
26
  @clip.leq.must_equal '-'
26
27
  end
27
28
 
28
- it 'must return parent group' do
29
- @clip.group.must_equal @group
30
- end
31
29
  end
data/spec/fade_spec.rb CHANGED
@@ -3,14 +3,16 @@ require 'spec_helper'
3
3
  describe Hindbaer::Fade do
4
4
 
5
5
  before do
6
- project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- track = project.tracks[2]
8
- region = track.regions.first
9
- @fade = region.fades.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ track = session.tracks[2]
9
+ region = track.regions.first
10
+ @fade = region.fades.first
11
+ end
10
12
  end
11
13
 
12
14
  it 'must return start time' do
13
- @fade.start_time.must_equal '06.426'
15
+ @fade.start.must_equal '06.426'
14
16
  end
15
17
 
16
18
  it 'must return length' do
data/spec/file_spec.rb CHANGED
@@ -3,12 +3,14 @@ require 'spec_helper'
3
3
  describe Hindbaer::File do
4
4
 
5
5
  before do
6
- project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @file = project.audio_pool.files.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ @file = session.audio_pool.files.first
9
+ end
8
10
  end
9
11
 
10
12
  it 'must return id' do
11
- @file.id.must_equal 1
13
+ @file.id.must_equal '1'
12
14
  end
13
15
 
14
16
  it 'must return name' do
@@ -20,15 +22,15 @@ describe Hindbaer::File do
20
22
  end
21
23
 
22
24
  it 'must return the number of channels' do
23
- @file.num_channels.must_equal 2
25
+ @file.channels.must_equal '2'
24
26
  end
25
27
 
26
28
  it 'must return leq' do
27
- @file.leq.must_equal -10.4
29
+ @file.leq.must_equal '-10.4'
28
30
  end
29
31
 
30
32
  it 'must return dynamics' do
31
- @file.dynamics.must_equal 0.0
33
+ @file.dyn.must_equal nil
32
34
  end
33
35
 
34
36
  it 'must return the original file path' do
File without changes
data/spec/group_spec.rb CHANGED
@@ -3,8 +3,10 @@ require 'spec_helper'
3
3
  describe Hindbaer::Group do
4
4
 
5
5
  before do
6
- @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @group = @session.clipboard_groups.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ @group = session.clipboard_groups.first
9
+ end
8
10
  end
9
11
 
10
12
  it 'must return caption' do
@@ -12,7 +14,7 @@ describe Hindbaer::Group do
12
14
  end
13
15
 
14
16
  it 'must return number of clips used' do
15
- @group.num_clips_used.must_equal 2
17
+ @group.used.must_equal '2'
16
18
  end
17
19
 
18
20
  it 'must return all clips' do
@@ -20,8 +22,4 @@ describe Hindbaer::Group do
20
22
  @group.clips.size.must_equal 2
21
23
  end
22
24
 
23
- it 'must return session' do
24
- @group.session.must_equal @session
25
- end
26
-
27
25
  end
data/spec/info_spec.rb CHANGED
@@ -3,8 +3,10 @@ require 'spec_helper'
3
3
  describe Hindbaer::Info do
4
4
 
5
5
  before do
6
- session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @info = session.info
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ @info = session.info
9
+ end
8
10
  end
9
11
 
10
12
  it 'must return title' do
@@ -36,7 +38,7 @@ describe Hindbaer::Info do
36
38
  end
37
39
 
38
40
  it 'must return album track' do
39
- @info.album_track.must_equal '1'
41
+ @info.track.must_equal '1'
40
42
  end
41
43
 
42
44
  it 'must return artist' do
@@ -60,7 +62,7 @@ describe Hindbaer::Info do
60
62
  end
61
63
 
62
64
  it 'must return whether explicit' do
63
- @info.explicit?.must_equal true
65
+ @info.explicit.must_equal 'Yes'
64
66
  end
65
67
 
66
68
  it 'must return identifier' do
data/spec/marker_spec.rb CHANGED
@@ -3,12 +3,14 @@ require 'spec_helper'
3
3
  describe Hindbaer::Marker do
4
4
 
5
5
  before do
6
- project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @marker = project.markers.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ @marker = session.markers.first
9
+ end
8
10
  end
9
11
 
10
12
  it 'must return id' do
11
- @marker.id.must_equal 1
13
+ @marker.id.must_equal '1'
12
14
  end
13
15
 
14
16
  it 'must return name' do
@@ -3,13 +3,15 @@ require 'spec_helper'
3
3
  describe Hindbaer::Plugin::Base do
4
4
 
5
5
  before do
6
- project = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- track = project.tracks.first
8
- @plugin = track.plugins.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ track = session.tracks.first
9
+ @plugin = track.plugins.first
10
+ end
9
11
  end
10
12
 
11
13
  it 'must return id' do
12
- @plugin.id.must_equal 0
14
+ @plugin.id.must_equal '0'
13
15
  end
14
16
 
15
17
  it 'must return name' do
data/spec/region_spec.rb CHANGED
@@ -3,14 +3,15 @@ require 'spec_helper'
3
3
  describe Hindbaer::Region do
4
4
 
5
5
  before do
6
- session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @track = session.tracks.first
8
- @region = @track.regions.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ track = session.tracks.first
9
+ @region = track.regions.first
10
+ end
9
11
  end
10
12
 
11
13
  it 'must return audio reference' do
12
- @region.reference.must_be_kind_of Hindbaer::File
13
- @region.reference.id.must_equal 1
14
+ @region.ref.must_equal '1'
14
15
  end
15
16
 
16
17
  it 'must return name' do
@@ -18,7 +19,7 @@ describe Hindbaer::Region do
18
19
  end
19
20
 
20
21
  it 'must return start time' do
21
- @region.start_time.must_equal '00.0'
22
+ @region.start.must_equal '00.0'
22
23
  end
23
24
 
24
25
  it 'must return length' do
@@ -38,19 +39,16 @@ describe Hindbaer::Region do
38
39
  end
39
40
 
40
41
  it 'must return gain' do
41
- @region.gain.must_equal -3.3
42
+ @region.gain.must_equal '-3.3'
42
43
  end
43
44
 
44
45
  it 'must return long-term equivalent level' do
45
- @region.leq.must_equal -16.4
46
+ @region.leq.must_equal '-16.4'
46
47
  end
47
48
 
48
49
  it 'must return all fades' do
49
50
  @region.fades.first.must_be_kind_of Hindbaer::Fade
50
51
  @region.fades.size.must_equal 1
51
52
  end
52
-
53
- it 'must return parent track' do
54
- @region.track.must_equal @track
55
- end
53
+
56
54
  end
data/spec/session_spec.rb CHANGED
@@ -3,15 +3,17 @@ require 'spec_helper'
3
3
  describe Hindbaer::Session do
4
4
 
5
5
  before do
6
- @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ @session = Hindbaer::Session.parse(f)
8
+ end
7
9
  end
8
10
 
9
11
  it 'must return software version' do
10
- @session.software_version.must_equal 'Hindenburg Journalist Pro 1.10.1742'
12
+ @session.version.must_equal 'Hindenburg Journalist Pro 1.10.1742'
11
13
  end
12
14
 
13
15
  it 'must return sample rate' do
14
- @session.sample_rate.must_equal '44100'
16
+ @session.samplerate.must_equal '44100'
15
17
  end
16
18
 
17
19
  it 'must return session info' do
@@ -42,10 +44,7 @@ describe Hindbaer::Session do
42
44
  end
43
45
 
44
46
  it 'must render itself as xml' do
45
- File.open('/Users/jamiehodge/Desktop/untitled.nhsx', 'w') do |file|
46
- file << @session.to_xml
47
- end
48
- @session.to_xml.must_equal File.open('spec/fixtures/project.nhsx').read
47
+ puts @session.to_xml
49
48
  end
50
49
 
51
50
  end
data/spec/track_spec.rb CHANGED
@@ -3,8 +3,10 @@ require 'spec_helper'
3
3
  describe Hindbaer::Track do
4
4
 
5
5
  before do
6
- @session = Hindbaer::Session.new('spec/fixtures/project.nhsx')
7
- @track = @session.tracks.first
6
+ File.open('spec/fixtures/session.nhsx') do |f|
7
+ session = Hindbaer::Session.parse(f)
8
+ @track = session.tracks.first
9
+ end
8
10
  end
9
11
 
10
12
  it 'must return name' do
@@ -24,8 +26,5 @@ describe Hindbaer::Track do
24
26
  @track.plugins.first.must_be_kind_of Hindbaer::Plugin::Base
25
27
  @track.plugins.size.must_equal 4
26
28
  end
27
-
28
- it 'must return parent session' do
29
- @track.session.must_equal @session
30
- end
29
+
31
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hindbaer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
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: 2011-08-26 00:00:00.000000000Z
12
+ date: 2011-08-29 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70144081230500 !ruby/object:Gem::Requirement
16
+ requirement: &70332400753160 !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: :development
23
23
  prerelease: false
24
- version_requirements: *70144081230500
24
+ version_requirements: *70332400753160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: guard
27
- requirement: &70144081230080 !ruby/object:Gem::Requirement
27
+ requirement: &70332400752540 !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: :development
34
34
  prerelease: false
35
- version_requirements: *70144081230080
35
+ version_requirements: *70332400752540
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: guard-minitest
38
- requirement: &70144081229620 !ruby/object:Gem::Requirement
38
+ requirement: &70332400752120 !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: :development
45
45
  prerelease: false
46
- version_requirements: *70144081229620
46
+ version_requirements: *70332400752120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rb-fsevent
49
- requirement: &70144081229180 !ruby/object:Gem::Requirement
49
+ requirement: &70332400751440 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70144081229180
57
+ version_requirements: *70332400751440
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: growl_notify
60
- requirement: &70144081228620 !ruby/object:Gem::Requirement
60
+ requirement: &70332400750740 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70144081228620
68
+ version_requirements: *70332400750740
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
- requirement: &70144081228000 !ruby/object:Gem::Requirement
71
+ requirement: &70332400749980 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70144081228000
79
+ version_requirements: *70332400749980
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: nokogiri
82
- requirement: &70144081227520 !ruby/object:Gem::Requirement
82
+ requirement: &70332400749220 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *70144081227520
90
+ version_requirements: *70332400749220
91
91
  description: A Hindenburg Journalist parser
92
92
  email:
93
93
  - jamiehodge@me.com
@@ -122,11 +122,11 @@ files:
122
122
  - spec/clip_spec.rb
123
123
  - spec/fade_spec.rb
124
124
  - spec/file_spec.rb
125
- - spec/fixtures/project.nhsx
125
+ - spec/fixtures/session.nhsx
126
126
  - spec/group_spec.rb
127
127
  - spec/info_spec.rb
128
128
  - spec/marker_spec.rb
129
- - spec/plugin_base_spec.rb
129
+ - spec/plugin/base_spec.rb
130
130
  - spec/region_spec.rb
131
131
  - spec/session_spec.rb
132
132
  - spec/spec_helper.rb
@@ -160,11 +160,11 @@ test_files:
160
160
  - spec/clip_spec.rb
161
161
  - spec/fade_spec.rb
162
162
  - spec/file_spec.rb
163
- - spec/fixtures/project.nhsx
163
+ - spec/fixtures/session.nhsx
164
164
  - spec/group_spec.rb
165
165
  - spec/info_spec.rb
166
166
  - spec/marker_spec.rb
167
- - spec/plugin_base_spec.rb
167
+ - spec/plugin/base_spec.rb
168
168
  - spec/region_spec.rb
169
169
  - spec/session_spec.rb
170
170
  - spec/spec_helper.rb