cbeta 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cbeta/p5a_to_html.rb +46 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d9f3c314b6f04464ac94f76c00b5193e7a3bea70
4
- data.tar.gz: 0eab9e6c2faa06dae62e3d2ea3e0abc9dc0a4bb6
3
+ metadata.gz: cfc12285c99810aa4898a53ba9a365067e9e2243
4
+ data.tar.gz: c72ba6cc3008b2209bf94b6461e22014418b5e85
5
5
  SHA512:
6
- metadata.gz: 0b46179de8ad84ca2a3258c86af91c7d2054953b42b4c037596f3f367e23a68a81a4c3d4293e1c63d4496cd5f2b6143047bfdbbeaf70c69c86a14efe51a20d51
7
- data.tar.gz: d6fea9409f2f5b9f801b8aa1447fd530949c5cecc6caeb3f95bf80532f5727733f6ff90a0d9381e563654f8b9284400f39894146a742ee4f66dc06f649e95d3a
6
+ metadata.gz: 58a5c617c28539e12a682b57a0d667382bd39b3aa1d0ea425984e8ab07aa384be9f3a4bbe492ed3b032c82754edc8fef09a733685028fd33ebd8c853872696a0
7
+ data.tar.gz: 5ab185de9728e68d949aeac191beb9d92ed26cb41892fa03c02b132fdd486bc1cc3b286f37a93771f2638e39dad5f6df97bca30b05fdcc9d26811a0437382468
@@ -49,10 +49,10 @@ class CBETA::P5aToHTML
49
49
  # x2h.convert('T05..T07')
50
50
  #
51
51
  # T 是大正藏的 ID, CBETA 的藏經 ID 系統請參考: http://www.cbeta.org/format/id.php
52
- def convert(arg=nil)
53
- return convert_all if arg.nil?
52
+ def convert(target=nil)
53
+ return convert_all if target.nil?
54
54
 
55
- arg.upcase!
55
+ arg = target.upcase
56
56
  if arg.size == 1
57
57
  handle_collection(arg)
58
58
  else
@@ -114,6 +114,15 @@ class CBETA::P5aToHTML
114
114
  r + '</p>'
115
115
  end
116
116
 
117
+ def handle_cell(e)
118
+ doc = Nokogiri::XML::Document.new
119
+ cell = doc.create_element('td')
120
+ cell['rowspan'] = e['rows'] if e.key? 'rows'
121
+ cell['colspan'] = e['rows'] if e.key? 'cols'
122
+ cell.inner_html = traverse(e)
123
+ cell.to_s
124
+ end
125
+
117
126
  def handle_collection(c)
118
127
  @series = c
119
128
  puts 'handle_collection ' + c
@@ -301,7 +310,12 @@ class CBETA::P5aToHTML
301
310
  r += "</div><!-- end of lg-row -->"
302
311
  @lg_row_open = false
303
312
  end
304
- r + "<span class='lb' \nid='#{line_head}'>#{line_head}</span>"
313
+ r += "<span class='lb' \nid='#{line_head}'>#{line_head}</span>"
314
+ unless @next_line_buf.empty?
315
+ r += @next_line_buf
316
+ @next_line_buf = ''
317
+ end
318
+ r
305
319
  end
306
320
 
307
321
  def handle_lem(e)
@@ -383,6 +397,7 @@ class CBETA::P5aToHTML
383
397
  when 'anchor' then handle_anchor(e)
384
398
  when 'app' then handle_app(e)
385
399
  when 'byline' then handle_byline(e)
400
+ when 'cell' then handle_cell(e)
386
401
  when 'corr' then handle_corr(e)
387
402
  when 'div' then handle_div(e)
388
403
  when 'figure' then handle_figure(e)
@@ -403,15 +418,16 @@ class CBETA::P5aToHTML
403
418
  when 'p' then handle_p(e)
404
419
  when 'rdg' then ''
405
420
  when 'reg' then ''
421
+ when 'row' then handle_row(e)
406
422
  when 'sic' then ''
407
423
  when 'sg' then handle_sg(e)
408
424
  when 't' then handle_t(e)
425
+ when 'table' then handle_table(e)
409
426
  else traverse(e)
410
427
  end
411
428
  r
412
429
  end
413
430
 
414
-
415
431
  def handle_note(e)
416
432
  n = e['n']
417
433
  if e.has_attribute?('type')
@@ -462,12 +478,16 @@ class CBETA::P5aToHTML
462
478
  r + '</p>'
463
479
  end
464
480
 
481
+ def handle_row(e)
482
+ "<tr>" + traverse(e) + "</tr>"
483
+ end
484
+
465
485
  def handle_sg(e)
466
486
  '(' + traverse(e) + ')'
467
487
  end
468
488
 
469
489
  def handle_sutra(xml_fn)
470
- puts "handle sutra #{xml_fn}"
490
+ puts "convert sutra #{xml_fn}"
471
491
  @back = { 0 => '' }
472
492
  @char_count = 1
473
493
  @dila_note = 0
@@ -476,6 +496,7 @@ class CBETA::P5aToHTML
476
496
  @juan = 0
477
497
  @lg_row_open = false
478
498
  @mod_notes = Set.new
499
+ @next_line_buf = ''
479
500
  @open_divs = []
480
501
  @sutra_no = File.basename(xml_fn, ".xml")
481
502
 
@@ -535,7 +556,23 @@ eos
535
556
  if e.has_attribute? 'place'
536
557
  return '' if e['place'].include? 'foot'
537
558
  end
538
- traverse(e)
559
+ r = traverse(e)
560
+
561
+ # 處理雙行對照
562
+ i = e.xpath('../t').index(e)
563
+ case i
564
+ when 0
565
+ return r + ' '
566
+ when 1
567
+ @next_line_buf += r + ' '
568
+ return ''
569
+ else
570
+ return r
571
+ end
572
+ end
573
+
574
+ def handle_table(e)
575
+ '<table>' + traverse(e) + "</table>"
539
576
  end
540
577
 
541
578
  def handle_text(e, mode)
@@ -558,7 +595,7 @@ eos
558
595
  end
559
596
 
560
597
  def handle_vol(vol)
561
- puts "handle volumn: #{vol}"
598
+ puts "convert volumn: #{vol}"
562
599
  if vol.start_with? 'T'
563
600
  @orig = "【大】"
564
601
  else
@@ -577,7 +614,7 @@ eos
577
614
  end
578
615
 
579
616
  def handle_vols(v1, v2)
580
- puts "handle volumns: #{v1}..#{v2}"
617
+ puts "convert volumns: #{v1}..#{v2}"
581
618
  @series = v1[0]
582
619
  folder = File.join(@xml_root, @series)
583
620
  Dir.foreach(folder) { |vol|
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: 0.0.3
4
+ version: 0.0.4
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-05-21 00:00:00.000000000 Z
11
+ date: 2015-05-22 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