cbeta 3.7.4 → 3.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f0582e661336f18e9018a4953c9e95fa7aee6ba7b441e8ef11195facb4b1155
4
- data.tar.gz: 454503a6c2950dda7c10dfa2b9eb3cfd4a089180060f009d97a029d9fdc4d03e
3
+ metadata.gz: a64bd3cdb40fbe26cb9150ab33c21bf0169bd71a2845913f3eb6bdb2a688e79d
4
+ data.tar.gz: 86dedd1e766dcd81275ad01bc9050d7f0eca3c4c7075c79ad81c5fb2afe4fc11
5
5
  SHA512:
6
- metadata.gz: c29bdc3b0bfdda7d06080addaf7a3fd2e89a3c86ab1f0d75c43f17ef5360f3c9ce1fcd132266145d978e0e477c9cce4f0d06516bbab6fa6b24ab6eac1c534c41
7
- data.tar.gz: b09a3fed777de98807383bd4727e5869402b6d5d0fbc3dc40a0939c706bd248b738bf9e60ea4ded57b3dbdd6e57cc926b3bd960efa101dadca0f88c8587a47f1
6
+ metadata.gz: b75c4985ad0c014b68a6bc9bf3b293914d63f638677a6afd3d5f55846ba91b68eb719bd9fcc24f8294b6430b5971c2274dddec2f79535b373eaa2716bb71ef65
7
+ data.tar.gz: 67d3f042ab24a6a8d788d385b684d8e87d59687011985a36782ecf65cd5dd76df1478626895f8bc10424464574878922fca3639c8bb5e603cd26cb0d9e3fe5a2
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,39 @@ 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
163
+ return if p1.nil? or p1.name != "note"
164
+
165
+ t1 = p1['type']
166
+ return if not %w[add orig mod].include?(t1)
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
+ return if t1 == "add"
175
+
176
+ p2 = p1.previous
177
+ return if p2.nil? or p2.name != "note" or p2["type"] != "orig"
178
+
179
+ n2 = p2['n']
180
+ if not n1.start_with?(n2)
181
+ error "[E16] app/@n 與 note/@n 不一致, app/@n: #{e['n']}, note/@n: #{n2}"
182
+ end
183
+ end
184
+
152
185
  def e_g(e)
153
186
  gid = e['ref'][1..-1]
154
187
  unless @gaijis.key? gid
@@ -198,7 +231,7 @@ class CBETA::P5aChecker
198
231
  end
199
232
 
200
233
  def e_note(e)
201
- error "[E11] note 直接出現在 div 下" if e.parent.name == 'div'
234
+ error "[E11] note 直接出現在 div 下" if e.parent.name == 'div'
202
235
  error "[E12] note 直接出現在 lg 下" if e.parent.name == 'lg'
203
236
  e_note_corresp(e) if e.key?('corresp')
204
237
 
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.6
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-31 00:00:00.000000000 Z
38
38
  dependencies:
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: unihan2
metadata.gz.sig CHANGED
Binary file