tracksperanto 2.9.4 → 2.9.5

Sign up to get free protection for your applications and to get access to all the features.
data/DEVELOPER_DOCS.rdoc CHANGED
@@ -14,7 +14,7 @@ Tracksperanto is currently being developed on Ruby 1.9.3 but it should also work
14
14
  in the Gemfile plus Bundler. Please develop against the git repo checkout since we no longer package the test fixtures with the gem.
15
15
 
16
16
  * Checkout the repo at http://github.com/guerilla-di/tracksperanto
17
- * Run `bundle install' and 'rake' to run the tests
17
+ * Run `bundle install' and `bundle exec rake' to run the tests
18
18
  * Carry your development, in your own branch or feature branch
19
19
  * File a pull request or send a patch to info at guerilla-di.org
20
20
 
@@ -48,12 +48,6 @@ to write your own Pipeline class or reimplement parts of it.
48
48
  Almost every module in Tracksperanto has a method called report_progress. This method is used to notify an external callback of what you are doing, and helps keep
49
49
  the software user-friendly. A well-behaved Tracksperanto module should manage it's progress reports properly.
50
50
 
51
- === Reusing components
52
-
53
- Tracksperanto contains some nice bits, such as a full grammar lexer for Shake scripts (Tracksperanto::ShakeGrammar::Lexer), a couple of handy buffering
54
- classes (Tracksperanto::BufferIO and Tracksperanto::Accumulator) and a parser for any Flame setups containing channels (Tracksperanto::Import::FlameStabilizer).
55
- Play responsibly.
56
-
57
51
  === Sample script
58
52
 
59
53
  require "rubygems"
@@ -73,7 +67,7 @@ Play responsibly.
73
67
 
74
68
  # The importer responds to each() so if your file is not too big you can just load all the trackers
75
69
  # as an array. If you expect to have alot of trackers investigate a way to buffer them on disk
76
- # instead (see Accumulator)
70
+ # instead (see Obuf)
77
71
  trackers = some_importer.to_a
78
72
 
79
73
  # Create the exporter and pass the output file to it
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.9.5
2
+
3
+ * Export a Maya ASCII scene instead of a MEL script
4
+
1
5
  === 2.9.4
2
6
 
3
7
  * Add MatchMover RZML import support
data/MIT_LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2004-2012 Julik Tarkhanov
1
+ Copyright (c) 2009-2012 Julik Tarkhanov
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/lib/export/base.rb CHANGED
@@ -24,8 +24,7 @@
24
24
  #
25
25
  # By contract export_point will be called at least once for each tracker being exported (no empty trackers will be sent)
26
26
  class Tracksperanto::Export::Base
27
- include Tracksperanto::ConstName
28
- include Tracksperanto::SimpleExport
27
+ include Tracksperanto::ConstName, Tracksperanto::SimpleExport
29
28
 
30
29
  attr_reader :io
31
30
 
@@ -1,17 +1,24 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  # Export each tracker as a moving Maya locator
3
3
  class Tracksperanto::Export::MayaLocators < Tracksperanto::Export::Base
4
+ SCENE_PREAMBLE = [
5
+ '//Maya ASCII 2011 scene',
6
+ '//Name: TracksperantoLocators.ma',
7
+ '//Codeset: UTF-8',
8
+ 'requires maya "1.0";'
9
+ ].join("\n")
10
+
4
11
  PREAMBLE = 'polyPlane -name "TracksperantoImagePlane" -width %0.5f -height %0.5f;'
5
12
  LOCATOR_PREAMBLE = 'spaceLocator -name "%s" -p 0 0 0;'
6
13
  KEYFRAME_TEMPLATE = 'setKeyframe -time %d -value %0.5f "%s.%s";';
7
14
  MULTIPLIER = 10.0
8
15
 
9
16
  def self.desc_and_extension
10
- "mayaLocators.mel"
17
+ "mayaLocators.ma"
11
18
  end
12
19
 
13
20
  def self.human_name
14
- "Maya .mel script that generates locators"
21
+ "Maya ASCII scene with locators on an image plane"
15
22
  end
16
23
 
17
24
  def start_export(w, h)
@@ -19,6 +26,7 @@ class Tracksperanto::Export::MayaLocators < Tracksperanto::Export::Base
19
26
  # and scale the height to that
20
27
  @factor = (1 / w.to_f) * MULTIPLIER
21
28
 
