Class: BbEPUB::Transform::Creator
- Inherits:
-
Bookbinder::Transform
- Object
- Bookbinder::Transform
- BbEPUB::Transform::Creator
- Defined in:
- lib/bb-epub/transform/creator.rb
Direct Known Subclasses
Instance Method Summary collapse
Instance Method Details
#dependencies ⇒ Object
3 4 5 |
# File 'lib/bb-epub/transform/creator.rb', line 3 def dependencies [BbEPUB::Transform::Metadata] end |
#from_map(package) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/bb-epub/transform/creator.rb', line 35 def from_map(package) return unless actors = package.map[actor_type] opf_doc = package.file(:opf).document = opf_doc.find('opf|metadata') actors.each_with_index { |actor, seq| actor_tag = opf_doc.new_node('dc:'+actor_type, :append => ) actor_tag.content = actor['name'] if actors.length > 1 seq += 1 actor_id = "dc-#{actor_type}-metadata-#{seq}" actor_tag['id'] = actor_id opf_doc.new_node('meta', :append => ) { || .content = actor['role'] ['property'] = 'role' ['refines'] = '#'+actor_id } opf_doc.new_node('meta', :append => ) { || .content = seq ['property'] = 'display-seq' ['refines'] = '#'+actor_id } end } end |
#to_map(package) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/bb-epub/transform/creator.rb', line 8 def to_map(package) return unless package.map['metadata'] return unless = package.map['metadata'][actor_type] actors = [] actor_data = .sort { |a, b| if a['display-seq'] && b['display-seq'] a['display-seq']['@'].to_i <=> b['display-seq']['@'].to_i else 0 end } actor_data.each { |cdata| actor = { 'name' => cdata['@'], 'role' => cdata['role'] ? cdata['role']['@'] : 'aut', } actor['file-as'] = cdata['file-as']['@'] if cdata['file-as'] # Eh, 'alternate-script' is too messy for now. .delete(cdata) actors.push(actor) } package.map['metadata'].delete(actor_type) if .empty? package.map[actor_type] = actors end |