timecode 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +0 -0
- data/README.txt +1 -1
- data/Rakefile +3 -2
- data/SPECS.txt +13 -4
- data/lib/timecode.rb +21 -1
- data/test/test_timecode.rb +23 -0
- metadata +18 -6
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
File without changes
|
data/README.txt
CHANGED
data/Rakefile
CHANGED
@@ -2,10 +2,11 @@ require 'rubygems'
|
|
2
2
|
require 'hoe'
|
3
3
|
require './lib/timecode.rb'
|
4
4
|
|
5
|
-
Hoe.
|
5
|
+
Hoe.spec('timecode') do |p|
|
6
|
+
p.version = Timecode::VERSION
|
6
7
|
p.developer('Julik', 'me@julik.nl')
|
7
8
|
p.extra_deps.reject! {|e| e[0] == 'hoe' }
|
8
|
-
p.extra_deps << 'test-spec'
|
9
|
+
p.extra_deps << ['test-spec', '>=0']
|
9
10
|
p.rubyforge_name = 'guerilla-di'
|
10
11
|
p.remote_rdoc_dir = 'timecode'
|
11
12
|
end
|
data/SPECS.txt
CHANGED
@@ -26,6 +26,7 @@
|
|
26
26
|
* report that the framerates are in delta
|
27
27
|
* validate equality based on delta
|
28
28
|
* report total as it's to_i
|
29
|
+
* coerce itself to int
|
29
30
|
* support hours
|
30
31
|
* support minutes
|
31
32
|
* support seconds
|
@@ -37,6 +38,9 @@
|
|
37
38
|
== A Timecode of zero should
|
38
39
|
* properly respond to zero?
|
39
40
|
|
41
|
+
== Timecode.from_seconds should
|
42
|
+
* properly process this specific case for a float framerate
|
43
|
+
|
40
44
|
== Timecode#to_seconds should
|
41
45
|
* return a float
|
42
46
|
* return the value in seconds
|
@@ -46,12 +50,17 @@
|
|
46
50
|
* properly present himself via inspect
|
47
51
|
* properly print itself
|
48
52
|
|
49
|
-
== An existing Timecode
|
50
|
-
* properly
|
51
|
-
*
|
53
|
+
== An existing Timecode compared by adjacency
|
54
|
+
* properly detect an adjacent timecode to the left
|
55
|
+
* properly detect an adjacent timecode to the right
|
52
56
|
|
53
57
|
== A Timecode on conversion should
|
54
58
|
* copy itself with a different framerate
|
59
|
+
* copy itself with a different framerate
|
60
|
+
|
61
|
+
== An existing Timecode used within ranges should
|
62
|
+
* properly provide successive value that is one frame up
|
63
|
+
* work as a range member
|
55
64
|
|
56
65
|
== A Timecode on calculations should
|
57
66
|
* support addition
|
@@ -100,4 +109,4 @@
|
|
100
109
|
* parse from a 4x4bits packed 32bit unsigned int
|
101
110
|
* properly convert itself back to 4x4 bits 32bit unsigned int
|
102
111
|
|
103
|
-
|
112
|
+
74 specifications (118 requirements), 0 failures
|
data/lib/timecode.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
# :mapping => [%w(source_tc_frames total), %w(tape_fps fps)]
|
13
13
|
|
14
14
|
class Timecode
|
15
|
-
VERSION = '0.2.
|
15
|
+
VERSION = '0.2.1'
|
16
16
|
|
17
17
|
include Comparable
|
18
18
|
|
@@ -170,6 +170,20 @@ class Timecode
|
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
|
+
def coerce(to)
|
174
|
+
me = case to
|
175
|
+
when String
|
176
|
+
to_s
|
177
|
+
when Integer
|
178
|
+
to_i
|
179
|
+
when Float
|
180
|
+
to_f
|
181
|
+
else
|
182
|
+
self
|
183
|
+
end
|
184
|
+
[me, to]
|
185
|
+
end
|
186
|
+
|
173
187
|
# is the timecode at 00:00:00:00
|
174
188
|
def zero?
|
175
189
|
@total.zero?
|
@@ -258,6 +272,12 @@ class Timecode
|
|
258
272
|
end
|
259
273
|
end
|
260
274
|
|
275
|
+
# Tells whether the passes timecode is immediately to the left or to the right of that one
|
276
|
+
# with a 1 frame difference
|
277
|
+
def adjacent_to?(another)
|
278
|
+
(self.succ == another) || (another.succ == self)
|
279
|
+
end
|
280
|
+
|
261
281
|
# Subtract a number of frames
|
262
282
|
def -(arg)
|
263
283
|
if (arg.is_a?(Timecode) && framerate_in_delta(arg.fps, @fps))
|
data/test/test_timecode.rb
CHANGED
@@ -106,6 +106,10 @@ context "An existing Timecode should" do
|
|
106
106
|
Timecode.new(10).to_i.should.equal(10)
|
107
107
|
end
|
108
108
|
|
109
|
+
specify "coerce itself to int" do
|
110
|
+
(10 + Timecode.new(2)).should.equal 12
|
111
|
+
end
|
112
|
+
|
109
113
|
specify "support hours" do
|
110
114
|
@five_seconds.should.respond_to :hours
|
111
115
|
@five_seconds.hours.should.equal 0
|
@@ -194,6 +198,25 @@ context "An existing Timecode on inspection should" do
|
|
194
198
|
end
|
195
199
|
end
|
196
200
|
|
201
|
+
context "An existing Timecode compared by adjacency" do
|
202
|
+
specify "properly detect an adjacent timecode to the left" do
|
203
|
+
Timecode.new(10).should.be.adjacent_to(Timecode.new(9))
|
204
|
+
end
|
205
|
+
|
206
|
+
specify "properly detect an adjacent timecode to the right" do
|
207
|
+
Timecode.new(10).should.be.adjacent_to(Timecode.new(11))
|
208
|
+
end
|
209
|
+
|
210
|
+
end
|
211
|
+
|
212
|
+
context "A Timecode on conversion should" do
|
213
|
+
specify "copy itself with a different framerate" do
|
214
|
+
tc = Timecode.new(40,25)
|
215
|
+
at24 = tc.convert(24)
|
216
|
+
at24.total.should.equal 40
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
197
220
|
context "An existing Timecode used within ranges should" do
|
198
221
|
specify "properly provide successive value that is one frame up" do
|
199
222
|
Timecode.new(10).succ.total.should.equal 11
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timecode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julik
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-05-11 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,6 +22,16 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: "0"
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rubyforge
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.0.4
|
34
|
+
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: hoe
|
27
37
|
type: :development
|
@@ -30,7 +40,7 @@ dependencies:
|
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
43
|
+
version: 2.6.0
|
34
44
|
version:
|
35
45
|
description: Value class for SMPTE timecode information
|
36
46
|
email:
|
@@ -53,7 +63,9 @@ files:
|
|
53
63
|
- lib/timecode.rb
|
54
64
|
- test/test_timecode.rb
|
55
65
|
has_rdoc: true
|
56
|
-
homepage: http://guerilla-di.
|
66
|
+
homepage: http://guerilla-di.org/timecode
|
67
|
+
licenses: []
|
68
|
+
|
57
69
|
post_install_message:
|
58
70
|
rdoc_options:
|
59
71
|
- --main
|
@@ -75,9 +87,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
87
|
requirements: []
|
76
88
|
|
77
89
|
rubyforge_project: guerilla-di
|
78
|
-
rubygems_version: 1.3.
|
90
|
+
rubygems_version: 1.3.5
|
79
91
|
signing_key:
|
80
|
-
specification_version:
|
92
|
+
specification_version: 3
|
81
93
|
summary: Value class for SMPTE timecode information
|
82
94
|
test_files:
|
83
95
|
- test/test_timecode.rb
|