Class: BbEPUB::Transform::Description

Inherits:
Bookbinder::Transform
  • Object
show all
Defined in:
lib/bb-epub/transform/description.rb

Instance Method Summary collapse

Instance Method Details

#dependenciesObject



3
4
5
# File 'lib/bb-epub/transform/description.rb', line 3

def dependencies
  [BbEPUB::Transform::Metadata]
end

#from_map(package) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/bb-epub/transform/description.rb', line 25

def from_map(package)
  if desc = package.map['description']
    opf_doc = package.file(:opf).document
    opf_doc.new_node('dc:description', :append => 'opf|metadata') { |desc_tag|
      desc_tag.content = desc['full']
    }
  end
end

#to_map(package) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/bb-epub/transform/description.rb', line 8

def to_map(package)
  desc_hashes = package.map['metadata'].delete('description')
  descs = []
  if desc_hashes && desc_hashes.any?
    descs = desc_hashes.collect { |dh| dh['@'] }
    descs.sort! { |a, b| a.length <=> b.length }
    full = descs.shift
    if full && !full.empty?
      short = descs.shift || first_sentence(full)
      desc = { 'full' => full }
      desc['short'] = short  if short
      package.map['description'] = desc
    end
  end
end