29
+ @io.puts(SCENE_PREAMBLE)
22
30
  @io.puts(PREAMBLE % [MULTIPLIER, h * @factor])
23
31
  @io.puts('rotate -r -os 90;') # Position it in the XY plane
24
32
  @io.puts('move -r %0.5f %0.5f 0;' % [MULTIPLIER / 2.0, h * @factor / 2.0])
data/lib/import/base.rb CHANGED
@@ -5,12 +5,8 @@
5
5
  # basic, and consists only of a few methods. The main method is
6
6
  # `each`.
7
7
  class Tracksperanto::Import::Base
8
- include Enumerable
9
- include Tracksperanto::Safety
10
- include Tracksperanto::Casts
11
- include Tracksperanto::BlockInit
12
- include Tracksperanto::ZipTuples
13
- include Tracksperanto::ConstName
8
+ include Enumerable, Tracksperanto::Safety, Tracksperanto::Casts
9
+ include Tracksperanto::BlockInit, Tracksperanto::ZipTuples, Tracksperanto::ConstName
14
10
 
15
11
  # Handle to the IO with data being parsed
16
12
  attr_accessor :io
@@ -41,9 +37,6 @@ class Tracksperanto::Import::Base
41
37
  super
42
38
  end
43
39
 
44
- # OBSOLETE, do not use
45
- attr_accessor :receiver
46
-
47
40
  # Return an extension WITH DOT if this format has a typical extension that
48
41
  # you can detect (like ".nk" for Nuke)
49
42
  def self.distinct_file_ext
@@ -72,10 +65,4 @@ class Tracksperanto::Import::Base
72
65
  # width and height as well.
73
66
  def each
74
67
  end
75
-
76
- # OBSOLETE: do not use
77
- def send_tracker(tracker_obj)
78
- STDERR.puts "Import::Base#send_tracker has been deprecated, please rewrite your importer to use yield(t) inside each instead"
79
- @receiver.push(tracker_obj)
80
- end
81
68
  end
@@ -42,6 +42,7 @@ class Tracksperanto::Import::MatchMoverRZML < Tracksperanto::Import::Base
42
42
  # <IFRM>
43
43
  # <M i="1" k="i" x="626.68" y="488.56" tt="0.8000000119" cf="0">
44
44
  if element_name.downcase == 'm'
45
+ @parser.report_progress "Adding tracker"
45
46
  @trackers.push(Tracksperanto::Tracker.new(:name => attrs["i"]))
46
47
  end
47
48
 
@@ -51,6 +52,7 @@ class Tracksperanto::Import::MatchMoverRZML < Tracksperanto::Import::Base
51
52
 
52
53
  if element_name.downcase == "m"
53
54
  target_marker = @trackers.find{|e| e.name == attrs["i"] }
55
+ @parser.report_progress "Recovering keyframe at #{@frame}"
54
56
  target_marker.keyframe!(:frame => @frame, :abs_x => attrs["x"], :abs_y => (@parser.height - attrs["y"].to_f), :residual => attrs["tt"])
55
57
  end
56
58
  end
@@ -61,6 +63,7 @@ class Tracksperanto::Import::MatchMoverRZML < Tracksperanto::Import::Base
61
63
  @trackers.reject!{|e| e.empty? }
62
64
 
63
65
  @trackers.each do | recovered_tracker |
66
+ @parser.report_progress "Pushing tracker #{recovered_tracker.name.inspect}"
64
67
  @cb.call(recovered_tracker)
65
68
  end
66
69
  end
data/lib/pipeline/base.rb CHANGED
@@ -14,7 +14,7 @@ module Tracksperanto::Pipeline
14
14
  end
15
15
 
16
16
  class NoTrackersRecoveredError < RuntimeError
17
- def message;
17
+ def message;
18
18
  "Could not recover any non-empty trackers from this file.\n" +
19
19
  "Wrong import format maybe?\n" +
20
20
  "Note that PFTrack will only export trackers from the solved segment of the shot.";
@@ -40,8 +40,7 @@ module Tracksperanto::Pipeline
40
40
 
41
41
  include Tracksperanto::BlockInit
42
42
 
43
- # How many points have been converted. In general, the pipeline does not preserve the parsed tracker objects
44
- # after they have been exported
43
+ # How many points have been converted
45
44
  attr_reader :converted_points
46
45
 
47
46
  # How many keyframes have been converted
@@ -53,7 +52,7 @@ module Tracksperanto::Pipeline
53
52
  # percent complete
54
53
  attr_accessor :progress_block
