lib/import/base.rb in tracksperanto-1.1.1 vs lib/import/base.rb in tracksperanto-1.2.0
- old
+ new
@@ -1,34 +1,67 @@
-require 'stringio'
-
+# The base class for all the import modules. By default, when you inherit from this class the inherited class will be included
+# in the list of supported Tracksperanto importers. The API that an importer should present is very basic, and consists only of a few methods.
+# The main method is parse(io) which should return an array of Tracker objects.
class Tracksperanto::Import::Base
include Tracksperanto::Safety
include Tracksperanto::Casts
+ include Tracksperanto::BlockInit
+ include Tracksperanto::ZipTuples
+ # Tracksperanto will assign a proc that reports the status of the import to the caller.
+ # This block is automatically used by report_progress IF the proc is assigned. Should
+ # the proc be nil, the report_progress method will just pass (so you don't need to check for nil
+ # yourself)
attr_accessor :progress_block
- # The original width of the tracked image
- # Some importers need it
- cast_to_int :width
+ # The original width of the tracked image.
+ # If you need to know the width for your specific format and cannot autodetect it,
+ # Trakcksperanto will assign the passed width and height to the importer object before running
+ # the import. If not, you can replace the assigned values with your own. At the end of the import
+ # procedure, Tracksperanto will read the values from you again and will use the read values
+ # for determining the original comp size. +width+ and +height+ MUST return integer values after
+ # the import completes
+ attr_accessor :width
- # The original height of the original image.
- # Some importers need it
- cast_to_int :height
+ # The original height of the comp, same conventions as for width apply
+ attr_accessor :height
- # Safety on readers
+ # These reader methods will raise when the values are nil
+ cast_to_int :width, :height
safe_reader :width, :height
+ # Used to register your importer in the list of supported formats
def self.inherited(by)
Tracksperanto.importers << by
super
end
- # Call this method to tell what you are doing. This gets propagated to the caller
+ # Return an extension WITH DOT if this format has a typical extension that
+ # you can detect
+ def self.distinct_file_ext
+ nil
+ end
+
+ # Should return a human-readable (read: properly capitalized and with spaces) name of the
+ # import format
+ def self.human_name
+ "Abstract import format"
+ end
+
+ # Return true from this method if your importer can deduce the comp size from the passed file
+ def self.autodetects_size?
+ false
+ end
+
+ # Call this method to tell what you are doing. This gets propagated to the caller automatically, or
+ # gets ignored if the caller did not request any progress reports
def report_progress(message)
@progress_block.call(message) if @progress_block
end
- # Should return an array of Tracksperanto::Tracker objects
- def parse(track_file_content)
+ # The main method of the parser. Will receive an IO handle to the file being imported, and should
+ # return an array of Tracksperanto::Tracker objects containing keyframes. If you have a problem
+ # doing an import, raise from here.
+ def parse(track_file_io)
[]
end
end
\ No newline at end of file