Feature: Parse a list of names

As a hacker who works with Namae
I want to be able to parse multiple names in a list

@list
Scenario: A list of names separated by 'and'
  When I parse the names "Plato and Archimedes and Publius Ovidius Naso"
  Then there should be 3 names
  And the names should be:
    | given           | family |
    | Plato           |        |
    | Archimedes      |        |
    | Publius Ovidius | Naso   |

@list
Scenario: A list of sort-order names separated by commas
  When I parse the names "Kernighan, Brian, Ritchie, Dennis, Knuth, Donald"
  Then there should be 3 names
  And the names should be:
    | given  | family    |
    | Brian  | Kernighan |
    | Dennis | Ritchie   |
    | Donald | Knuth     |
  Given a parser that prefers commas as separators
  When I parse the names "Kernighan, Brian, Ritchie, Dennis, Knuth, Donald"
  Then there should be 3 names
  And the names should be:
    | given  | family    |
    | Brian  | Kernighan |
    | Dennis | Ritchie   |
    | Donald | Knuth     |

@list
Scenario: A list of names separated by semicolons
  When I parse the names "John D. Smith; Jack R. Johnson; Emily Tanner"
  Then there should be 3 names
  And the names should be:
    | given   | family  |
    | John D. | Smith   |
    | Jack R. | Johnson |
    | Emily   | Tanner  |
  When I parse the names "Smith, John D.; Johnson, Jack R.; Tanner, Emily"
  Then there should be 3 names
  And the names should be:
    | given   | family  |
    | John D. | Smith   |
    | Jack R. | Johnson |
    | Emily   | Tanner  |

@list
Scenario: A list of sort-order names with initials separated by commas
  When I parse the names "Kernighan, B., Ritchie, D., Knuth, D."
  Then there should be 3 names
  And the names should be:
    | given  | family    |
    | B.     | Kernighan |
    | D.     | Ritchie   |
    | D.     | Knuth     |

@list
Scenario: A list of mixed names separated by commas and 'and'
  When I parse the names "Kernighan, Brian, Ritchie, Dennis and Donald Knuth"
  Then there should be 3 names
  And the names should be:
    | given  | family    |
    | Brian  | Kernighan |
    | Dennis | Ritchie   |
    | Donald | Knuth     |

@list
Scenario: A list of mixed names separated by semicolons, commas and 'and'
  Given a parser that prefers commas as separators
  When I parse the names "John D. Smith, Jack R. Johnson & Emily Tanner"
  Then there should be 3 names
  And the names should be:
    | given   | family  |
    | John D. | Smith   |
    | Jack R. | Johnson |
    | Emily   | Tanner  |
  When I parse the names "C. Foster; C. Hamel, C. Desroches"
  Then there should be 3 names
  And the names should be:
    | given | family    |
    | C.    | Foster    |
    | C.    | Hamel     |
    | C.    | Desroches |

@list
Scenario: A list of display-order names separated by commas and 'and'
  Given a parser that prefers commas as separators
  When I parse the names "Brian Kernighan, Dennis Ritchie, and Donald Knuth"
  Then there should be 3 names
  And the names should be:
    | given  | family    |
    | Brian  | Kernighan |
    | Dennis | Ritchie   |
    | Donald | Knuth     |

@list @wip
Scenario: A list of names separated by commas
  Given a parser that prefers commas as separators
  When I parse the names "G. Proctor, M. Cooper, P. Sanders & B. Malcom"
  Then the names should be:
    | given | family  |
    | G.    | Proctor |
    | M.    | Cooper  |
    | P.    | Sanders |
    | B.    | Malcom  |
  When I parse the names "G Proctor, M Cooper, PJ Sanders & B Malcom"
  Then the names should be:
    | given | family  |
    | G     | Proctor |
    | M     | Cooper  |
    | PJ    | Sanders |
    | B     | Malcom  |

Scenario: A list of names with particles separated by commas
  Given I want to include particles in the family name
  And a parser that prefers commas as separators
  When I parse the names "Di Proctor, M., von Cooper, P."
  Then the names should be:
    | given | family     |
    | M.    | Di Proctor |
    | P.    | von Cooper |
  When I parse the names "Di Proctor, M, von Cooper, P"
  Then the names should be:
    | given | family     |
    | M     | Di Proctor |
    | P     | von Cooper |

Scenario: A list of names with two consecutive accented characters
  Given I want to include particles in the family name
  And a parser that prefers commas as separators
  When I parse the names "Çakıroğlu, Ü., Başıbüyük, B."
  Then the names should be:
    | given | family     |
    | Ü.    | Çakıroğlu  |
    | B.    | Başıbüyük  |