55
54
 
56
- # Assign an array of exporters to use them instead of the standard ones
55
+ # Assign an array of exporter classes to use them instead of the default "All"
57
56
  attr_accessor :exporters
58
57
 
59
58
  # Contains arrays of the form ["MiddewareName", {:param => value}]
@@ -65,6 +64,8 @@ module Tracksperanto::Pipeline
65
64
  @ios = []
66
65
  end
67
66
 
67
+ # Will scan the middleware_tuples attribute and create a processing chain.
68
+ # Middlewares will be instantiated and wrap each other, starting with the first one
68
69
  def wrap_output_with_middlewares(output)
69
70
  return output unless (middleware_tuples && middleware_tuples.any?)
70
71
 
@@ -77,7 +78,8 @@ module Tracksperanto::Pipeline
77
78
  # * width - The comp width, for the case that the format does not support auto size
78
79
  # * height - The comp height, for the case that the format does not support auto size
79
80
  # * parser - The parser class, for the case that it can't be autodetected from the file name
80
- def run(from_input_file_path, passed_options = {}) #:yields: *all_middlewares
81
+ # Returns the number of trackers and the number of keyframes processed during the run
82
+ def run(from_input_file_path, passed_options = {})
81
83
 
82
84
  # Check for empty files
83
85
  raise EmptySourceFileError if File.stat(from_input_file_path).size.zero?
@@ -148,7 +150,7 @@ module Tracksperanto::Pipeline
148
150
  # Wrap the input in a progressive IO, setup a lambda that will spy on the reader and
149
151
  # update the percentage. We will only broadcast messages that come from the parser
150
152
  # though (complementing it with a percentage)
151
- io_with_progress = Tracksperanto::ProgressiveIO.new(tracker_data_io) do | offset, of_total |
153
+ io_with_progress = ProgressiveIO.new(tracker_data_io) do | offset, of_total |
152
154
  percent_complete = (50.0 / of_total) * offset
153
155
 
154
156
  # Some importers do not signal where they are and do not send nice reports. The way we can help that in the interim
@@ -163,14 +165,8 @@ module Tracksperanto::Pipeline
163
165
 
164
166
  begin
165
167
 
166
- if importer.respond_to?(:each)
167
- importer.io = io_with_progress
168
- importer.each {|t| @accumulator.push(t) unless t.empty? }
169
- else # OBSOLETE - for this version we are going to permit it.
170
- STDERR.puts "Import::Base#stream_parse(io) is obsolete, please rewrite your importer to use each instead"
171
- importer.receiver = @accumulator
172
- importer.stream_parse(io_with_progress)
173
- end
168
+ importer.io = io_with_progress
169
+ importer.each {|t| @accumulator.push(t) unless t.empty? }
174
170
 
175
171
  report_progress(percent_complete = 50.0, "Validating #{@accumulator.size} imported trackers")
176
172
  raise NoTrackersRecoveredError if @accumulator.size.zero?
data/lib/tracksperanto.rb CHANGED
@@ -1,14 +1,9 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'stringio'
3
- require 'delegate'
4
- require 'tempfile'
5
- require 'flame_channel_parser'
6
- require "obuf"
7
- require "progressive_io"
2
+ %w( stringio delegate tempfile flame_channel_parser obuf progressive_io ).map(&method(:require))
8
3
 
9
4
  module Tracksperanto
10
5
  PATH = File.expand_path(File.dirname(__FILE__))
11
- VERSION = '2.9.4'
6
+ VERSION = '2.9.5'
12
7
 
13
8
  module Import; end
14
9
  module Export; end
@@ -74,14 +69,6 @@ module Tracksperanto
74
69
  raise UnknownImporterError, "Unknown importer #{name.inspect}"
75
70
  end
76
71
 
77
- # DEPRECATED, will be removed in Tracksperanto 3
78
- class Accumulator < Obuf
79
- end
80
-
81
- # DEPRECATED, will be removed in Tracksperanto 3
82
- class Tracksperanto::ProgressiveIO < ProgressiveIO
83
- end
84
-
85
72
  end
86
73
 
