tracksperanto 3.2.1 → 3.2.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/Gemfile CHANGED
@@ -1,18 +1,27 @@
1
1
  # -*- ruby -*-
2
2
  source :rubygems
3
3
 
4
- gem "tickly", "~> 0.0.4"
5
- gem "obuf", "~> 1.1.0"
4
+ # gem "bychar", "~> 1.1" - controlled by Tickly
5
+ gem "obuf", "~> 1.1"
6
+ gem "tickly", "~> 0.0.8"
6
7
  gem "progressive_io", "~> 1.0"
7
8
  gem "flame_channel_parser", "~> 4.0"
8
9
  gem "progressbar", "0.10.0"
9
10
  gem "update_hints", "~> 1.0"
10
11
 
12
+
11
13
  group :development do
12
14
  gem "approximately"
13
15
  gem "jeweler"
14
16
  gem "rake"
15
- gem "flexmock", "~>0.8"
17
+
18
+ if RUBY_VERSION > "1.8"
19
+ gem "flexmock", "~> 1.3"
20
+ else
21
+ gem "flexmock", "~> 0.8"
22
+ end
23
+
16
24
  gem "cli_test", "~>1.0"
17
25
  gem "rake-hooks"
26
+ gem "ruby-prof"
18
27
  end
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 3.2.2
2
+
3
+ * Bump a whole array of dependencies to speed up and simplify Nuke and Shake parsers
4
+
1
5
  === 3.2.1
2
6
 
3
7
  * Improve Nuke 7 import support with the new version of Tickly
@@ -16,21 +16,11 @@ class Tracksperanto::Import::NukeScript < Tracksperanto::Import::Base
16
16
  'The only supported nodes that we can extract tracks from are Reconcile3D, PlanarTracker and Tracker (supported Nuke versions are 5, 6 and 7)'
17
17
  end
18
18
 
19
- class Tickly::Parser
20
- end
21
-
22
- class Levaluator < Tickly::Evaluator
23
- def evaluate(expr)
24
- s = super
25
- yield(s) if s
26
- end
27
- end
28
-
29
19
  def each
30
20
  parser = Tickly::NodeExtractor.new("Tracker3", "Tracker4", "PlanarTracker1_0", "Reconcile3D")
31
21
  script_tree = Tickly::Parser.new.parse(@io)
32
22
 
33
- evaluator = Levaluator.new
23
+ evaluator = Tickly::Evaluator.new
34
24
  evaluator.add_node_handler_class(Tracker3)
35
25
  evaluator.add_node_handler_class(Reconcile3D)
36
26
  evaluator.add_node_handler_class(PlanarTracker1_0)
@@ -1,4 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
+ require 'bychar'
3
+
2
4
  module Tracksperanto::ShakeGrammar
3
5
  class WrongInputError < RuntimeError; end
4
6
 
@@ -25,9 +27,16 @@ module Tracksperanto::ShakeGrammar
25
27
  # that will cache in chunks, and then read from there byte by byte. This yields a substantial speedup (4.9 seconds for the test
26
28
  # as opposed to 7.9 without this). We do check for the proper class only once so that when we use nested lexers
27
29
  # we only wrap the passed IO once, and only if necessary.
28
- with_io = Tracksperanto::BufferingReader.new(with_io) unless with_io.respond_to?(:read_one_byte)
30
+ with_io = Bychar::Reader.new(with_io) unless with_io.respond_to?(:read_one_byte)
29
31
  @io, @stack, @buf, @sentinel, @limit_to_one_stmt, @stack_depth = with_io, [], '', sentinel, limit_to_one_stmt, stack_depth
30
- catch(STOP_TOKEN) { parse until @io.data_exhausted? }
32
+
33
+ catch(STOP_TOKEN) do
34
+ begin
35
+ loop { parse }
36
+ rescue Bychar::EOFError
37
+ end
38
+ end
39
+
31
40
  @in_comment ? consume_comment! : consume_atom!
32
41
  end
33
42
 
@@ -44,7 +53,7 @@ module Tracksperanto::ShakeGrammar
44
53
 
