Commit 4e929cf
fix(particles): a tussenvoegsel after a family comma joins the family
"Beethoven, Ludwig van" is how "Ludwig van Beethoven" is filed in a
Dutch or Belgian alphabetized listing, and the trailing particle run
was read as a middle name. It now attaches to the family the comma has
already named and renders before it, so the listing and the plain
spelling agree:
Beethoven, Ludwig van -> given 'Ludwig', family 'van Beethoven'
Berg, Jan van der -> given 'Jan', family 'van der Berg'
rules.md#P6 has stated this since the 2026-08-16 keystone; both its
deviates: #379 markers come out, and its pointer moves from tracked:
to implemented:. The derived views move with the parse, which closes
the half of #130 that asked for them (family_particles 'van',
family_base 'Beethoven', where both were empty and 'Beethoven').
Keyed on the token's VOCABULARY, not its assigned role: that is what
gives P6's stated precedence over S2 its effect, since assign reads a
trailing `vd`/`mc`/`do` as a post-nominal. "Berg, Jan vd" therefore
reads family 'vd Berg' where 1.4.0 and 2.1 alike gave suffix 'vd',
which closes #380 on the same shape. The words-to-spare guard is a
piece test rather than a count, so "Nguyen, Van" keeps its only given
word.
One of 751 corpus names moves at all three baselines, and needed a
ledger rule in each. The ledger guards forced the regex to narrow: the
first draft reused the neighbouring comma rules' bare-comma pattern,
which claimed 215 names and reached two protected exclusions; the
member `des` came out too, being broad enough to match the name "Des".
Closes #379
Closes #380
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 5b1d8b6 commit 4e929cf
10 files changed
Lines changed: 346 additions & 14 deletions
File tree
- docs
- design
- nameparser/_pipeline
- tests
- v2
- tools/differential
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
80 | 80 | | |
81 | 81 | | |
82 | 82 | | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
83 | 88 | | |
84 | 89 | | |
85 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
245 | 245 | | |
246 | 246 | | |
247 | 247 | | |
248 | | - | |
249 | | - | |
250 | | - | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
256 | 256 | | |
257 | | - | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
258 | 261 | | |
259 | 262 | | |
260 | 263 | | |
261 | 264 | | |
262 | | - | |
263 | | - | |
264 | | - | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
265 | 272 | | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
266 | 285 | | |
267 | 286 | | |
268 | 287 | | |
| |||
274 | 293 | | |
275 | 294 | | |
276 | 295 | | |
277 | | - | |
| 296 | + | |
278 | 297 | | |
279 | 298 | | |
280 | 299 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
| |||
0 commit comments