edl 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.DS_Store CHANGED
File without changes
@@ -1,3 +1,7 @@
1
+ === 0.1.1 / 2010-10-21
2
+
3
+ * Fix parsing of files with Windows linebreaks. In an ugly manner.
4
+
1
5
  === 0.0.8 / 2009-01-18
2
6
 
3
7
  * Switch Rubyforge project to guerilla-di
@@ -22,6 +22,7 @@ test/samples/SPEEDUP_AND_FADEOUT.EDL
22
22
  test/samples/SPEEDUP_REVERSE_AND_FADEOUT.EDL
23
23
  test/samples/SPLICEME.EDL
24
24
  test/samples/TIMEWARP.EDL
25
+ test/samples/PLATES.EDL
25
26
  test/samples/TIMEWARP_HALF.EDL
26
27
  test/samples/TRAILER_EDL.edl
27
28
  test/test_edl.rb
data/README.txt CHANGED
File without changes
data/Rakefile CHANGED
File without changes
data/SPECS.txt CHANGED
File without changes
File without changes
File without changes
data/lib/edl.rb CHANGED
@@ -9,7 +9,7 @@ require File.dirname(__FILE__) + '/edl/parser'
9
9
 
10
10
  # A simplistic EDL parser
11
11
  module EDL
12
- VERSION = "0.1.0"
12
+ VERSION = "0.1.1"
13
13
  DEFAULT_FPS = 25.0
14
14
 
15
15
  # Represents an EDL, is returned from the parser. Traditional operation is functional style, i.e.
File without changes
File without changes
File without changes
@@ -16,22 +16,25 @@ module EDL
16
16
  end
17
17
 
18
18
  # Parse a passed File or IO object line by line, or the whole string
19
- def parse(io_or_string)
20
- return parse(StringIO.new(io_or_string.to_s)) unless io_or_string.respond_to?(:eof?)
21
-
19
+ def parse(input_string_or_io)
20
+ return parse(input_string_or_io.read) if input_string_or_io.respond_to?(:read)
21
+
22
+ # TODO properly normalize line breaks in a stream interface
23
+ input_string_or_io.gsub!(/(\r\n|\r)/, "\n")
24
+ input_in_io = StringIO.new(input_string_or_io)
25
+
26
+ # Normalize line breaks
22
27
  stack, matchers = List.new, get_matchers
23
-
24
- at_line = 0
25
- until io_or_string.eof?
26
- at_line += 1
27
-
28
- current_line = io_or_string.gets.strip
28
+
29
+ until input_in_io.eof?
30
+
31
+ current_line = input_in_io.gets.strip
29
32
  m = matchers.find{|m| m.matches?(current_line) }
33
+
30
34
  next unless m
31
-
32
35
  begin
33
36
  m.apply(stack, current_line)
34
- stack[-1].line_number = at_line if m.is_a?(EventMatcher)
37
+ stack[-1].line_number = input_in_io.lineno if m.is_a?(EventMatcher)
35
38
  rescue Matcher::ApplyError => e
36
39
  STDERR.puts "Cannot parse #{current_line} - #{e}"
37
40
  end
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ TITLE: PLATES.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -18,6 +18,7 @@ AVID_REVERSE = File.dirname(__FILE__) + '/samples/REVERSE.EDL'
18
18
  SPEEDUP_AND_FADEOUT = File.dirname(__FILE__) + '/samples/SPEEDUP_AND_FADEOUT.EDL'
19
19
  SPEEDUP_REVERSE_AND_FADEOUT = File.dirname(__FILE__) + '/samples/SPEEDUP_REVERSE_AND_FADEOUT.EDL'
20
20
  FCP_REVERSE = File.dirname(__FILE__) + '/samples/FCP_REVERSE.EDL'
21
+ PLATES = File.dirname(__FILE__) + '/samples/PLATES.EDL'
21
22
 
22
23
  class String
23
24
  def tc(fps = Timecode::DEFAULT_FPS)
@@ -406,6 +407,7 @@ context "EventMatcher should" do
406
407
  '024 AX V C 00:00:00:00 00:00:01:00 01:00:28:19 01:00:29:19',
407
408
  '025 BL V C 00:00:00:00 00:00:00:00 01:00:29:19 01:00:29:19',
408
409
  '025 GEN V D 025 00:00:55:10 00:00:58:11 01:00:29:19 01:00:32:20',
