class GEPUB::Spine
Attributes
opf_version[RW]
Public Class Methods
new(opf_version = '3.0', id_pool = Package::IDPool.new) { |self| ... }
click to toggle source
# File lib/gepub/spine.rb, line 102 def initialize(opf_version = '3.0', id_pool = Package::IDPool.new) @id_pool = id_pool @attributes = {} @item_refs = [] @itemref_by_id = {} @opf_version = opf_version yield self if block_given? end
parse(spine_xml, opf_version = '3.0', id_pool = Package::IDPool.new)
click to toggle source
# File lib/gepub/spine.rb, line 85 def self.parse(spine_xml, opf_version = '3.0', id_pool = Package::IDPool.new) Spine.new(opf_version, id_pool) { |spine| spine.instance_eval { @xml = spine_xml @namespaces = @xml.namespaces @attributes = attr_to_hash(@xml.attributes) @item_refs = [] @xml.xpath("//#{ns_prefix(OPF_NS)}:spine/#{ns_prefix(OPF_NS)}:itemref", @namespaces).map { |itemref| i = Itemref.create(self, attr_to_hash(itemref.attributes)) @item_refs << i } } } end
Public Instance Methods
<<(item)
click to toggle source
# File lib/gepub/spine.rb, line 132 def <<(item) push item end
itemref_by_id()
click to toggle source
# File lib/gepub/spine.rb, line 122 def itemref_by_id @itemref_by_id.dup end
itemref_list()
click to toggle source
# File lib/gepub/spine.rb, line 118 def itemref_list @item_refs.dup end
push(item)
click to toggle source
# File lib/gepub/spine.rb, line 126 def push(item) @item_refs << i = Itemref.new(item.id, self) @itemref_by_id[item.id] = i i end
register_itemref(itemref)
click to toggle source
# File lib/gepub/spine.rb, line 149 def register_itemref(itemref) raise "id '#{itemref.id}' is already in use." if @id_pool[itemref.id] @id_pool[itemref.id] = true unless itemref.id.nil? end
remove_with_idlist(ids)
click to toggle source
# File lib/gepub/spine.rb, line 159 def remove_with_idlist(ids) @item_refs = @item_refs.select { |ref| !ids.member? ref.idref } end
rendition_specified?()
click to toggle source
# File lib/gepub/spine.rb, line 136 def rendition_specified? @item_refs.select { |itemref| itemref.rendition_specified? }.size > 0 end
to_xml(builder)
click to toggle source
# File lib/gepub/spine.rb, line 140 def to_xml(builder) builder.spine(@attributes) { @item_refs.each { |ref| ref.to_xml(builder, @opf_version) } } end
unregister_itemref(itemref)
click to toggle source
# File lib/gepub/spine.rb, line 154 def unregister_itemref(itemref) @item_refs.delete itemref @id_pool[itemref.id] = nil end