cbeta 3.7.4 → 3.7.5

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
  SHA256:
3
- metadata.gz: 7f0582e661336f18e9018a4953c9e95fa7aee6ba7b441e8ef11195facb4b1155
4
- data.tar.gz: 454503a6c2950dda7c10dfa2b9eb3cfd4a089180060f009d97a029d9fdc4d03e
3
+ metadata.gz: 9c7dffb183724347beabbd63886df9961405905c17e43eea221f580bafa53827
4
+ data.tar.gz: 7d1939a6cf97f77f1a33c82632c99db714db9f22b4398a3cbb00e3d99a6a0567
5
5
  SHA512:
6
- metadata.gz: c29bdc3b0bfdda7d06080addaf7a3fd2e89a3c86ab1f0d75c43f17ef5360f3c9ce1fcd132266145d978e0e477c9cce4f0d06516bbab6fa6b24ab6eac1c534c41
7
- data.tar.gz: b09a3fed777de98807383bd4727e5869402b6d5d0fbc3dc40a0939c706bd248b738bf9e60ea4ded57b3dbdd6e57cc926b3bd960efa101dadca0f88c8587a47f1
6
+ metadata.gz: 353a3f2690b8e43b35da6561bab04d4233dd4d8d1d0760beec8d9aa4cfaa1db763e211b49df36f08b5a7c39cb6ee8d32b7ef35ecd4fec644bb19825ed76c1e77
7
+ data.tar.gz: 604886a2d51c0c2b9910b0f3c93eec74bca7ef6e5acaaed8176af16faa918bbe67211c42848420a67ba2057de1ed4d291c9ff6d7cd88c8b0e305bf5418322157
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'cbeta_share'
2
4
 
3
5
  # 檢查 CBETA XML P5a
@@ -18,6 +20,7 @@ require_relative 'cbeta_share'
18
20
  # * [E13] tt 直接出現在 lg 下
19
21
  # * [E14] <anchor type="right"> 不應直接出現在 div 或 body 下
20
22
  # * [E15] <note> corresp 無對應的 <note>
23
+ # * [E16] app/@n 與 note/@n 不一致
21
24
  #
22
25
  # * 警告類型
23
26
  # * [W01] 夾注包夾注
@@ -129,7 +132,7 @@ class CBETA::P5aChecker
129
132
  puts @errors.join("\n")
130
133
  else
131
134
  File.write(@log, @errors.join("\n"))
132
- puts "發現 #{@errors.size} 錯誤,請查看 #{@log}"
135
+ puts "\n-----\n發現 #{@errors.size} 錯誤,請查看 #{@log}"
133
136
  end
134
137
  end
135
138
 
@@ -146,9 +149,37 @@ class CBETA::P5aChecker
146
149
  error "[E03] 星號校勘 app 沒有對應的 note, corresp: #{n}"
147
150
  end
148
151
  end
152
+ e_app_n(e)
149
153
  traverse(e)
150
154
  end
151
155
 
156
+ # 以下情況,n 必須一致
157
+ # * 連續 <note type="orig"> + <note type="mod"> + <app>
158
+ # * 連續 <note type="orig"> + <app>
159
+ def e_app_n(e)
160
+ return if e["type"] == "star"
161
+
162
+ p1 = e.previous_element
163
+ return if p1.nil? or p1.name != "note"
164
+
165
+ t1 = p1['type']
166
+ return if t1 != "orig" and t1 != "mod"
167
+
168
+ n1 = p1["n"]
169
+ if not e["n"].start_with?(n1)
170
+ error "[E16] app/@n 與 note/@n 不一致, app/@n: #{e['n']}, note/@n: #{n1}"
171
+ return
172
+ end
173
+
174
+ p2 = p1.previous_element
175
+ return if p2.nil? or p2.name != "note" or p2["type"] != "orig"
176
+
177
+ n2 = p2['n']
178
+ if not n1.start_with?(n2)
179
+ error "[E16] app/@n 與 note/@n 不一致, app/@n: #{e['n']}, note/@n: #{n2}"
180
+ end
181
+ end
182
+
152
183
  def e_g(e)
153
184
  gid = e['ref'][1..-1]
154
185
  unless @gaijis.key? gid
@@ -198,7 +229,7 @@ class CBETA::P5aChecker
198
229
  end
199
230
 
200
231
  def e_note(e)
201
- error "[E11] note 直接出現在 div 下" if e.parent.name == 'div'
232
+ error "[E11] note 直接出現在 div 下" if e.parent.name == 'div'
202
233
  error "[E12] note 直接出現在 lg 下" if e.parent.name == 'lg'
203
234
  e_note_corresp(e) if e.key?('corresp')
204
235
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cbeta
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.4
4
+ version: 3.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ray Chou
@@ -34,7 +34,7 @@ cert_chain:
34
34
  xyQse8slbARanDyyT6HCYtlaKD9WYw647tkJhyY2GniloCNcOJS0URvhlulLzJYg
35
35
  9CrAxVAO2NMeM6tbxg1VjYbqopjoLCwLdAJouA==
36
36
  -----END CERTIFICATE-----
37
- date: 2026-02-25 00:00:00.000000000 Z
37
+ date: 2026-03-30 00:00:00.000000000 Z
38
38
  dependencies:
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: unihan2
metadata.gz.sig CHANGED
Binary file