45
54
  def parse
46
55
 
47
- c = @io.read_one_byte
56
+ c = @io.read_one_byte!
48
57
 
49
58
  if @buf.length > MAX_BUFFER_SIZE # Wrong format and the buffer is filled up, bail
50
59
  raise WrongInputError, "Atom buffer overflow at #{MAX_BUFFER_SIZE} bytes, this is definitely not a Shake script"
data/lib/tracksperanto.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  module Tracksperanto
5
5
  PATH = File.expand_path(File.dirname(__FILE__))
6
- VERSION = '3.2.1'
6
+ VERSION = '3.2.2'
7
7
 
8
8
  module Import; end
9
9
  module Export; end
@@ -100,7 +100,6 @@ end
100
100
  buffer_io
101
101
  simple_export
102
102
  uv_coordinates
103
- buffering_reader
104
103
  parameters
105
104
  yield_non_empty
106
105
  pf_coords
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tracksperanto"
8
- s.version = "3.2.1"
8
+ s.version = "3.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Julik Tarkhanov"]
12
- s.date = "2013-03-14"
12
+ s.date = "2013-03-16"
13
13
  s.description = "Converts 2D track exports between different apps like Flame, MatchMover, PFTrack..."
14
14
  s.email = "me@julik.nl"
15
15
  s.executables = ["tracksperanto"]
@@ -84,7 +84,6 @@ Gem::Specification.new do |s|
84
84
  "lib/tracksperanto.rb",
85
85
  "lib/tracksperanto/block_init.rb",
86
86
  "lib/tracksperanto/buffer_io.rb",
87
- "lib/tracksperanto/buffering_reader.rb",
88
87
  "lib/tracksperanto/casts.rb",
89
88
  "lib/tracksperanto/const_name.rb",
90
89
  "lib/tracksperanto/ext_io.rb",
@@ -168,7 +167,6 @@ Gem::Specification.new do |s|
168
167
  "test/subpixel/subpixel_grid.tif",
169
168
  "test/subpixel/sy_subpix_2dpaths.txt",
170
169
  "test/test_buffer_io.rb",
171
- "test/test_bufferingreader.rb",
172
170
  "test/test_casts.rb",
173
171
  "test/test_cli.rb",
174
172
  "test/test_const_name.rb",
@@ -212,8 +210,8 @@ Gem::Specification.new do |s|
212
210
  s.specification_version = 3
213
211
 
214
212
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
215
- s.add_runtime_dependency(%q<tickly>, ["~> 0.0.4"])
216
- s.add_runtime_dependency(%q<obuf>, ["~> 1.1.0"])
213
+ s.add_runtime_dependency(%q<obuf>, ["~> 1.1"])
214
+ s.add_runtime_dependency(%q<tickly>, ["~> 0.0.8"])
217
215
  s.add_runtime_dependency(%q<progressive_io>, ["~> 1.0"])
218
216
  s.add_runtime_dependency(%q<flame_channel_parser>, ["~> 4.0"])
219
217
  s.add_runtime_dependency(%q<progressbar>, ["= 0.10.0"])
@@ -221,12 +219,13 @@ Gem::Specification.new do |s|
221
219
  s.add_development_dependency(%q<approximately>, [">= 0"])
222
220
  s.add_development_dependency(%q<jeweler>, [">= 0"])
223
221
  s.add_development_dependency(%q<rake>, [">= 0"])
224
- s.add_development_dependency(%q<flexmock>, ["~> 0.8"])
222
+ s.add_development_dependency(%q<flexmock>, ["~> 1.3"])
225
223
  s.add_development_dependency(%q<cli_test>, ["~> 1.0"])
226
224
  s.add_development_dependency(%q<rake-hooks>, [">= 0"])
225
+ s.add_development_dependency(%q<ruby-prof>, [">= 0"])
227
226
  else
228
- s.add_dependency(%q<tickly>, ["~> 0.0.4"])
229
- s.add_dependency(%q<obuf>, ["~> 1.1.0"])
227
+ s.add_dependency(%q<obuf>, ["~> 1.1"])
228
+ s.add_dependency(%q<tickly>, ["~> 0.0.8"])
230
229
  s.add_dependency(%q<progressive_io>, ["~> 1.0"])
