require 'cover'
class Book
+ @@DC_NS_URL = 'http://purl.org/dc/elements/1.1/'
+
def initialize(fileName)
@author = nil
@cover = nil
+ @description = nil
@path = fileName
@series = nil
@title = nil
return @cover
end
- def describe
+ def description
+ @description
+ end
+
+ def heading
result = []
if nil != @title
result.push('<i>(Unknown title)</i>')
end
if nil != @author
- result.push(@author.to_s())
+ result.push('<i>by ' + @author.to_s() + '</i>')
end
seriesInfo = []
#-------
# Author
- creator = opfDoc.css('dc|creator', 'dc' => 'http://purl.org/dc/elements/1.1/')
- if (nil != creator) and (creator.length > 0)
- roleNode = creator.attr('role')
- if nil != roleNode
- role = roleNode.value
- if ('aut' == role) and (creator.children.length > 0) and (nil != creator.children[0])
- name = creator.children[0].content
+ creators = opfDoc.css('dc|creator', 'dc' => @@DC_NS_URL)
+ if (creators.length > 0)
+ creator = creators[0]
+ if nil != creator
+ role = creator['opf:role']
+ if 'aut' == role
+ name = creator.content
parts = name.split(' ')
if parts.length > 1
surname = parts[-1]
end
end
+ #---------------------------------------
+ # Title
+
+ titles = opfDoc.css('dc|title', 'dc' => @@DC_NS_URL)
+ if titles.length > 0
+ title = titles[0]
+ if nil != title
+ @title = title.content
+ end
+ end
+
+ #---------------------------------------
+ # Description
+
+ descrNodes = opfDoc.css('dc|description', 'dc' => @@DC_NS_URL)
+ if (descrNodes.length > 0)
+ descrNode = descrNodes[0]
+ if nil != descrNode
+ @description = descrNode.content
+ end
+ end
+
#---------------------------------------
# Other metadata: series, volume, cover
fd.puts ' margin: 10px;'
fd.puts ' border 3px solid #73ad21;'
fd.puts '}'
+ fd.puts 'span.popup { }'
+ fd.puts 'span.popup:hover {text-decoration: none; background: #cfffff; z-index: 6; }'
+ fd.puts 'span.popup span {display: none; position: absolute; '
+ fd.puts ' margin: 4px 0 0 0px; padding: 3px 3px 3px 3px;'
+ fd.puts ' border-style:solid; border-color:black; border-width:1px;}'
+ fd.puts 'span.popup:hover span {display: block; margin: 20px 0 0 0px; background: #ffffaf; z-index:6;}'
fd.puts ' </style>'
fd.puts ' </head>'
fd.puts ' <body>'
end
fd.puts ' <div><table>'
- fd.puts ' <tr><td><a href="' + book.path + '">' + image + '</a></td><td>' + book.describe() + '</td></tr>'
+ fd.puts ' <tr><td><a href="' + book.path + '">' + image + '</a></td>'
+
+ heading = book.heading()
+ description = book.description()
+ if nil != description
+ fd.puts ' <td><span class="popup">' + heading + '<span><p>' + heading + '</p><p>' + description + '</p></span></span></td></tr>'
+ else
+ fd.puts ' <td>' + heading + '</td></tr>'
+ end
+
fd.puts ' </table></div>'
end