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 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