410
+ '002 REDACTED V C 03:09:00:13 03:09:55:19 01:00:43:12 01:01:38:18',
409
411
  ]
410
412
 
411
413
  specify "produce an Event" do
@@ -603,6 +605,11 @@ context "A complex EDL passed via Parser should" do
603
605
  assert_nothing_raised { EDL::Parser.new.parse(File.open(FORTY_FIVER)) }
604
606
  end
605
607
 
608
+ specify "parse the plates EDL with many events" do
609
+ evts = EDL::Parser.new.parse(File.read(PLATES))
610
+ assert_equal 3, evts.length
611
+ end
612
+
606
613
  # TODO: this does not belong here
607
614
  specify "be properly rewritten from zero" do
608
615
  complex = EDL::Parser.new.parse(File.open(FORTY_FIVER))
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 1
10
+ version: 0.1.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Julik Tarkhanov
@@ -9,50 +15,88 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-09-21 00:00:00 +02:00
18
+ date: 2010-10-21 00:00:00 +02:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: test-spec
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
23
32
  version: "0"
24
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
25
35
  - !ruby/object:Gem::Dependency
26
36
  name: timecode
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
30
40
  requirements:
31
41
  - - ">="
32
42
  - !ruby/object:Gem::Version
43
+ hash: 9
44
+ segments:
45
+ - 0
46
+ - 1
47
+ - 9
33
48
  version: 0.1.9
34
- version:
49
+ type: :runtime
50
+ version_requirements: *id002
35
51
  - !ruby/object:Gem::Dependency
36
52
  name: flexmock
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
40
56
  requirements:
41
57
  - - ">="
42
58
  - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
43
62
  version: "0"
44
- version:
63
+ type: :runtime
64
+ version_requirements: *id003
45
65
  - !ruby/object:Gem::Dependency
46
- name: hoe
66
+ name: rubyforge
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 7
74
+ segments:
75
+ - 2
76
+ - 0
77
+ - 4
78
+ version: 2.0.4
47
79
  type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: hoe
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
50
86
  requirements:
51
87
  - - ">="
52
88
  - !ruby/object:Gem::Version
53
- version: 2.3.3
54
- version:
55
- description: Work with EDL files from Ruby http://en.wikipedia.org/wiki/Edit_decision_list
89
+ hash: 21
90
+ segments:
91
+ - 2
92
+ - 6
93
+ - 1
94
+ version: 2.6.1
95
+ type: :development
96
+ version_requirements: *id005
97
+ description: |-
98
+ Work with EDL files from Ruby
99
+ http://en.wikipedia.org/wiki/Edit_decision_list
56
100
  email:
57
101
  - me@julik.nl
58
102
  executables: []
@@ -89,11 +133,14 @@ files:
89
133
  - test/samples/SPEEDUP_REVERSE_AND_FADEOUT.EDL
90
134
  - test/samples/SPLICEME.EDL
91
135
  - test/samples/TIMEWARP.EDL
136
+ - test/samples/PLATES.EDL
92
137
  - test/samples/TIMEWARP_HALF.EDL
93
138
  - test/samples/TRAILER_EDL.edl
94
139
  - test/test_edl.rb
95
140
  has_rdoc: true
96
141
  homepage:
142
+ licenses: []
143
+
97
144
  post_install_message:
98
145
  rdoc_options:
99
146
  - --main
@@ -101,23 +148,29 @@ rdoc_options:
101
148
  require_paths:
102
149
  - lib
103
150
  required_ruby_version: !ruby/object:Gem::Requirement
151
+ none: false
104
152
  requirements:
105
153
  - - ">="
106
154
  - !ruby/object:Gem::Version
155
+ hash: 3
156
+ segments:
157
+ - 0
107
158
  version: "0"
108
- version:
109
159
  required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
110
161
  requirements:
111
162
  - - ">="
112
163
  - !ruby/object:Gem::Version
164
+ hash: 3
165
+ segments:
166
+ - 0
113
167
  version: "0"
114
- version:
115
168
  requirements: []
116
169
 
117
170
  rubyforge_project: guerilla-di
118
- rubygems_version: 1.3.1
171
+ rubygems_version: 1.3.7
119
172
  signing_key:
120
- specification_version: 2
173
+ specification_version: 3
121
174
  summary: Work with EDL files from Ruby http://en.wikipedia.org/wiki/Edit_decision_list
122
175
  test_files:
123
176
  - test/test_edl.rb