cbeta 3.6.8 → 3.6.10

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cbeta/p5a_checker.rb +24 -1
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90b9a97e829e682047432126497a903845bc10ca8f9b66ade9df38008b2e1b22
4
- data.tar.gz: e38c3a1114e7b2f8f361a3725e43370f5d95a0f50c78c688d81ef6efb844d5d3
3
+ metadata.gz: ebf58473ff4b9b6f641d65bad3140a19c47f3d43b03815d7b2d42f4310317bba
4
+ data.tar.gz: 7f73dcd9bacbfa3e2dd5b0213fd71cfdbc571a103aa5e5fd266828c5051a633f
5
5
  SHA512:
6
- metadata.gz: cd2bfe171f5fbb67a8e9bed28378f4ab425307ce61bd308f077dc99f1f86c7e6af3bd76cbfd63b53e26d00940e6d590c771c04d78372b1e5359c038ec7212307
7
- data.tar.gz: '01598ed2759caa4659d4718ced66f32666984fab7cbb6bddb1a5f0a2fad3f5264aba454f23bddb2f0a8d8a4fd8a03e92dc668806ba22680b84228e9bfcb16d7f'
6
+ metadata.gz: 7591d299c5be9d0d15918d48d80e7c10414d3a74b38140202bda3e8040e3864a11e621884844f604b278f8564a00f94a0bdf50cabed12e9b96672f64462b4465
7
+ data.tar.gz: ffce9b2206ebe86b8dc60f25cb02730e6e905c4408025883601aeb8c56733076277dc553509a9af3b3510de26255cacf990c022cf39508a5e5dee28aeb9b0f6c
@@ -12,11 +12,14 @@ require_relative 'cbeta_share'
12
12
  # * [E07] lem 缺少 wit 屬性
13
13
  # * [E08] item 下有多個 list
14
14
  # * [E09] table cols 屬性值錯誤
15
+ # * [E10] p 不應直接出現在 list 下
15
16
  #
16
17
  # * 警告類型
17
18
  # * [W01] 夾注包夾注
18
19
  # * [W02] 出現罕用字元
20
+ # * [W03] 不應出現 TAB 字元
19
21
  class CBETA::P5aChecker
22
+ ALLOW_TAB = %w[change]
20
23
 
21
24
  # @param xml_root [String] 來源 CBETA XML P5a 路徑
22
25
  # @param figures [String] 插圖 路徑 (可由 https://github.com/cbeta-git/CBR2X-figures 取得)
@@ -84,9 +87,11 @@ class CBETA::P5aChecker
84
87
 
85
88
  def chk_text(node)
86
89
  return if node.text.strip.empty?
90
+
87
91
  if node.parent.name == 'div'
88
92
  error "[E02] 文字直接出現在 div 下, text: #{node.text.inspect}"
89
93
  end
94
+
90
95
  if node.text =~ /(\$|\{|\})/
91
96
  char = $1
92
97
 
@@ -98,6 +103,12 @@ class CBETA::P5aChecker
98
103
 
99
104
  error "[W02] 出現罕用字元: char: #{char}"
100
105
  end
106
+
107
+ if node.text.include?("\t")
108
+ unless ALLOW_TAB.include?(node.parent.name)
109
+ error "[W03] <#{node.parent.name}> 下不應出現 TAB 字元"
110
+ end
111
+ end
101
112
  end
102
113
 
103
114
  def display_errors
@@ -176,7 +187,11 @@ class CBETA::P5aChecker
176
187
  end
177
188
 
178
189
  def e_note(e)
179
- return unless e['place'] == 'inline'
190
+ unless e['place'] == 'inline'
191
+ traverse(e)
192
+ return
193
+ end
194
+
180
195
  if @element_stack.include?('inline_note')
181
196
  error "[W01] 夾注包夾注"
182
197
  end
@@ -185,6 +200,13 @@ class CBETA::P5aChecker
185
200
  @element_stack.pop
186
201
  end
187
202
 
203
+ def e_p(e)
204
+ if e.parent.name == 'list'
205
+ error "[E10] p 不應直接出現在 list 下"
206
+ end
207
+ traverse(e)
208
+ end
209
+
188
210
  def e_rdg(e)
189
211
  return if e['type'] == 'cbetaRemark'
190
212
  unless e.key?('wit')
@@ -258,6 +280,7 @@ class CBETA::P5aChecker
258
280
  when 'lb' then e_lb(e)
259
281
  when 'lem' then e_lem(e)
260
282
  when 'note' then e_note(e)
283
+ when 'p' then e_p(e)
261
284
  when 'rdg' then e_rdg(e)
262
285
  when 'table' then e_table(e)
263
286
  else traverse(e)
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: 3.6.8
4
+ version: 3.6.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ray Chou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-20 00:00:00.000000000 Z
11
+ date: 2025-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unihan2