cbeta 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/cbeta.rb +1 -0
- data/lib/cbeta/html_to_pdf.rb +2 -2
- data/lib/cbeta/p5a_parser.rb +90 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f4f9d8df5d6d472d3cd24eab6cc0b33086d14c14
|
4
|
+
data.tar.gz: dcebae46e56c9895cd7bbcd0162161218d8b710a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e10fd20296adc40ca814984d90a3c2c23c0b5d46763f7ae80ccdd89f5b407a68014446eefa0b9671f58be315fa6af30aeddf1e01e7e8ca77072f99e4b8857ee4
|
7
|
+
data.tar.gz: 11c4590682a0f6e85b4be01e1c85a2ed19f21d38ec0881376f2903442f88c650c07a5a3910fb608c894d44a3d649b857f855dcd475cb9ede769aa8eb8cf89d75
|
data/lib/cbeta.rb
CHANGED
@@ -121,6 +121,7 @@ require 'cbeta/bm_to_text'
|
|
121
121
|
require 'cbeta/char_count'
|
122
122
|
require 'cbeta/char_freq'
|
123
123
|
require 'cbeta/html_to_pdf'
|
124
|
+
require 'cbeta/p5a_parser'
|
124
125
|
require 'cbeta/p5a_to_html'
|
125
126
|
require 'cbeta/p5a_to_html_for_every_edition'
|
126
127
|
require 'cbeta/p5a_to_html_for_pdf'
|
data/lib/cbeta/html_to_pdf.rb
CHANGED
@@ -48,9 +48,9 @@ class CBETA::HTMLToPDF
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
def
|
51
|
+
def convert_collection(c)
|
52
52
|
@series = c
|
53
|
-
puts '
|
53
|
+
puts 'convert_collection ' + c
|
54
54
|
folder = File.join(@input, @series)
|
55
55
|
Dir.foreach(folder) { |vol|
|
56
56
|
next if ['.', '..', '.DS_Store'].include? vol
|
@@ -0,0 +1,90 @@
|
|
1
|
+
class CBETA::P5aParser
|
2
|
+
|
3
|
+
# @example
|
4
|
+
#
|
5
|
+
# def handle_notes(e)
|
6
|
+
# ...
|
7
|
+
# end
|
8
|
+
#
|
9
|
+
# def traverse(e)
|
10
|
+
# e.children.each { |c| handle_nodes(c) }
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# xml_string = File.read(xml_file_name)
|
14
|
+
# parser = CBETA::P5aParser.new(xml_string, :traverse)
|
15
|
+
#
|
16
|
+
def initialize(xml_string, children_handler)
|
17
|
+
@doc = Nokogiri::XML(s)
|
18
|
+
@doc.remove_namespaces!()
|
19
|
+
@children_handler = children_handler
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param e [Nokogiri::XML::Element]
|
23
|
+
# @param mode [String] 'html' or 'text', default value: 'html'
|
24
|
+
# @return [Hash]
|
25
|
+
# * :content [String] 要放在本文中的文字, 如果 mode=='html', 那麼本文文字會包含 footnote anchor
|
26
|
+
# * :footnote_text [String] 要放在 footnote 的文字
|
27
|
+
# * :footnote_resp [String]
|
28
|
+
# * 'orig': 表示這個註解是底本的註
|
29
|
+
# * 'CBETA': 表示這個註解是 CBETA 修訂過的註
|
30
|
+
def handle_note(e, mode='html')
|
31
|
+
r = {
|
32
|
+
content: '',
|
33
|
+
footnote_resp: nil,
|
34
|
+
footnote_text: nil
|
35
|
+
}
|
36
|
+
n = e['n']
|
37
|
+
if e.has_attribute?('type')
|
38
|
+
t = e['type']
|
39
|
+
case t
|
40
|
+
when 'equivalent' then return r
|
41
|
+
when 'orig' then return handle_note_orig(e, mode)
|
42
|
+
when 'orig_biao' then return handle_note_orig(e, mode, 'biao')
|
43
|
+
when 'orig_ke' then return handle_note_orig(e, mode, 'ke')
|
44
|
+
when 'mod'
|
45
|
+
r[:footnote_resp] = 'CBETA'
|
46
|
+
r[:footnote_content] = @children_handler.call(e)
|
47
|
+
if mode == 'html'
|
48
|
+
r[:content] = "<a class='noteAnchor' href='#n#{n}'></a>"
|
49
|
+
end
|
50
|
+
return r
|
51
|
+
when 'rest' then return r
|
52
|
+
else
|
53
|
+
return r if t.start_with?('cf')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
if e.has_attribute?('resp')
|
58
|
+
return r if e['resp'].start_with? 'CBETA'
|
59
|
+
end
|
60
|
+
|
61
|
+
s = @children_handler.call(e)
|
62
|
+
r[:content] = s
|
63
|
+
if e.has_attribute?('place') && e['place']=='inline'
|
64
|
+
if mode == 'html'
|
65
|
+
r[:content] = "<span class='doube-line-note'>#{s}</span>"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
r
|
69
|
+
end
|
70
|
+
|
71
|
+
private
|
72
|
+
|
73
|
+
def handle_note_orig(e, mode, anchor_type=nil)
|
74
|
+
r = { footnote_resp: 'orig' }
|
75
|
+
n = e['n']
|
76
|
+
r[:footnote_content] = @children_handler.call(e)
|
77
|
+
|
78
|
+
if mode == 'html'
|
79
|
+
label = case anchor_type
|
80
|
+
when 'biao' then " data-label='標#{n[-2..-1]}'"
|
81
|
+
when 'ke' then " data-label='科#{n[-2..-1]}'"
|
82
|
+
else ''
|
83
|
+
end
|
84
|
+
r[:content] = "<a class='noteAnchor' href='#n#{n}'#{label}></a>"
|
85
|
+
end
|
86
|
+
|
87
|
+
r
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cbeta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ray Chou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby gem for use Chinese Buddhist Text resources made by CBETA (http://www.cbeta.org).
|
14
14
|
email: zhoubx@gmail.com
|
@@ -23,6 +23,7 @@ files:
|
|
23
23
|
- lib/cbeta/gaiji.rb
|
24
24
|
- lib/cbeta/html_to_pdf.rb
|
25
25
|
- lib/cbeta/html_to_text.rb
|
26
|
+
- lib/cbeta/p5a_parser.rb
|
26
27
|
- lib/cbeta/p5a_to_html.rb
|
27
28
|
- lib/cbeta/p5a_to_html_for_every_edition.rb
|
28
29
|
- lib/cbeta/p5a_to_html_for_pdf.rb
|