cbeta 2.2.27 → 2.2.29

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cbeta.rb +1 -0
  3. data/lib/cbeta/p5a_to_html.rb +127 -127
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a41c5f9b0694c17c8b584f7ff58b0aa8fee79f6
4
- data.tar.gz: 6abcdfe1be969d9cfd62b369ed7da82cbd55ab70
3
+ metadata.gz: '0867984be6dd74892f06f72ec040506624eb0f4e'
4
+ data.tar.gz: 312247c4fe0e8fb6ab8bef2a5a19929e758f1285
5
5
  SHA512:
6
- metadata.gz: f773c9c2b6168d39e2d0678a48dc21750b4ee7ddd5cd3eaa79d8f39e5bc7ddf0d815e15b049b6d52308cc0585323313ebcbb6da02e84d56f5683c2ae0be01cbd
7
- data.tar.gz: b1ad1bf98e1966aff22e848e48454748d10cec60978d7400f59b04a206581c9d842f36f28588a6e627cc055ebecb141940b7f6880811ad77f9632e1eb0dee06c
6
+ metadata.gz: 5dc20c564c934a406571bc62e698c50efdfe3a4489fc7d8d09dea74e8e9248d74992674812e50a14b197c2722db005520cd41d7a5ca5cf2dba9cb5e78cc41ba4
7
+ data.tar.gz: e4f448fee9eafaf5e9bd0d08643f7dc654a66b44d2002be75a75ca4cd071da7a12671157a68744385e180566ebcfecb19dfe747943c90c8bdafbde624f5db14b
data/lib/cbeta.rb CHANGED
@@ -37,6 +37,7 @@ class CBETA
37
37
  # @return [String] CBETA 行首資訊,例如 "T01n0001_p0001a01" 或 "T25n1510ap0757b29"
38
38
  def self.get_linehead(file_basename, lb)
39
39
  r = file_basename
40
+ r = 'T0220' if r.start_with? 'T0220'
40
41
  r += '_' if file_basename.match(/\d$/)
41
42
  r += 'p' + lb
42
43
  r
@@ -72,7 +72,7 @@ class CBETA::P5aToHTML
72
72
  }
73
73
  end
74
74
 
75
- def handle_anchor(e)
75
+ def e_anchor(e)
76
76
  id = e['id']
77
77
  if e.has_attribute?('id')
78
78
  if id.start_with?('nkr_note_orig')
@@ -95,7 +95,7 @@ class CBETA::P5aToHTML
95
95
  ''
96
96
  end
97
97
 
98
- def handle_app(e)
98
+ def e_app(e)
99
99
  r = ''
100
100
  if e['type'] == 'star'
101
101
  c = e['corresp'][1..-1]
@@ -104,14 +104,14 @@ class CBETA::P5aToHTML
104
104
  r + traverse(e)
105
105
  end
106
106
 
107
- def handle_byline(e)
107
+ def e_byline(e)
108
108
  r = '<p class="byline">'
109
109
  r += "<span class='lineInfo' line='#{@lb}'></span>"
110
110
  r += traverse(e)
111
111
  r + '</p>'
112
112
  end
113
113
 
114
- def handle_cell(e)
114
+ def e_cell(e)
115
115
  doc = Nokogiri::XML::Document.new
116
116
  cell = doc.create_element('div')
117
117
  cell['class'] = 'bip-table-cell'
@@ -121,17 +121,7 @@ class CBETA::P5aToHTML
121
121
  to_html(cell)
122
122
  end
123
123
 
124
- def handle_collection(c)
125
- @series = c
126
- puts 'handle_collection ' + c
127
- folder = File.join(@xml_root, @series)
128
- Dir.foreach(folder) { |vol|
129
- next if ['.', '..', '.DS_Store'].include? vol
130
- handle_vol(vol)
131
- }
132
- end
133
-
134
- def handle_corr(e)
124
+ def e_corr(e)
135
125
  r = ''
136
126
  if e.parent.name == 'choice'
137
127
  sic = e.parent.at_xpath('sic')
