Class: EPUBMaker::Producer
Overview
EPUBMaker produces EPUB file.
Instance Attribute Summary collapse
-
#contents ⇒ Object
Array of content objects.
-
#params ⇒ Object
Parameter hash.
-
#res ⇒ Object
readonly
Message resource object.
Class Method Summary collapse
-
.load(file) ⇒ Object
Take YAML
fileand return parameter hash.
Instance Method Summary collapse
- #call_hook(filename, *params) ⇒ Object
-
#colophon(wobj) ⇒ Object
Write colophon file to IO object
wobj. -
#container(wobj) ⇒ Object
Write container file to IO object
wobj. -
#cover(wobj) ⇒ Object
Write cover file to IO object
wobj. - #coverimage ⇒ Object
-
#import_imageinfo(path, base = nil, allow_exts = nil) ⇒ Object
(also: #importImageInfo)
Add informations of figure files in
pathto contents array. -
#initialize(params = nil, version = nil) ⇒ Producer
constructor
Construct producer object.
- #isbn_hyphen ⇒ Object
-
#load(file) ⇒ Object
Take YAML
fileand update parameter hash. -
#merge_params(params) ⇒ Object
Update parameters by merging from new parameter hash
params. -
#mimetype(wobj) ⇒ Object
Write mimetype file to IO object
wobj. -
#mytoc(wobj) ⇒ Object
Write own toc file to IO object
wobj. -
#ncx(wobj, indentarray = []) ⇒ Object
Write ncx file to IO object
wobj. -
#opf(wobj) ⇒ Object
Write opf file to IO object
wobj. -
#produce(epubfile, basedir = nil, tmpdir = nil) ⇒ Object
Produce EPUB file
epubfile. -
#titlepage(wobj) ⇒ Object
Write title file (copying) to IO object
wobj.
Constructor Details
#initialize(params = nil, version = nil) ⇒ Producer
Construct producer object. params takes initial parameter hash. This parameters can be overriden by EPUBMaker#load or EPUBMaker#merge_params. version takes EPUB version (default is 2).
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/epubmaker/producer.rb', line 49 def initialize(params=nil, version=nil) @contents = [] @params = ReVIEW::Configure.new @epub = nil @params["epubversion"] = version unless version.nil? @res = ReVIEW::I18n if params merge_params(params) end end |
Instance Attribute Details
#contents ⇒ Object
Array of content objects.
26 27 28 |
# File 'lib/epubmaker/producer.rb', line 26 def contents @contents end |
#params ⇒ Object
Parameter hash.
28 29 30 |
# File 'lib/epubmaker/producer.rb', line 28 def params @params end |
#res ⇒ Object (readonly)
Message resource object.
30 31 32 |
# File 'lib/epubmaker/producer.rb', line 30 def res @res end |
Class Method Details
.load(file) ⇒ Object
Take YAML file and return parameter hash.
33 34 35 36 37 |
# File 'lib/epubmaker/producer.rb', line 33 def Producer.load(file) raise "Can't open #{file}." if file.nil? || !File.exist?(file) loader = ReVIEW::YAMLLoader.new loader.load_file(file) end |
Instance Method Details
#call_hook(filename, *params) ⇒ Object
187 188 189 190 191 192 193 194 195 |
# File 'lib/epubmaker/producer.rb', line 187 def call_hook(filename, *params) if !filename.nil? && File.exist?(filename) && FileTest.executable?(filename) if ENV["REVIEW_SAFE_MODE"].to_i & 1 > 0 warn "hook is prohibited in safe mode. ignored." else system(filename, *params) end end end |
#colophon(wobj) ⇒ Object
Write colophon file to IO object wobj.
133 134 135 136 |
# File 'lib/epubmaker/producer.rb', line 133 def colophon(wobj) s = @epub.colophon wobj.puts s if !s.nil? && !wobj.nil? end |
#container(wobj) ⇒ Object
Write container file to IO object wobj.
112 113 114 115 |
# File 'lib/epubmaker/producer.rb', line 112 def container(wobj) s = @epub.container wobj.puts s if !s.nil? && !wobj.nil? end |
#cover(wobj) ⇒ Object
Write cover file to IO object wobj. If Producer#params is defined, it will be used for the cover image.
120 121 122 123 124 |
# File 'lib/epubmaker/producer.rb', line 120 def cover(wobj) type = (@params["epubversion"] >= 3) ? "cover" : nil s = @epub.cover(type) wobj.puts s if !s.nil? && !wobj.nil? end |
#coverimage ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/epubmaker/producer.rb', line 61 def coverimage return nil unless params["coverimage"] @contents.each do |item| if item.media.start_with?('image') && item.file =~ /#{params["coverimage"]}\Z/ # / return item.file end end return nil end |
#import_imageinfo(path, base = nil, allow_exts = nil) ⇒ Object Also known as: importImageInfo
Add informations of figure files in path to contents array. base defines a string to remove from path name.
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/epubmaker/producer.rb', line 146 def import_imageinfo(path, base=nil, allow_exts=nil) return nil unless File.exist?(path) allow_exts = @params["image_ext"] if allow_exts.nil? Dir.foreach(path) do |f| next if f.start_with?('.') if f =~ /\.(#{allow_exts.join("|")})\Z/i path.chop! if path =~ /\/\Z/ if base.nil? @contents.push(EPUBMaker::Content.new({"file" => "#{path}/#{f}"})) else @contents.push(EPUBMaker::Content.new({"file" => "#{path.sub(base + "/", '')}/#{f}"})) end end if FileTest.directory?("#{path}/#{f}") import_imageinfo("#{path}/#{f}", base) end end end |
#isbn_hyphen ⇒ Object
197 198 199 200 201 202 203 204 205 206 207 |
# File 'lib/epubmaker/producer.rb', line 197 def isbn_hyphen str = @params["isbn"].to_s if str =~ /\A\d{10}\Z/ "#{str[0..0]}-#{str[1..5]}-#{str[6..8]}-#{str[9..9]}" elsif str =~ /\A\d{13}\Z/ "#{str[0..2]}-#{str[3..3]}-#{str[4..8]}-#{str[9..11]}-#{str[12..12]}" else nil end end |
#load(file) ⇒ Object
Take YAML file and update parameter hash.
40 41 42 43 44 |
# File 'lib/epubmaker/producer.rb', line 40 def load(file) raise "Can't open #{file}." if file.nil? || !File.exist?(file) loader = ReVIEW::YAMLLoader.new merge_params(@params.deep_merge(loader.load_file(file))) end |
#merge_params(params) ⇒ Object
Update parameters by merging from new parameter hash params.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/epubmaker/producer.rb', line 72 def merge_params(params) @params.deep_merge!(params) complement unless @params["epubversion"].nil? case @params["epubversion"].to_i when 2 @epub = EPUBMaker::EPUBv2.new(self) when 3 @epub = EPUBMaker::EPUBv3.new(self) else raise "Invalid EPUB version (#{@params["epubversion"]}.)" end end if params["language"] ReVIEW::I18n.locale = params["language"] end support_legacy_maker end |
#mimetype(wobj) ⇒ Object
Write mimetype file to IO object wobj.
93 94 95 96 |
# File 'lib/epubmaker/producer.rb', line 93 def mimetype(wobj) s = @epub.mimetype wobj.print s if !s.nil? && !wobj.nil? end |
#mytoc(wobj) ⇒ Object
Write own toc file to IO object wobj.
139 140 141 142 |
# File 'lib/epubmaker/producer.rb', line 139 def mytoc(wobj) s = @epub.mytoc wobj.puts s if !s.nil? && !wobj.nil? end |
#ncx(wobj, indentarray = []) ⇒ Object
Write ncx file to IO object wobj. indentarray defines prefix string for each level.
106 107 108 109 |
# File 'lib/epubmaker/producer.rb', line 106 def ncx(wobj, indentarray=[]) s = @epub.ncx(indentarray) wobj.puts s if !s.nil? && !wobj.nil? end |
#opf(wobj) ⇒ Object
Write opf file to IO object wobj.
99 100 101 102 |
# File 'lib/epubmaker/producer.rb', line 99 def opf(wobj) s = @epub.opf wobj.puts s if !s.nil? && !wobj.nil? end |
#produce(epubfile, basedir = nil, tmpdir = nil) ⇒ Object
Produce EPUB file epubfile. basedir points the directory has contents (default: current directory.) tmpdir defines temporary directory.
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'lib/epubmaker/producer.rb', line 170 def produce(epubfile, basedir=nil, tmpdir=nil) current = Dir.pwd basedir = current if basedir.nil? _tmpdir = tmpdir.nil? ? Dir.mktmpdir : tmpdir epubfile = "#{current}/#{epubfile}" if epubfile !~ /\A\// # / # FIXME: error check File.unlink(epubfile) if File.exist?(epubfile) begin @epub.produce(epubfile, basedir, _tmpdir) ensure FileUtils.rm_r(_tmpdir) if tmpdir.nil? end end |
#titlepage(wobj) ⇒ Object
Write title file (copying) to IO object wobj.
127 128 129 130 |
# File 'lib/epubmaker/producer.rb', line 127 def titlepage(wobj) s = @epub.titlepage wobj.puts s if !s.nil? && !wobj.nil? end |