lib/epubmaker/epubv2.rb in review-2.3.0 vs lib/epubmaker/epubv2.rb in review-2.4.0
- old
+ new
@@ -1,7 +1,5 @@
-# encoding: utf-8
-
# = epubv2.rb -- EPUB version 2 producer.
#
# Copyright (c) 2010-2017 Kenshi Muto and Masayoshi Takahashi
#
# This program is free software.
@@ -13,14 +11,13 @@
require 'epubmaker/epubcommon'
require 'cgi'
require 'epubmaker/zip_exporter'
module EPUBMaker
-
# EPUBv2 is EPUB version 2 producer.
class EPUBv2 < EPUBCommon
- # Construct object with parameter hash +params+ and message resource hash +res+.
+ # Construct object with parameter hash +config+ and message resource hash +res+.
def initialize(producer)
super
end
# Return opf file content.
@@ -30,113 +27,109 @@
@opf_manifest = opf_manifest
@opf_toc = opf_tocx
tmplfile = File.expand_path('./opf/epubv2.opf.erb', ReVIEW::Template::TEMPLATE_DIR)
tmpl = ReVIEW::Template.load(tmplfile)
- return tmpl.result(binding)
+ tmpl.result(binding)
end
def opf_metainfo
- s = ""
+ s = ''
%w[title language date type format source description relation coverage subject rights].each do |item|
- next unless @producer.params[item]
- if @producer.params[item].kind_of?(Array)
- s << @producer.params.names_of(item).map {|i| %Q[ <dc:#{item}>#{CGI.escapeHTML(i)}</dc:#{item}>\n]}.join
+ next unless @producer.config[item]
+ if @producer.config[item].is_a?(Array)
+ s << @producer.config.names_of(item).map { |i| %Q( <dc:#{item}>#{CGI.escapeHTML(i)}</dc:#{item}>\n) }.join
else
- s << %Q[ <dc:#{item}>#{CGI.escapeHTML(@producer.params.name_of(item))}</dc:#{item}>\n]
+ s << %Q( <dc:#{item}>#{CGI.escapeHTML(@producer.config.name_of(item))}</dc:#{item}>\n)
end
end
# ID
- if @producer.params["isbn"].nil?
- s << %Q[ <dc:identifier id="BookId">#{@producer.params["urnid"]}</dc:identifier>\n]
+ if @producer.config['isbn'].nil?
+ s << %Q( <dc:identifier id="BookId">#{@producer.config['urnid']}</dc:identifier>\n)
else
- s << %Q[ <dc:identifier id="BookId" opf:scheme="ISBN">#{@producer.params["isbn"]}</dc:identifier>\n]
+ s << %Q( <dc:identifier id="BookId" opf:scheme="ISBN">#{@producer.config['isbn']}</dc:identifier>\n)
end
# creator (should be array)
%w[aut a-adp a-ann a-arr a-art a-asn a-aqt a-aft a-aui a-ant a-bkp a-clb a-cmm a-dsr a-edt a-ill a-lyr a-mdc a-mus a-nrt a-oth a-pht a-prt a-red a-rev a-spn a-ths a-trc a-trl].each do |role|
- next unless @producer.params[role]
- @producer.params.names_of(role).each do |v|
- s << %Q[ <dc:creator opf:role="#{role.sub('a-', '')}">#{CGI.escapeHTML(v)}</dc:creator>\n]
+ next unless @producer.config[role]
+ @producer.config.names_of(role).each do |v|
+ s << %Q( <dc:creator opf:role="#{role.sub('a-', '')}">#{CGI.escapeHTML(v)}</dc:creator>\n)
end
end
# contributor (should be array)
%w[adp ann arr art asn aqt aft aui ant bkp clb cmm dsr edt ill lyr mdc mus nrt oth pht prt red rev spn ths trc trl].each do |role|
- next unless @producer.params[role]
- @producer.params.names_of(role).each do |v|
- s << %Q[ <dc:contributor opf:role="#{role}">#{CGI.escapeHTML(v)}</dc:contributor>\n]
- if role == "prt"
- s << %Q[ <dc:publisher>#{v}</dc:publisher>\n]
- end
+ next unless @producer.config[role]
+ @producer.config.names_of(role).each do |v|
+ s << %Q( <dc:contributor opf:role="#{role}">#{CGI.escapeHTML(v)}</dc:contributor>\n)
+ s << %Q( <dc:publisher>#{v}</dc:publisher>\n) if role == 'prt'
end
end
s
end
def opf_manifest
- s = ""
+ s = ''
s << <<EOT
<manifest>
- <item id="ncx" href="#{@producer.params["bookname"]}.ncx" media-type="application/x-dtbncx+xml"/>
- <item id="#{@producer.params["bookname"]}" href="#{@producer.params["cover"]}" media-type="application/xhtml+xml"/>
+ <item id="ncx" href="#{@producer.config['bookname']}.ncx" media-type="application/x-dtbncx+xml"/>
+ <item id="#{@producer.config['bookname']}" href="#{@producer.config['cover']}" media-type="application/xhtml+xml"/>
EOT
- s << %Q[ <item id="toc" href="#{@producer.params["bookname"]}-toc.#{@producer.params["htmlext"]}" media-type="application/xhtml+xml"/>\n] if @producer.params["toc"] && @producer.params["mytoc"]
+ s << %Q( <item id="toc" href="#{@producer.config['bookname']}-toc.#{@producer.config['htmlext']}" media-type="application/xhtml+xml"/>\n) if @producer.config['toc'] && @producer.config['mytoc']
@producer.contents.each do |item|
next if item.file =~ /#/ # skip subgroup
- s << %Q[ <item id="#{item.id}" href="#{item.file}" media-type="#{item.media}"/>\n]
+ s << %Q( <item id="#{item.id}" href="#{item.file}" media-type="#{item.media}"/>\n)
end
- s << %Q[ </manifest>\n]
+ s << %Q( </manifest>\n)
s
end
def opf_tocx
- if @producer.params["epubmaker"]["cover_linear"] && @producer.params["epubmaker"]["cover_linear"] != "no"
- cover_linear = "yes"
- else
- cover_linear = "no"
- end
+ cover_linear = if @producer.config['epubmaker']['cover_linear'] && @producer.config['epubmaker']['cover_linear'] != 'no'
+ 'yes'
+ else
+ 'no'
+ end
- s = ""
- s << %Q[ <spine toc="ncx">\n]
- s << %Q[ <itemref idref="#{@producer.params["bookname"]}" linear="#{cover_linear}"/>\n]
- s << %Q[ <itemref idref="toc" />\n] unless @producer.params["mytoc"].nil?
+ s = ''
+ s << %Q( <spine toc="ncx">\n)
+ s << %Q( <itemref idref="#{@producer.config['bookname']}" linear="#{cover_linear}"/>\n)
+ s << %Q( <itemref idref="toc" />\n) unless @producer.config['mytoc'].nil?
@producer.contents.each do |item|
next if item.media !~ /xhtml\+xml/ # skip non XHTML
- s << %Q[ <itemref idref="#{item.id}"/>\n]
+ s << %Q( <itemref idref="#{item.id}"/>\n)
end
- s << %Q[ </spine>\n]
+ s << %Q( </spine>\n)
s
end
# Return ncx content. +indentarray+ has prefix marks for each level.
def ncx(indentarray)
@ncx_isbn = ncx_isbn
@ncx_doctitle = ncx_doctitle
@ncx_navmap = ncx_navmap(indentarray)
tmplfile = File.expand_path('./ncx/epubv2.ncx.erb', ReVIEW::Template::TEMPLATE_DIR)
- tmpl = ReVIEW::Template.load(tmplfile)
- return tmpl.result(binding)
+ ReVIEW::Template.load(tmplfile).result(binding)
end
# Produce EPUB file +epubfile+.
# +basedir+ points the directory has contents.
# +tmpdir+ defines temporary directory.
def produce(epubfile, basedir, tmpdir)
produce_write_common(basedir, tmpdir)
- File.open("#{tmpdir}/OEBPS/#{@producer.params["bookname"]}.ncx", "w") {|f| @producer.ncx(f, @producer.params["epubmaker"]["ncxindent"]) }
- File.open("#{tmpdir}/OEBPS/#{@producer.params["bookname"]}-toc.#{@producer.params["htmlext"]}", "w") {|f| @producer.mytoc(f) } unless @producer.params["mytoc"].nil?
+ File.open("#{tmpdir}/OEBPS/#{@producer.config['bookname']}.ncx", 'w') { |f| @producer.ncx(f, @producer.config['epubmaker']['ncxindent']) }
+ File.open("#{tmpdir}/OEBPS/#{@producer.config['bookname']}-toc.#{@producer.config['htmlext']}", 'w') { |f| @producer.mytoc(f) } if @producer.config['mytoc']
- @producer.call_hook(@producer.params["epubmaker"]["hook_prepack"], tmpdir)
- expoter = EPUBMaker::ZipExporter.new(tmpdir, @producer.params)
+ @producer.call_hook(@producer.config['epubmaker']['hook_prepack'], tmpdir)
+ expoter = EPUBMaker::ZipExporter.new(tmpdir, @producer.config)
expoter.export_zip(epubfile)
end
-
end
end