tc 0.0.1 → 0.0.2

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/lib/tc/duration.rb CHANGED
@@ -26,7 +26,7 @@ class Tc::Duration < Parslet::Parser
26
26
 
27
27
  # unit strings
28
28
  rule(:s_seconds) { ((space? >> stri('s') >> (stri('ec') >> stri('s').maybe).maybe >> (str('.') | stri('ond')).maybe >> stri('s').maybe) | str('"'))}
29
- rule(:s_minutes) { ((space? >> stri('m') >> stri('in').maybe >> (str('.') | (stri('ute') >> stri('s')).maybe).maybe) | str("'"))}
29
+ rule(:s_minutes) { ((space? >> stri('m') >> stri('in').maybe >> (str('.') | str('s') | (stri('ute') >> stri('s')).maybe).maybe) | str("'"))}
30
30
  rule(:s_hours) { (space? >> stri('h') >> ((stri('r') >> stri('s').maybe >> str('.').maybe) | (stri('our').maybe >> stri('s').maybe )).maybe) }
31
31
 
32
32
  # unit values
@@ -46,7 +46,9 @@ class Tc::Duration < Parslet::Parser
46
46
  rule(:min) { arbitrary_length_integer }
47
47
 
48
48
  # hours
49
- rule(:small_h) { str('0').maybe >> match('[0-2]') >> integer.absnt? }
49
+ rule(:zero_to_three) { match('[0-3]') >> integer.absnt?}
50
+ rule(:zero_zero_to_zero_three) { str('0') >> match('[0-3]') >> integer.absnt?}
51
+ rule(:small_h) { (zero_to_three | zero_zero_to_zero_three) }
50
52
 
51
53
  # unit matchers
52
54
  rule(:frames) { (ndf_separator | df_separator) >> (ff | frame).as(:frames) }
@@ -91,10 +93,10 @@ class Tc::Duration < Parslet::Parser
91
93
  rule(:timecode) { approximate | exact }
92
94
 
93
95
  # header tokens
94
- rule(:trt) { str('TRT').as(:trt) >> space? }
95
- rule(:colon_prefix) { str(':') }
96
+ rule(:trt) { str('TRT').as(:trt) >> space? >> timecode }
97
+ rule(:colon_prefix) { str(':') >> timecode }
96
98
 
97
- rule(:duration) { (trt | colon_prefix).maybe >> timecode }
99
+ rule(:duration) { trt | colon_prefix | timecode }
98
100
 
99
101
  root :duration
100
102
  end
data/lib/tc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tc
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -66,6 +66,10 @@ describe Tc::Duration do
66
66
  it "should consume 'minutes'" do
67
67
  parser.s_minutes.should parse(' minutes')
68
68
  end
69
+
70
+ it "should consume 'mins'" do
71
+ parser.s_minutes.should parse('mins')
72
+ end
69
73
  end
70
74
 
71
75
  context "m" do
@@ -98,6 +102,10 @@ describe Tc::Duration do
98
102
  parser.small_h.should parse('01')
99
103
  end
100
104
 
105
+ it "should consume '0'" do
106
+ parser.small_h.should parse('0')
107
+ end
108
+
101
109
  it "should consume '2'" do
102
110
  parser.small_h.should parse('2')
103
111
  end
@@ -111,6 +119,10 @@ describe Tc::Duration do
111
119
  it "should consume '01:09:26 s'" do
112
120
  parser.small_h_m_s.should parse('01:09:26 s')
113
121
  end
122
+
123
+ it "should consume '0:28:46'" do
124
+ parser.small_h_m_s.should parse('0:28:46')
125
+ end
114
126
 
115
127
  it "should not consume '275:00:00'" do
116
128
  parser.small_h_m_s.should_not parse('275:00:00')
@@ -119,6 +131,7 @@ describe Tc::Duration do
119
131
  it "should not consume '4:52:12'" do
120
132
  parser.small_h_m_s.should_not parse('4:52:12')
121
133
  end
134
+
122
135
  end
123
136
 
124
137
  context 's_hours' do
@@ -318,6 +331,15 @@ describe Tc::Duration do
318
331
  parsed[:seconds].should == '02.042'
319
332
  end
320
333
 
334
+ it "should parse '0:51:36'" do
335
+ parser.exact.should parse('0:51:36')
336
+ parsed = parser.exact.parse('0:51:36')
337
+
338
+ parsed[:hours].should == '0'
339
+ parsed[:minutes].should == '51'
340
+ parsed[:seconds].should == '36'
341
+ end
342
+
321
343
  it "should parse '0.26875'" do
322
344
  parser.exact.should parse('0.26875')
323
345
  parsed = parser.exact.parse('0.26875')
@@ -488,5 +510,9 @@ describe Tc::Duration do
488
510
  it "should consume ':00:26:30'" do
489
511
  parser.duration.should parse(':00:26:30')
490
512
  end
513
+
514
+ it "should consume ':00:03:30'" do
515
+ parser.duration.should parse(':00:03:30')
516
+ end
491
517
  end
492
518
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-10 00:00:00.000000000 -04:00
12
+ date: 2011-08-11 00:00:00.000000000 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parslet
17
- requirement: &2161225380 !ruby/object:Gem::Requirement
17
+ requirement: &2165631040 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2161225380
25
+ version_requirements: *2165631040
26
26
  description: Timecode parsing
27
27
  email:
28
28
  - chris_beer@wgbh.org