Class: CBETA::P5aToEPUB
- Inherits:
-
Object
- Object
- CBETA::P5aToEPUB
- Defined in:
- lib/cbeta/p5a_to_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 = {}) ⇒ P5aToEPUB
constructor
A new instance of P5aToEPUB.
Constructor Details
#initialize(temp_folder, opts = {}) ⇒ P5aToEPUB
Returns a new instance of P5aToEPUB.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/cbeta/p5a_to_epub.rb', line 50 def initialize(temp_folder, opts={}) @temp_folder = temp_folder @settings = { epub_version: 3 } @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
68 69 70 71 72 73 74 75 76 77 |
# File 'lib/cbeta/p5a_to_epub.rb', line 68 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。
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/cbeta/p5a_to_epub.rb', line 90 def convert_folder(input_folder, 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
128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/cbeta/p5a_to_epub.rb', line 128 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 |