fb2/lib/fb2.rb

32 lines
1.0 KiB
Ruby

require 'nokogiri'
require 'models/fb2_book'
require 'models/fb2_section'
class Fb2
def self.parse data
xml = Nokogiri::XML(data)
# building book
description = xml.css('description')
book = Fb2Book.new
book.title = description.css('title-info > book-title').text
book.author_first_name = description.css('title-info > author > first-name').text
book.author_last_name = description.css('title-info > author > last-name').text
book.annotation = description.css('title-info > annotation > p').text
book.genre = description.css('title-info > genre').text
book.lang = description.css('title-info > lang').text
book.keywords = description.css('title-info > keywords').text.split(', ')
book.sections = []
# building sections
xml.css('body > section').each do |s|
section = Fb2Section.new
section.title = s.css('title > p').text
section.contents = s.css('p').map{ |e| e.text }.drop(1)
book.sections << section
end
book
end
end