Class: CbetaEpub
- Inherits:
-
Object
- Object
- CbetaEpub
- Defined in:
- lib/cbeta_epub.rb
Overview
Convert CBETA XML P5a to EPUB
CBETA XML P5a 可由此取得: github.com/cbeta-git/xml-p5a
Instance Method Summary collapse
-
#convert_file(input_path, output_path) ⇒ Object
將某個 xml 轉為一個 EPUB.
-
#convert_folder(input_folder, output_folder) ⇒ Object
將某個資料夾下的每部作品都轉為一個對應的 EPUB。 跨冊的作品也會合成一個 EPUB。.
-
#convert_sutra(book_id, xml_files, out) ⇒ Object
將多個 xml 檔案合成一個 EPUB.
-
#initialize(temp_folder, opts = {}) ⇒ CbetaEpub
constructor
A new instance of CbetaEpub.
Constructor Details
#initialize(temp_folder, opts = {}) ⇒ CbetaEpub
Returns a new instance of CbetaEpub.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/cbeta_epub.rb', line 52 def initialize(temp_folder, opts={}) @temp_folder = temp_folder @settings = { epub_version: 3, juan_toc: true } @settings.merge!(opts) @cbeta = CBETA.new @gaijis = CBETA::Gaiji.new # 載入 unicode 1.1 字集列表 fn = File.join(DATA, 'unicode-1.1.json') json = File.read(fn) @unicode1 = JSON.parse(json) end |
Instance Method Details
#convert_file(input_path, output_path) ⇒ Object
將某個 xml 轉為一個 EPUB
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/cbeta_epub.rb', line 71 def convert_file(input_path, output_path) return false unless input_path.end_with? '.xml' @book_id = File.basename(input_path, ".xml") sutra_init handle_file(input_path) create_epub(output_path) end |
#convert_folder(input_folder, output_folder) ⇒ Object
將某個資料夾下的每部作品都轉為一個對應的 EPUB。 跨冊的作品也會合成一個 EPUB。
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/cbeta_epub.rb', line 93 def convert_folder(input_folder, output_folder) puts "convert folder: #{input_folder} to #{output_folder}" @todo = {} # 先檢視整個資料夾,哪些是要多檔合一 prepare_todo_list(input_folder, output_folder) @todo.each_pair do |k, v| convert_sutra(k, v[:xml_files], v[:epub]) end end |
#convert_sutra(book_id, xml_files, out) ⇒ Object
將多個 xml 檔案合成一個 EPUB
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/cbeta_epub.rb', line 132 def convert_sutra(book_id, xml_files, out) @book_id = book_id sutra_init xml_files.each { |f| handle_file(f) } if xml_files.size > 1 @title.sub!(/^(.*)\(.*?\)$/, '\1') @title.sub!(/^(.*?)((.*?))+$/, '\1') end create_epub(out) end |