87
74
  %w(
@@ -1,3 +1,7 @@
1
+ //Maya ASCII 2011 scene
2
+ //Name: TracksperantoLocators.ma
3
+ //Codeset: UTF-8
4
+ requires maya "1.0";
1
5
  polyPlane -name "TracksperantoImagePlane" -width 10.00000 -height 5.62500;
2
6
  rotate -r -os 90;
3
7
  move -r 5.00000 2.81250 0;
@@ -4,14 +4,14 @@ require File.expand_path(File.dirname(__FILE__)) + '/../helper'
4
4
  class MayaLocatorsExportTest < Test::Unit::TestCase
5
5
  include ParabolicTracks
6
6
 
7
- P_LOCATORS = File.dirname(__FILE__) + "/samples/ref_MayaLocators.mel"
7
+ P_LOCATORS = File.dirname(__FILE__) + "/samples/ref_MayaLocators.ma"
8
8
 
9
9
  def test_export_output_written
10
10
  ensure_same_output Tracksperanto::Export::MayaLocators, P_LOCATORS
11
11
  end
12
12
 
13
13
  def test_exporter_meta
14
- assert_equal "mayaLocators.mel", Tracksperanto::Export::MayaLocators.desc_and_extension
15
- assert_equal "Maya .mel script that generates locators", Tracksperanto::Export::MayaLocators.human_name
14
+ assert_equal "mayaLocators.ma", Tracksperanto::Export::MayaLocators.desc_and_extension
15
+ assert_equal "Maya ASCII scene with locators on an image plane", Tracksperanto::Export::MayaLocators.human_name
16
16
  end
17
17
  end
@@ -0,0 +1,59 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
+
4
+ class TestCasts < Test::Unit::TestCase
5
+ D = 0.0001
6
+
7
+ class Testable
8
+ include Tracksperanto::Casts
9
+ attr_accessor :vanilla, :str_attr, :int_attr, :float_attr
10
+ cast_to_string :str_attr
11
+ cast_to_int :int_attr
12
+ cast_to_float :float_attr
13
+ end
14
+
15
+ class Junk
16
+ def to_s
17
+ "Random"
18
+ end
19
+ end
20
+
21
+ def test_cast_to_float
22
+ t = Testable.new
23
+ assert_kind_of Float, t.float_attr, "Uninitialized float attr should be a float"
24
+ assert_in_delta 0, t.float_attr, D
25
+
26
+ t.float_attr = "3"
27
+ assert_kind_of Float, t.float_attr
28
+ assert_in_delta 3.0, t.float_attr, D
29
+
30
+ t.float_attr = "a"
31
+ assert_kind_of Float, t.float_attr
32
+ assert_in_delta 0, t.float_attr, D
33
+ end
34
+
35
+ def test_cast_to_int
36
+ t = Testable.new
37
+
38
+ assert_equal 0, t.int_attr, "Uninitialized int attr should be an int"
39
+
40
+ t.int_attr = "3.1"
41
+ assert_kind_of Fixnum, t.int_attr
42
+ assert_equal 3, t.int_attr
43
+
44
+ t.float_attr = 3.1
45
+ assert_kind_of Fixnum, t.int_attr
46
+ assert_equal 3, t.int_attr
47
+ end
48
+
49
+ def test_cast_to_string
50
+ t = Testable.new
51
+
52
+ assert_equal '', t.str_attr
53
+ t.str_attr = 3.123
54
+ assert_equal "3.123", t.str_attr
55
+
56
+ t.str_attr = Junk.new
57
+ assert_equal "Random", t.str_attr
58
+ end
59
+ end
data/test/test_cli.rb CHANGED
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
3
  require "set"
4
4
  require "cli_test"
5
5
 
6
- class CliTest < Test::Unit::TestCase
6
+ class TestCli < Test::Unit::TestCase
7
7
  TEMP_DIR = File.expand_path(File.dirname(__FILE__) + "/tmp")
8
8
  BIN_P = File.expand_path(File.dirname(__FILE__) + "/../bin/tracksperanto")
9
9
 
@@ -40,7 +40,7 @@ class CliTest < Test::Unit::TestCase
40
40
  flm.stabilizer flm_3de_v3.txt flm_3de_v4.txt flm_boujou_text.txt flm_flame.stabilizer
41
41
  flm_matchmover.rz2 flm_mayalive.txt flm_nuke.nk flm_pftrack_2011_pfmatchit.txt flm_pftrack_v4.2dt
42
42
  flm_pftrack_v5.2dt flm_shake_trackers.txt flm_syntheyes_2dt.txt flm_flame_cornerpin.stabilizer
43
- flm_tracksperanto_ruby.rb flm_mayaLocators.mel flm_createNulls.jsx
43
+ flm_tracksperanto_ruby.rb flm_mayaLocators.ma flm_createNulls.jsx
44
44
  )