@@ -152,7 +142,7 @@ class CBETA::P5aToHTML
152
142
  r + "<span class='cbeta'>%s</span>" % traverse(e)
153
143
  end
154
144
 
155
- def handle_div(e)
145
+ def e_div(e)
156
146
  @div_count += 1
157
147
  n = @div_count
158
148
  if e.has_attribute? 'type'
@@ -165,11 +155,11 @@ class CBETA::P5aToHTML
165
155
  end
166
156
  end
167
157
 
168
- def handle_figure(e)
158
+ def e_figure(e)
169
159
  "<p class='figure'>%s</p>" % traverse(e)
170
160
  end
171
161
 
172
- def handle_g(e, mode)
162
+ def e_g(e, mode)
173
163
  # if 有 <mapping type="unicode">
174
164
  # if 不在 Unicode Extension C, D, E 範圍裡
175
165
  # 直接採用
@@ -244,12 +234,12 @@ class CBETA::P5aToHTML
244
234
  "<a class='gaijiAnchor' href='##{gid}'>#{default}</a>"
245
235
  end
246
236
 
247
- def handle_graphic(e)
237
+ def e_graphic(e)
248
238
  url = File.basename(e['url'])
249
239
  "<span imgsrc='#{url}' class='graphic'></span>"
250
240
  end
251
241
 
252
- def handle_head(e)
242
+ def e_head(e)
253
243
  r = ''
254
244
  unless e['type'] == 'added'
255
245
  i = @open_divs.size
@@ -258,15 +248,15 @@ class CBETA::P5aToHTML
258
248
  r
259
249
  end
260
250
 
261
- def handle_item(e)
251
+ def e_item(e)
262
252
  "<li>%s</li>\n" % traverse(e)
263
253
  end
264
254
 
265
- def handle_juan(e)
255
+ def e_juan(e)
266
256
  "<p class='juan'>%s</p>" % traverse(e)
267
257
  end
268
258
 
269
- def handle_l(e)
259
+ def e_l(e)
270
260
  if @lg_type == 'abnormal'
271
261
  return traverse(e)
272
262
  end
@@ -301,13 +291,13 @@ class CBETA::P5aToHTML
301
291
  r
302
292
  end
303
293
 
304
- def handle_lb(e)
294
+ def e_lb(e)
305
295
  # 卍續藏有 X 跟 R 兩種 lb, 只處理 X
306
296
  return '' if e['ed'] != @series
307
297
 
308
298
  @char_count = 1
309
299
  @lb = e['n']
310
- line_head = CBETA.get_linehad(@sutra_no, @lb)
300
+ line_head = CBETA.get_linehead(@sutra_no, @lb)
311
301
 
312
302
  r = ''
313
303
  #if e.parent.name == 'lg' and $lg_row_open
@@ -326,7 +316,7 @@ class CBETA::P5aToHTML
326
316
  r
327
317
  end
328
318
 
329
- def handle_lem(e)
319
+ def e_lem(e)
330
320
  r = ''
331
321
  w = e['wit']
332
322
  if w.include? 'CBETA' and not w.include? @orig
@@ -343,7 +333,7 @@ class CBETA::P5aToHTML
343
333
  r
344
334
  end
345
335
 
346
- def handle_lg(e)
336
+ def e_lg(e)
347
337
  r = ''
348
338
  @lg_type = e['type']
349
339
  if @lg_type == 'abnormal'
@@ -368,11 +358,11 @@ class CBETA::P5aToHTML
368
358
  r
369
359
  end
370
360
 
371
- def handle_list(e)
361
+ def e_list(e)
372
362
  "<ul>%s</ul>" % traverse(e)
373
363
  end
374
364
 
375
- def handle_milestone(e)
365
+ def e_milestone(e)
376
366
  r = ''
377
367
  if e['unit'] == 'juan'
378
368
 
@@ -387,7 +377,7 @@ class CBETA::P5aToHTML
387
377
  r
388
378
  end
389
379
 
390
- def handle_mulu(e)
380
+ def e_mulu(e)
391
381
  r = ''
392
382
  if e['type'] == '品'
393
383
  @pass << false
@@ -396,49 +386,8 @@ class CBETA::P5aToHTML
396
386
  end
