cbeta 2.0.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|