# frozen_string_literal: true # # Copyright 2013 whiteleaf. All rights reserved. # module Device::Ibunko PHYSICAL_SUPPORT = false VOLUME_NAME = nil DOCUMENTS_PATH_LIST = nil EBOOK_FILE_EXT = ".zip" NAME = "iBunko" DISPLAY_NAME = "i文庫" RELATED_VARIABLES = { "default.enable_half_indent_bracket" => false } # # i文庫用にテキストと挿絵ファイルをzipアーカイブ化する # def hook_convert_txt_to_ebook_file(&original_func) return false if @options["no-zip"] require "zip" Zip.unicode_names = true # TODO: テキストファイル変換時もsettingを取れるようにする setting = {} if @novel_data setting = NovelSetting.load(@novel_data["id"], @options["ignore-force"], @options["ignore-default"]) end dirpath = File.dirname(@converted_txt_path) translate_illust_chuki_to_img_tag zipfile_path = @converted_txt_path.sub(/.txt$/, @device.ebook_file_ext) File.delete(zipfile_path) if File.exist?(zipfile_path) Zip::File.open(zipfile_path, Zip::File::CREATE) do |zip| zip.add(File.basename(@converted_txt_path), @converted_txt_path) # 挿絵 if setting["enable_illust"] illust_dirpath = File.join(dirpath, Illustration::ILLUST_DIR) if File.exist?(illust_dirpath) Dir.glob(File.join(illust_dirpath, "*")) do |img_path| zip.add(File.join(Illustration::ILLUST_DIR, File.basename(img_path)), img_path) end end end # 表紙画像 cover_name = NovelConverter.get_cover_filename(dirpath) if cover_name zip.add(cover_name, File.join(dirpath, cover_name)) end end puts File.basename(zipfile_path) + " を出力しました" puts "#{@device.display_name}用ファイルを出力しました".termcolor if Narou.economy?("cleanup_temp") && @argument_target_type == :novel # 作業用ファイルを削除 FileUtils.rm_f(@converted_txt_path) end zipfile_path end # # 挿絵注記をimgタグに変換する # def translate_illust_chuki_to_img_tag data = File.read(@converted_txt_path, encoding: Encoding::UTF_8) data.gsub!(/[#挿絵((.+?))入る]/, "") File.write(@converted_txt_path, data) end end