cbeta 2.1.5 → 2.1.6
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 +4 -4
- data/lib/cbeta/p5a_to_html_for_every_edition.rb +117 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ec72fbd4c93e57fc423a28a190984256ab7e2dc
|
4
|
+
data.tar.gz: 68977b6a4c131378cc98f7252bab67b7a511bb57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 982ff7caa25181074d1d59d6f49e42b43699cc20208c2661a443d0004845a8358a995c02a9f2135f6fd0725792a2bc29fff34dc2aaac666177d77fade2c88112
|
7
|
+
data.tar.gz: c5020c2d999986051a2c8a38f72a6ea03f62ad105019eb018096ffe4f7a746afef3eebf186e29323f7d8cf1dc0f003807b109288ce676e344d0f549d530b9a4b
|
@@ -17,7 +17,10 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
17
17
|
# 內容不輸出的元素
|
18
18
|
PASS=['back', 'teiHeader']
|
19
19
|
|
20
|
-
|
20
|
+
# 某版用字缺的符號
|
21
|
+
MISSING = '-'
|
22
|
+
|
23
|
+
private_constant :PASS, :MISSING
|
21
24
|
|
22
25
|
# @param xml_root [String] 來源 CBETA XML P5a 路徑
|
23
26
|
# @param out_root [String] 輸出 HTML 路徑
|
@@ -78,6 +81,7 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
78
81
|
@next_line_buf = ''
|
79
82
|
@notes_mod = {}
|
80
83
|
@notes_orig = {}
|
84
|
+
@notes_dila = {}
|
81
85
|
@open_divs = []
|
82
86
|
@sutra_no = File.basename(xml_fn, ".xml")
|
83
87
|
end
|
@@ -132,7 +136,7 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
132
136
|
|
133
137
|
def handle_byline(e)
|
134
138
|
r = '<p class="byline">'
|
135
|
-
r +=
|
139
|
+
r += line_info
|
136
140
|
r += traverse(e)
|
137
141
|
r + '</p>'
|
138
142
|
end
|
@@ -158,7 +162,24 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
158
162
|
end
|
159
163
|
|
160
164
|
def handle_corr(e)
|
161
|
-
|
165
|
+
r = ''
|
166
|
+
if e.parent.name == 'choice'
|
167
|
+
sic = e.parent.at_xpath('sic')
|
168
|
+
unless sic.nil?
|
169
|
+
n = @notes_dila[@juan].size + 1
|
170
|
+
r = "<a class='noteAnchor dila' href='#dila_note#{n}'></a>"
|
171
|
+
|
172
|
+
note = @orig
|
173
|
+
sic_text = traverse(sic, 'back')
|
174
|
+
if sic_text.empty?
|
175
|
+
note += MISSING
|
176
|
+
else
|
177
|
+
note += sic_text
|
178
|
+
end
|
179
|
+
@notes_dila[@juan] << "<span class='footnote dila' id='dila_note#{n}'>#{note}</span>"
|
180
|
+
end
|
181
|
+
end
|
182
|
+
r + "<r w='【CBETA】' l='#{@lb}' w='#{@char_count}'>%s</r>" % traverse(e)
|
162
183
|
end
|
163
184
|
|
164
185
|
def handle_div(e)
|
@@ -326,7 +347,7 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
326
347
|
r += "</div><!-- end of lg-row -->"
|
327
348
|
@lg_row_open = false
|
328
349
|
end
|
329
|
-
r += "<span
|
350
|
+
r += "<span \nclass='lb' id='#{line_head}'>#{line_head}</span>"
|
330
351
|
unless @next_line_buf.empty?
|
331
352
|
r += @next_line_buf
|
332
353
|
@next_line_buf = ''
|
@@ -335,6 +356,20 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
335
356
|
end
|
336
357
|
|
337
358
|
def handle_lem(e)
|
359
|
+
r = ''
|
360
|
+
content = traverse(e)
|
361
|
+
w = e['wit']
|
362
|
+
if w.include? 'CBETA' and not w.include? @orig
|
363
|
+
n = @notes_dila[@juan].size + 1
|
364
|
+
r = "<a class='noteAnchor dila' href='#dila_note#{n}'></a>"
|
365
|
+
r += "<span class='cbeta'>%s</span>" % content
|
366
|
+
r = "<r w='#{w}' l='#{@lb}'>#{r}</r>"
|
367
|
+
|
368
|
+
note = lem_note_cf(e)
|
369
|
+
note += lem_note_rdg(e)
|
370
|
+
@notes_dila[@juan] << "<span class='footnote dila' id='dila_note#{n}'>#{note}</span>"
|
371
|
+
end
|
372
|
+
|
338
373
|
# 沒有 rdg 的版本,用字同 lem
|
339
374
|
editions = Set.new @editions
|
340
375
|
e.xpath('./following-sibling::rdg').each do |rdg|
|
@@ -342,10 +377,10 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
342
377
|
editions.delete w
|
343
378
|
end
|
344
379
|
end
|
345
|
-
w = editions.to_a.join(' ')
|
346
380
|
|
347
|
-
|
348
|
-
|
381
|
+
editions.delete('【CBETA】') unless r.empty?
|
382
|
+
w = editions.to_a.join(' ')
|
383
|
+
r + ("<r w='#{w}' l='#{@lb}'>%s</r>" % content)
|
349
384
|
end
|
350
385
|
|
351
386
|
def handle_lg(e)
|
@@ -387,6 +422,7 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
387
422
|
@back_orig[@juan] = @back_orig[0]
|
388
423
|
@notes_mod[@juan] = {}
|
389
424
|
@notes_orig[@juan] = {}
|
425
|
+
@notes_dila[@juan] = []
|
390
426
|
r += "<juan #{@juan}>"
|
391
427
|
@open_divs.each { |d|
|
392
428
|
r += "<div class='div-#{d['type']}'>"
|
@@ -507,8 +543,12 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
507
543
|
end
|
508
544
|
|
509
545
|
def handle_p(e)
|
510
|
-
|
511
|
-
|
546
|
+
if e.key? 'type'
|
547
|
+
r = "<p class='%s'>" % e['type']
|
548
|
+
else
|
549
|
+
r = '<p>'
|
550
|
+
end
|
551
|
+
r += line_info
|
512
552
|
r += traverse(e)
|
513
553
|
r + '</p>'
|
514
554
|
end
|
@@ -649,17 +689,73 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
649
689
|
when '【CBETA】'
|
650
690
|
r = @back[juan_no]
|
651
691
|
@notes_mod[juan_no].each_pair do |k,v|
|
652
|
-
r += "<span class='
|
692
|
+
r += "<span class='footnote cb' id='n#{k}'>#{v}</span>\n"
|
653
693
|
end
|
694
|
+
r += @notes_dila[juan_no].join("\n")
|
654
695
|
when @orig
|
655
696
|
r = @back_orig[juan_no]
|
656
697
|
@notes_orig[juan_no].each_pair do |k,v|
|
657
|
-
r += "<span class='
|
698
|
+
r += "<span class='footnote #{@series}' id='n#{k}'>#{v}</span>\n"
|
699
|
+
end
|
700
|
+
end
|
701
|
+
r
|
702
|
+
end
|
703
|
+
|
704
|
+
def html_copyright
|
705
|
+
r = "<div id='cbeta-copyright'><p>\n"
|
706
|
+
|
707
|
+
orig = @cbeta.get_canon_nickname(@series)
|
708
|
+
v = @vol.sub(/^[A-Z]0*([^0].*)$/, '\1')
|
709
|
+
n = @sutra_no.sub(/^[A-Z]\d{2,3}n0*([^0].*)$/, '\1')
|
710
|
+
r += "【經文資訊】#{orig}第 #{v} 冊 No. #{n} #{@title}<br/>\n"
|
711
|
+
r += "【版本記錄】CBETA 電子佛典 版本日期:#{@edition_date}<br/>\n"
|
712
|
+
r += "【編輯說明】本資料庫由中華電子佛典協會(CBETA)依#{orig}所編輯<br/>\n"
|
713
|
+
|
714
|
+
r += "【原始資料】#{@contributors}<br/>\n"
|
715
|
+
r += "【其他事項】本資料庫可自由免費流通,詳細內容請參閱【中華電子佛典協會資料庫版權宣告】\n"
|
716
|
+
r += "</p></div><!-- end of cbeta-copyright -->\n"
|
717
|
+
end
|
718
|
+
|
719
|
+
def lem_note_cf(e)
|
720
|
+
# ex: T32n1670A.xml, p. 703a16
|
721
|
+
# <note type="cf1">K30n1002_p0257a01-a23</note>
|
722
|
+
refs = []
|
723
|
+
e.xpath('./note').each { |n|
|
724
|
+
if n.key?('type') and n['type'].start_with? 'cf'
|
725
|
+
s = n.content
|
726
|
+
if linehead_exist_in_cbeta(s)
|
727
|
+
s = "<span class='note_cf'>#{s}</span>"
|
728
|
+
end
|
729
|
+
refs << s
|
658
730
|
end
|
731
|
+
}
|
732
|
+
if refs.empty?
|
733
|
+
''
|
734
|
+
else
|
735
|
+
'修訂依據:' + refs.join(';') + '。'
|
659
736
|
end
|
737
|
+
end
|
738
|
+
|
739
|
+
def lem_note_rdg(lem)
|
740
|
+
r = ''
|
741
|
+
app = lem.parent
|
742
|
+
@pass << false
|
743
|
+
app.xpath('rdg').each { |rdg|
|
744
|
+
if rdg['wit'].include? @orig
|
745
|
+
s = traverse(rdg, 'back')
|
746
|
+
s = MISSING if s.empty?
|
747
|
+
r += @orig + s
|
748
|
+
end
|
749
|
+
}
|
750
|
+
@pass.pop
|
751
|
+
r += '。' unless r.empty?
|
660
752
|
r
|
661
753
|
end
|
662
754
|
|
755
|
+
def line_info
|
756
|
+
"<span class='lineInfo' line='#{@lb}'></span>"
|
757
|
+
end
|
758
|
+
|
663
759
|
def linehead_exist_in_cbeta(s)
|
664
760
|
@xml_root
|
665
761
|
corpus = s[0]
|
@@ -706,6 +802,14 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
706
802
|
@title = traverse(e, 'txt')
|
707
803
|
@title = @title.split()[-1]
|
708
804
|
|
805
|
+
e = doc.at_xpath("//editionStmt/edition/date")
|
806
|
+
abort "找不到版本日期" if e.nil?
|
807
|
+
@edition_date = e.text.sub(/\$Date: (.*?) \$$/, '\1')
|
808
|
+
|
809
|
+
e = doc.at_xpath("//projectDesc/p[@lang='zh']")
|
810
|
+
abort "找不到貢獻者" if e.nil?
|
811
|
+
@contributors = e.text
|
812
|
+
|
709
813
|
read_mod_notes(doc)
|
710
814
|
|
711
815
|
root = doc.root()
|
@@ -753,6 +857,7 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
753
857
|
text = frag.to_html
|
754
858
|
|
755
859
|
back = html_back(juan_no, ed)
|
860
|
+
copyright = html_copyright
|
756
861
|
|
757
862
|
fn = ed.sub(/^【(.*)】$/, '\1')
|
758
863
|
if fn != 'CBETA' and fn != @orig_short
|
@@ -764,7 +869,6 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
764
869
|
<html>
|
765
870
|
<head>
|
766
871
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
767
|
-
<meta name="filename" content="#{fn}" />
|
768
872
|
<title>#{@title}</title>
|
769
873
|
</head>
|
770
874
|
<body>
|
@@ -772,6 +876,7 @@ class CBETA::P5aToHTMLForEveryEdition
|
|
772
876
|
<div id='back'>
|
773
877
|
#{back}
|
774
878
|
</div>
|
879
|
+
#{copyright}
|
775
880
|
</body></html>
|
776
881
|
eos
|
777
882
|
File.write(output_path, text)
|
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.1.
|
4
|
+
version: 2.1.6
|
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-01-
|
11
|
+
date: 2016-01-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
|