45
45
 
46
46
  assert_same_set fs, Dir.entries(TEMP_DIR)
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
3
 
4
- class ConstNameTest < Test::Unit::TestCase
4
+ class TestConstName < Test::Unit::TestCase
5
5
 
6
6
  def test_const_name
7
7
  assert_equal "Scaler", Tracksperanto::Middleware::Scaler.const_name
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
3
 
4
- class FormatDetectorTest < Test::Unit::TestCase
4
+ class TestFormatDetector < Test::Unit::TestCase
5
5
 
6
6
  def test_match_unknown
7
7
  file = "/tmp/unknown.someext"
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
3
 
4
- class KeyframeTest < Test::Unit::TestCase
4
+ class TestKeyframe < Test::Unit::TestCase
5
5
  def test_supports_block_init
6
6
  keyframe = Tracksperanto::Keyframe.new do |k|
7
7
  k.frame = 0
@@ -1,7 +1,7 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
3
 
4
- class PipelineTest < Test::Unit::TestCase
4
+ class TestPipeline < Test::Unit::TestCase
5
5
 
6
6
  def setup
7
7
  @old_dir = Dir.pwd
@@ -57,6 +57,13 @@ class PipelineTest < Test::Unit::TestCase
57
57
  assert processing_log.include?("Parsing channel \"tracker1/ref/y\"")
58
58
  end
59
59
 
60
+ def test_run_returns_the_number_of_trackers_and_keyframes_processed
61
+ create_stabilizer_file
62
+ pipeline = Tracksperanto::Pipeline::Base.new
63
+ result = pipeline.run(@stabilizer)
64
+ assert_equal [3, 9], result
65
+ end
66
+
60
67
  def test_run_crashes_with_empty_file
61
68
  empty_file_path = "./input_empty.stabilizer"
62
69
  f = File.open(empty_file_path, "w"){|f| f.write('') }
@@ -0,0 +1,21 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
+
4
+ class TestSafety < Test::Unit::TestCase
5
+ class Testable
6
+ include Tracksperanto::Safety
7
+ attr_accessor :foo, :bar
8
+ safe_reader :foo, :bar
9
+ end
10
+
11
+ def test_safe_reader_raises_with_no_ivar
12
+ t = Testable.new
13
+ assert_raise(RuntimeError) { t.foo }
14
+ end
15
+
16
+ def test_safe_reader_does_not_raise_with_value_assigned
17
+ t = Testable.new
18
+ t.foo = 123
19
+ assert_nothing_raised { assert_equal 123, t.foo }
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.expand_path(File.dirname(__FILE__)) + '/helper'
3
+
4
+ class TestZipTuples < Test::Unit::TestCase
5
+ include Tracksperanto::ZipTuples
6
+
7
+ def test_zip_with_empty
8
+ assert_equal [], zip_curve_tuples([])
9
+ end
10
+
11
+ def test_zip_with_standard_dataset
12
+ assert_equal [[1, 123, 234]], zip_curve_tuples([[1, 123], [1,234]])
13
+ end
14
+
15
+ def test_zip_with_missing_step
16
+ assert_equal [[1, 123, 345], [2, 234]], zip_curve_tuples([[1, 123], [1, 345], [2,234]])
17
+ end
18
+
19
+ def test_zip_with_two_curves
20
+ curve_a = [[1, 123], [2, 345]]
21
+ curve_b = [[1, 23.4], [2, 14.5]]
22
+ result = [[1, 123, 23.4], [2, 345, 14.5]]
23
+ assert_equal result, zip_curve_tuples(curve_a, curve_b)
24
+ end
25
+ end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tracksperanto"
8
- s.version = "2.9.4"
8
+ s.version = "2.9.5"
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 = "2012-02-08"
12
+ s.date = "2012-02-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"]
@@ -94,7 +94,7 @@ Gem::Specification.new do |s|
94
94
  "test/export/samples/ref_AfterEffects.jsx",
95
95
  "test/export/samples/ref_FlameProperlyReorderedCornerpin.stabilizer",
96
96
  "test/export/samples/ref_FlameSimpleReorderedCornerpin.stabilizer",
97
- "test/export/samples/ref_MayaLocators.mel",
97
+ "test/export/samples/ref_MayaLocators.ma",
98
98
  "test/export/samples/ref_Mayalive.txt",
99
99
  "test/export/samples/ref_Mayalive_CustomAspect.txt",