397
387
  r
398
388
  end
399
-
400
- def handle_node(e, mode)
401
- return '' if e.comment?
402
- return handle_text(e, mode) if e.text?
403
- return '' if PASS.include?(e.name)
404
- r = case e.name
405
- when 'anchor' then handle_anchor(e)
406
- when 'app' then handle_app(e)
407
- when 'byline' then handle_byline(e)
408
- when 'cell' then handle_cell(e)
409
- when 'corr' then handle_corr(e)
410
- when 'div' then handle_div(e)
411
- when 'figure' then handle_figure(e)
412
- when 'foreign' then ''
413
- when 'g' then handle_g(e, mode)
414
- when 'graphic' then handle_graphic(e)
415
- when 'head' then handle_head(e)
416
- when 'item' then handle_item(e)
417
- when 'juan' then handle_juan(e)
418
- when 'l' then handle_l(e)
419
- when 'lb' then handle_lb(e)
420
- when 'lem' then handle_lem(e)
421
- when 'lg' then handle_lg(e)
422
- when 'list' then handle_list(e)
423
- when 'mulu' then handle_mulu(e)
424
- when 'note' then handle_note(e)
425
- when 'milestone' then handle_milestone(e)
426
- when 'p' then handle_p(e)
427
- when 'rdg' then ''
428
- when 'reg' then ''
429
- when 'row' then handle_row(e)
430
- when 'sic' then ''
431
- when 'sg' then handle_sg(e)
432
- when 't' then handle_t(e)
433
- when 'tt' then handle_tt(e)
434
- when 'table' then handle_table(e)
435
- when 'unclear' then handle_unclear(e)
436
- else traverse(e)
437
- end
438
- r
439
- end
440
-
441
- def handle_note(e)
389
+
390
+ def e_note(e)
442
391
  n = e['n']
443
392
  if e.has_attribute?('type')
444
393
  t = e['type']
@@ -478,6 +427,111 @@ class CBETA::P5aToHTML
478
427
  end
479
428
  r
480
429
  end
430
+
431
+ def e_p(e)
432
+ if e.key? 'type'
433
+ r = "<p class='%s'>" % e['type']
434
+ else
435
+ r = '<p>'
436
+ end
437
+ r += "<span class='lineInfo' line='#{@lb}'></span>"
438
+ r += traverse(e)
439
+ r + '</p>'
440
+ end
441
+
442
+ def e_row(e)
443
+ "<div class='bip-table-row'>" + traverse(e) + "</div>"
444
+ end
445
+
446
+ def e_sg(e)
447
+ '(' + traverse(e) + ')'
448
+ end
449
+
450
+ def e_t(e)
451
+ if e.has_attribute? 'place'
452
+ return '' if e['place'].include? 'foot'
453
+ end
454
+ r = traverse(e)
455
+
456
+ # <tt type="app"> 不是 悉漢雙行對照
457
+ return r if @tt_type == 'app'
458
+
459
+ # 處理雙行對照
460
+ i = e.xpath('../t').index(e)
461
+ case i
462
+ when 0
463
+ return r + ' '
464
+ when 1
465
+ @next_line_buf += r + ' '
466
+ return ''
467
+ else
468
+ return r
469
+ end
470
+ end
471
+
472
+ def e_tt(e)
473
+ @tt_type = e['type']
474
+ traverse(e)
475
+ end
476
+
477
+ def e_table(e)
478
+ "<div class='bip-table'>" + traverse(e) + "</div>"
479
+ end
480
+
481
+ def e_unclear(e)
482
+ '▆'
483
+ end
484
+
485
+ def handle_collection(c)
486
+ @series = c
487
+ puts 'handle_collection ' + c
488
+ folder = File.join(@xml_root, @series)
489
+ Dir.foreach(folder) { |vol|
490
+ next if ['.', '..', '.DS_Store'].include? vol
491
+ handle_vol(vol)
492
+ }
493
+ end
494
+
495
+ def handle_node(e, mode)
496
+ return '' if e.comment?
497
+ return handle_text(e, mode) if e.text?
498
+ return '' if PASS.include?(e.name)
499
+ r = case e.name
500
+ when 'anchor' then e_anchor(e)
501
+ when 'app' then e_app(e)
502
+ when 'byline' then e_byline(e)
503
+ when 'cell' then e_cell(e)
504
+ when 'corr' then e_corr(e)
505
+ when 'div' then e_div(e)
506
+ when 'figure' then e_figure(e)
507
+ when 'foreign' then ''
508
+ when 'g' then e_g(e, mode)
509
+ when 'graphic' then e_graphic(e)
510
+ when 'head' then e_head(e)
511
+ when 'item' then e_item(e)
512
+ when 'juan' then e_juan(e)
513
+ when 'l' then e_l(e)
514
+ when 'lb' then e_lb(e)
515
+ when 'lem' then e_lem(e)
516
+ when 'lg' then e_lg(e)
517
+ when 'list' then e_list(e)
518
+ when 'mulu' then e_mulu(e)
519
+ when 'note' then e_note(e)
520
+ when 'milestone' then e_milestone(e)
521
+ when 'p' then e_p(e)
522
+ when 'rdg' then ''
523
+ when 'reg' then ''
524
+ when 'row' then e_row(e)
525
+ when 'sic' then ''
526
+ when 'sg' then e_sg(e)
527
+ when 't' then e_t(e)
528
+ when 'tt' then e_tt(e)
529
+ when 'table' then e_table(e)
530
+ when 'unclear' then e_unclear(e)
531
+ else traverse(e)
532
+ end
533
+ r
534
+ end
481
535
 
