Skip to content

Mc Donald and Ste Marie read the particle as the given name #360

Description

@derek73

Two abbreviation particles are in the may-be-given half of the particle vocabulary, so a name that opens with one is read as having a given name:

Mc Donald    given='Mc'   family='Donald'   ambiguity: particle-or-given
Ste Marie    given='Ste'  family='Marie'    ambiguity: particle-or-given

Both should give the whole name as the surname (family='Mc Donald', family='Ste Marie'), which is what membership in NON_GIVEN_NAME_PARTICLES produces. Neither Mc nor Ste is a standalone given name in any culture — they are contractions of Mac and Sainte.

Note this is the default name order, so it is a live misparse today, independent of #359.

Three words, three different answers

Raised as "mc, st and ste have no vowels so cannot be given names". Measured, the vowel heuristic is a good instinct but not the actual criterion:

  • mc — move it. Live misparse above. It is also in SUFFIX_ACRONYMS (MC, Master of Ceremonies), but that is trailing position and unaffected: John Smith MC still gives suffix='MC'.
  • ste — move it. Live misparse above, and it has a vowel — so the criterion that actually works is "abbreviation of a word that is never itself a name", not the vowel shape.
  • st — moving it changes nothing. st is in TITLES, and title handling consumes a leading match before particle logic runs:
    St Clair    title='St'  given=''  family='Clair'
    
    Mid-name is already correct (Jean St Clair -> family='St Clair'). Whether title='St' is the right reading for a leading St is a separate question worth its own issue if anyone cares.
  • mac — leave it. Same shape as mc, but Mac is a real given name, so it belongs in the may-be-given half. This is the case that shows the vowel test is doing real work.

Joined spellings are single tokens and unaffected either way (McDonald, StClair).

The wider question behind it

Only 9 of the 39 may-be-given members were ever individually justified in the NON_GIVEN_NAME_PARTICLES docstring: al, van, von, della, di, del, da, vander, abu. The other 27 are there by the docstring's stated conservative default — "When unsure, leave a word out: a missing member just means that name is not auto-fixed, whereas a wrong member misparses a real person."

So the split was never exhaustively curated, and mc/ste are not a one-off oversight so much as the first two cases anyone has looked at closely.

Same-shape candidates worth examining: aan, aen, heer, freiherr, freiherrin, te, tho, thoe, vel, vande.

Words in that list that genuinely ARE given names and must stay put: bar (Bar Refaeli — the docstring's own Hebrew note cites exactly this), le, do, bin, mac.

The evidence standard is the docstring's: a wrong never-given member misparses a real person, a missing one merely leaves a name un-auto-fixed. So each word needs a reason to move, not an absence of a reason to stay.

Scope note

This changes default-order parsing, which is a wider blast radius than #359 (which only affects name_order=FAMILY_FIRST). Worth its own commit and its own tools/differential run so the numbers attribute to a cause rather than arriving as one lump.

Split out of #359 to keep that PR scoped.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions