class GEPUB::Bindings

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/gepub/bindings.rb, line 17
def initialize
  @media_types = []
  @handler_by_media_type = {}
  yield self if block_given?
end
parse(bindings_xml) click to toggle source
# File lib/gepub/bindings.rb, line 23
def self.parse(bindings_xml)
  Bindings.new {
    |bindings|
    bindings.instance_eval {
      if !bindings_xml.nil?
        @xml = bindings_xml
        @namespaces = @xml.namespaces
        @attributes = attr_to_hash(@xml.attributes)
        @xml.xpath("//#{ns_prefix(OPF_NS)}:bindings/#{ns_prefix(OPF_NS)}:mediaType", @namespaces).map {
          |mediaType|
          @media_types <<  MediaType.new(mediaType['handler'], mediaType['media-type'])
          @handler_by_media_type[mediaType['media-type']] = mediaType['handler']
        }
      end
    }
  }
end

Public Instance Methods

add(id, media_type) click to toggle source
# File lib/gepub/bindings.rb, line 49
def add(id, media_type)
  @media_types << MediaType.new(id, media_type)
  @handler_by_media_type[media_type] =  id
end
handler_by_media_type() click to toggle source
# File lib/gepub/bindings.rb, line 45
def handler_by_media_type
  return @handler_by_media_type.dup
end
media_types() click to toggle source
# File lib/gepub/bindings.rb, line 41
def media_types
  return @media_types.dup
end
to_xml(builder) click to toggle source
# File lib/gepub/bindings.rb, line 54
def to_xml(builder)
  if (media_types.size > 0)
    builder.bindings {
      @media_types.each {
        |mediaType|
        mediaType.to_xml(builder)
      }
    }
  end
end