231
230
  s.add_dependency(%q<flame_channel_parser>, ["~> 4.0"])
232
231
  s.add_dependency(%q<progressbar>, ["= 0.10.0"])
@@ -234,13 +233,14 @@ Gem::Specification.new do |s|
234
233
  s.add_dependency(%q<approximately>, [">= 0"])
235
234
  s.add_dependency(%q<jeweler>, [">= 0"])
236
235
  s.add_dependency(%q<rake>, [">= 0"])
237
- s.add_dependency(%q<flexmock>, ["~> 0.8"])
236
+ s.add_dependency(%q<flexmock>, ["~> 1.3"])
238
237
  s.add_dependency(%q<cli_test>, ["~> 1.0"])
239
238
  s.add_dependency(%q<rake-hooks>, [">= 0"])
239
+ s.add_dependency(%q<ruby-prof>, [">= 0"])
240
240
  end
241
241
  else
242
- s.add_dependency(%q<tickly>, ["~> 0.0.4"])
243
- s.add_dependency(%q<obuf>, ["~> 1.1.0"])
242
+ s.add_dependency(%q<obuf>, ["~> 1.1"])
243
+ s.add_dependency(%q<tickly>, ["~> 0.0.8"])
244
244
  s.add_dependency(%q<progressive_io>, ["~> 1.0"])
245
245
  s.add_dependency(%q<flame_channel_parser>, ["~> 4.0"])
246
246
  s.add_dependency(%q<progressbar>, ["= 0.10.0"])
@@ -248,9 +248,10 @@ Gem::Specification.new do |s|
248
248
  s.add_dependency(%q<approximately>, [">= 0"])
249
249
  s.add_dependency(%q<jeweler>, [">= 0"])
250
250
  s.add_dependency(%q<rake>, [">= 0"])
251
- s.add_dependency(%q<flexmock>, ["~> 0.8"])
251
+ s.add_dependency(%q<flexmock>, ["~> 1.3"])
252
252
  s.add_dependency(%q<cli_test>, ["~> 1.0"])
253
253
  s.add_dependency(%q<rake-hooks>, [">= 0"])
254
+ s.add_dependency(%q<ruby-prof>, [">= 0"])
254
255
  end
255
256
  end
256
257
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tracksperanto
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,16 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-14 00:00:00.000000000 Z
12
+ date: 2013-03-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: tickly
15
+ name: obuf
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.0.4
21
+ version: '1.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,15 +26,15 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.0.4
29
+ version: '1.1'
30
30
  - !ruby/object:Gem::Dependency
31
- name: obuf
31
+ name: tickly
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 1.1.0
37
+ version: 0.0.8
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 1.1.0
45
+ version: 0.0.8
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: progressive_io
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -162,7 +162,7 @@ dependencies:
162
162
  requirements:
163
163
  - - ~>
164
164
  - !ruby/object:Gem::Version
165
- version: '0.8'
165
+ version: '1.3'
166
166
  type: :development
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,7 +170,7 @@ dependencies:
170
170
  requirements:
171
171
  - - ~>
172
172
  - !ruby/object:Gem::Version
173
- version: '0.8'
173
+ version: '1.3'
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: cli_test
176
176
  requirement: !ruby/object:Gem::Requirement
@@ -203,6 +203,22 @@ dependencies:
203
203
  - - ! '>='
204
204
  - !ruby/object:Gem::Version
205
205
  version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: ruby-prof
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
206
222
  description: Converts 2D track exports between different apps like Flame, MatchMover,
207
223
  PFTrack...
208
224
  email: me@julik.nl
@@ -279,7 +295,6 @@ files:
279
295
  - lib/tracksperanto.rb
280
296
  - lib/tracksperanto/block_init.rb
281
297
  - lib/tracksperanto/buffer_io.rb
282
- - lib/tracksperanto/buffering_reader.rb
283
298
  - lib/tracksperanto/casts.rb
284
299
  - lib/tracksperanto/const_name.rb
