Sha256: 285027dfa16c4dcdd7761fc96cda37b97fc2f2b5abdd0acc137bd1c728e1dd5d

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module TaliaCore
  module DataTypes
    
    # Mapping from Mime types to data classes and importing methods. Currently uses a fixed 
    # default mapping
    module MimeMapping
      
      def mapping_for(mime_type)
        mime_type = Mime::Type.lookup(mime_type) if(mime_type.is_a?(String))
        mapping = mapping_hash[mime_type.to_sym]
        raise(ArgumentError, "No data class registered for type #{mime_type.inspect}") unless(mapping)
        mapping
      end
      
      # Gets the data class for the given mime type
      def class_type_from(mime_type)
        mapping_for(mime_type)[:type]
      end
      
      def loader_type_from(mime_type)
        map = mapping_for(mime_type)
        map[:loader] || map[:type]
      end
      
      # Currently this is only the default mapping
      def mapping_hash
        @mapping ||= {
          :xml => { :type => XmlData },
          :html =>{ :type => XmlData },
          :tei => { :type => XmlData },
          :hnml => { :type => XmlData },
          :jpeg => { :type => ImageData, :loader => :create_iip },
          :tiff => { :type => ImageData, :loader => :create_iip },
          :png => { :type => ImageData, :loader => :create_iip },
          :gif => { :type => ImageData, :loader => :create_iip },
          :pdf => { :type => PdfData },
          :text => { :type => SimpleText }
        }
      end
      
      
    end
    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
talia_core-0.4.0 lib/talia_core/data_types/mime_mapping.rb