482
536
  def handle_note_orig(e, anchor_type=nil)
483
537
  n = e['n']
@@ -501,25 +555,6 @@ class CBETA::P5aToHTML
501
555
  return "<a class='noteAnchor #{c}' href='#n#{n}'#{label}></a>"
502
556
  end
503
557
 
504
- def handle_p(e)
505
- if e.key? 'type'
506
- r = "<p class='%s'>" % e['type']
507
- else
508
- r = '<p>'
509
- end
510
- r += "<span class='lineInfo' line='#{@lb}'></span>"
511
- r += traverse(e)
512
- r + '</p>'
513
- end
514
-
515
- def handle_row(e)
516
- "<div class='bip-table-row'>" + traverse(e) + "</div>"
517
- end
518
-
519
- def handle_sg(e)
520
- '(' + traverse(e) + ')'
521
- end
522
-
523
558
  def handle_sutra(xml_fn)
524
559
  puts "convert sutra #{xml_fn}"
525
560
  @back = { 0 => '' }
@@ -558,37 +593,6 @@ class CBETA::P5aToHTML
558
593
  }
559
594
  end
560
595
 
561
- def handle_t(e)
562
- if e.has_attribute? 'place'
563
- return '' if e['place'].include? 'foot'
564
- end
565
- r = traverse(e)
566
-
567
- # <tt type="app"> 不是 悉漢雙行對照
568
- return r if @tt_type == 'app'
569
-
570
- # 處理雙行對照
571
- i = e.xpath('../t').index(e)
572
- case i
573
- when 0
574
- return r + ' '
575
- when 1
576
- @next_line_buf += r + ' '
577
- return ''
578
- else
579
- return r
580
- end
581
- end
582
-
583
- def handle_tt(e)
584
- @tt_type = e['type']
585
- traverse(e)
586
- end
587
-
588
- def handle_table(e)
589
- "<div class='bip-table'>" + traverse(e) + "</div>"
590
- end
591
-
592
596
  def handle_text(e, mode)
593
597
  s = e.content().chomp
594
598
  return '' if s.empty?
@@ -607,10 +611,6 @@ class CBETA::P5aToHTML
607
611
  end
608
612
  r
609
613
  end
610
-
611
- def handle_unclear(e)
612
- '▆'
613
- end
614
614
 
615
615
  def handle_vol(vol)
616
616
  puts "convert volumn: #{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: 2.2.27
4
+ version: 2.2.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ray Chou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-13 00:00:00.000000000 Z
11
+ date: 2016-12-15 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