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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff4869a9d67955fc89ddd9c5f6f8e88db19f598d
4
- data.tar.gz: 716234a36f10298fa572d6c7fac10115316918ce
3
+ metadata.gz: f4f9d8df5d6d472d3cd24eab6cc0b33086d14c14
4
+ data.tar.gz: dcebae46e56c9895cd7bbcd0162161218d8b710a
5
5
  SHA512:
6
- metadata.gz: 64cf5990e9579b23e70a861696862afaafb8738e30819cb3617e92b23a54753e33542a41a0473b7368a5cd1752ec517b9ab84a8bd9da3e017c9e901918825857
7
- data.tar.gz: b42dadbd97ceb255e1300231b4f43148e1eebcce2c17a837ed91535ea6c9eed3e66021d3298770c698c1fe2520d3d9c5e723f39f301af7113fb119e71c94770f
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'
@@ -48,9 +48,9 @@ class CBETA::HTMLToPDF
48
48
  end
49
49
  end
50
50
 
51
- def handle_collection(c)
51
+ def convert_collection(c)
52
52
  @series = c
53
- puts 'handle_collection ' + c
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.0.0
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-16 00:00:00.000000000 Z
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