285
300
  - lib/tracksperanto/ext_io.rb
@@ -363,7 +378,6 @@ files:
363
378
  - test/subpixel/subpixel_grid.tif
364
379
  - test/subpixel/sy_subpix_2dpaths.txt
365
380
  - test/test_buffer_io.rb
366
- - test/test_bufferingreader.rb
367
381
  - test/test_casts.rb
368
382
  - test/test_cli.rb
369
383
  - test/test_const_name.rb
@@ -411,7 +425,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
411
425
  version: '0'
412
426
  segments:
413
427
  - 0
414
- hash: -1926493712064861893
428
+ hash: 419869014882253399
415
429
  required_rubygems_version: !ruby/object:Gem::Requirement
416
430
  none: false
417
431
  requirements:
@@ -1,40 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- # Shake uses this reader to parse byte by byte without having to read byte by byte.
3
- # Reading byte by byte is very inefficient, but we want to parse byte by byte since
4
- # this makes parser construction much easier. So what we do is cache some chunk of the
5
- # passed buffer and read from that. Once exhausted there will be some caching again,
6
- # and ad infinitum until the passed buffer is exhausted
7
- class Tracksperanto::BufferingReader
8
-
9
- DEFAULT_BUFFER_SIZE = 64 * 1024
10
-
11
- def initialize(with_io, buffer_size = DEFAULT_BUFFER_SIZE)
12
- @io = with_io
13
- @bufsize = buffer_size
14
- @buf = StringIO.new
15
- end
16
-
17
- # Will transparently read one byte off the contained IO, maintaining the internal cache.
18
- # If the cache has been depleted it will read a big chunk from the IO and cache it and then
19
- # return the byte
20
- def read_one_byte
21
- cache if @buf.pos == @buf.size
22
-
23
- return nil if @buf.size.zero?
24
- return @buf.read(1)
25
- end
26
-
27
- # Tells whether all the data has been both read from the passed buffer
28
- # and from the internal cache buffer (checks whether there is anything that
29
- # can be retreived using read_one_byte)
30
- def data_exhausted?
31
- @buf.eof? && @io.eof?
32
- end
33
-
34
- private
35
-
36
- def cache
37
- data = @io.read(@bufsize)
38
- @buf = StringIO.new(data.to_s) # Make nil become ""
39
- end
40
- end
@@ -1,48 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
-
4
- class TestBufferingReader < Test::Unit::TestCase
5
- def test_reads_once
6
- s = StringIO.new("This is a string")
7
-
8
- reader = Tracksperanto::BufferingReader.new(s)
9
- assert_equal "T", reader.read_one_byte
10
- assert_equal "h", reader.read_one_byte
11
- assert !reader.data_exhausted?
12
- end
13
-
14
- def test_reads_set_buffer_size
15
- s = StringIO.new("abcd")
16
- flexmock(s).should_receive(:read).with(4).once.and_return("abcd")
17
- reader = Tracksperanto::BufferingReader.new(s, 4)
18
- reader.read_one_byte
19
- end
20
-
21
- def test_reads_in_64kb_chunks_by_default
22
- s = StringIO.new("abcd")
23
- flexmock(s).should_receive(:read).with(64 * 1024).once.and_return("abcd")
24
- reader = Tracksperanto::BufferingReader.new(s)
25
- reader.read_one_byte
26
- end
27
-
28
- def test_eof_with_empty
29
- s = StringIO.new
30
- reader = Tracksperanto::BufferingReader.new(s)
31
- assert s.eof?
32
- end
33
-
34
- def test_eof_with_io_at_eof
35
- s = StringIO.new("foo")
36
- s.read(3)
37
- reader = Tracksperanto::BufferingReader.new(s)
38
- assert reader.data_exhausted?
39
- end
40
-
41
- def test_eof_with_string_to_size
42
- s = "Foobarboo another"
43
- s = StringIO.new(s)
44
- reader = Tracksperanto::BufferingReader.new(s, 1)
45
- s.length.times { reader.read_one_byte }
46
- assert reader.data_exhausted?
47
- end
48
- end