Class: Bookbinder::Transform::Organizer

Inherits:
Bookbinder::Transform show all
Defined in:
lib/bookbinder/transform/organizer.rb

Constant Summary collapse

PREFERRED_ORDER =
%w(
  title
  creator
  contributor
  language
  cover
  description
  unique-identifier
  modified
  version
  eisbn
  pisbn
  publisher
  subject
  rendition-*
  audio-*
  spine
  nav
  resources
)

Instance Method Summary collapse

Methods inherited from Bookbinder::Transform

#dependencies

Instance Method Details

#to_map(package) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/bookbinder/transform/organizer.rb', line 24

def to_map(package)
  new_map = {}
  PREFERRED_ORDER.each { |prop|
    if prop.match(/\*$/)
      prefix = prop.chop
      package.map.delete_if { |key, val|
        new_map[key] = val  if key.match(/^#{prefix}/)
      }
    else
      new_map[prop] = package.map.delete(prop)  if package.map[prop]
    end
  }
  if package.map['metadata'] && package.map['metadata'].empty?
    package.map.delete('metadata')
  end
  package.map.each_pair { |key, val|
    new_map[key] = val  if val
  }
  package.map = new_map
end