100
100
  "test/export/samples/ref_NukeScript.nk",
@@ -159,15 +159,18 @@ Gem::Specification.new do |s|
159
159
  "test/middleware/test_start_trim_middleware.rb",
160
160
  "test/test_buffer_io.rb",
161
161
  "test/test_bufferingreader.rb",
162
+ "test/test_casts.rb",
162
163
  "test/test_cli.rb",
163
164
  "test/test_const_name.rb",
164
165
  "test/test_extio.rb",
165
166
  "test/test_format_detector.rb",
166
167
  "test/test_keyframe.rb",
167
168
  "test/test_pipeline.rb",
169
+ "test/test_safety.rb",
168
170
  "test/test_simple_export.rb",
169
171
  "test/test_tracker.rb",
170
172
  "test/test_tracksperanto.rb",
173
+ "test/test_zip_tuples.rb",
171
174
  "tracksperanto.gemspec"
172
175
  ]
173
176
  s.homepage = "http://guerilla-di.org/tracksperanto"
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: 2.9.4
4
+ version: 2.9.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: 2012-02-08 00:00:00.000000000 Z
12
+ date: 2012-02-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: obuf
16
- requirement: &3822710 !ruby/object:Gem::Requirement
16
+ requirement: &3071160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.0.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *3822710
24
+ version_requirements: *3071160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: progressive_io
27
- requirement: &3822230 !ruby/object:Gem::Requirement
27
+ requirement: &3069860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *3822230
35
+ version_requirements: *3069860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: flame_channel_parser
38
- requirement: &3821780 !ruby/object:Gem::Requirement
38
+ requirement: &3068120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '4.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *3821780
46
+ version_requirements: *3068120
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: progressbar
49
- requirement: &3821310 !ruby/object:Gem::Requirement
49
+ requirement: &3066630 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.10.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *3821310
57
+ version_requirements: *3066630
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: update_hints
60
- requirement: &3820990 !ruby/object:Gem::Requirement
60
+ requirement: &3064500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '1.0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *3820990
68
+ version_requirements: *3064500
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: jeweler
71
- requirement: &3820670 !ruby/object:Gem::Requirement
71
+ requirement: &3062980 !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: *3820670
79
+ version_requirements: *3062980
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rake
82
- requirement: &3820350 !ruby/object:Gem::Requirement
82
+ requirement: &3057310 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *3820350
90
+ version_requirements: *3057310
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: flexmock
93
- requirement: &3820050 !ruby/object:Gem::Requirement
93
+ requirement: &3055650 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0.8'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *3820050
101
+ version_requirements: *3055650
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: cli_test
104
- requirement: &3819760 !ruby/object:Gem::Requirement
104
+ requirement: &3052420 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '1.0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *3819760
112
+ version_requirements: *3052420
113
113
  description: Converts 2D track exports between different apps like Flame, MatchMover,
114
114
  PFTrack...
115
115
  email: me@julik.nl
@@ -196,7 +196,7 @@ files:
196
196
  - test/export/samples/ref_AfterEffects.jsx
197
197
  - test/export/samples/ref_FlameProperlyReorderedCornerpin.stabilizer
198
198
  - test/export/samples/ref_FlameSimpleReorderedCornerpin.stabilizer
199
- - test/export/samples/ref_MayaLocators.mel
199
+ - test/export/samples/ref_MayaLocators.ma
200
200
  - test/export/samples/ref_Mayalive.txt
201
201
  - test/export/samples/ref_Mayalive_CustomAspect.txt
202
202
  - test/export/samples/ref_NukeScript.nk
@@ -261,15 +261,18 @@ files:
261
261
  - test/middleware/test_start_trim_middleware.rb
262
262
  - test/test_buffer_io.rb
263
263
  - test/test_bufferingreader.rb
264
+ - test/test_casts.rb
264
265
  - test/test_cli.rb
265
266
  - test/test_const_name.rb
266
267
  - test/test_extio.rb
267
268
  - test/test_format_detector.rb
268
269
  - test/test_keyframe.rb
269
270
  - test/test_pipeline.rb
271
+ - test/test_safety.rb
270
272
  - test/test_simple_export.rb
271
273
  - test/test_tracker.rb
272
274
  - test/test_tracksperanto.rb
275
+ - test/test_zip_tuples.rb
273
276
  - tracksperanto.gemspec
274
277
  homepage: http://guerilla-di.org/tracksperanto
275
278
  licenses: