lib/j2119/oxford.js
function breakRoleList (matcher, list) {
  const pieces = []

  const roleBreaker = XRegExp(`^an?\\s+(${matcher.roleMatcher})(,\\s+)?`)
  for (let m = list.match(roleBreaker); m !== null; m = list.match(roleBreaker)) {
    const [ consumed, matched ] = m
    pieces.push(matched)
    list = list.substring(consumed.length)
  }

  const altFinder = XRegExp(`^\\s*(and|or)\\s+an?\\s+(${matcher.roleMatcher})`)
  const altMatch = list.match(altFinder)
  if (altMatch) {
    pieces.push(altMatch[2])
  } // if ...

  return pieces
}
function breakRoleList (matcher, list) {
  const pieces = []

  const roleBreaker = XRegExp(`^an?\\s+(${matcher.roleMatcher})(,\\s+)?`)
  for (let m = list.match(roleBreaker); m !== null; m = list.match(roleBreaker)) {
    const [ consumed, matched ] = m
    pieces.push(matched)
    list = list.substring(consumed.length)
  }

  const altFinder = XRegExp(`^\\s*(and|or)\\s+an?\\s+(${matcher.roleMatcher})`)
  const altMatch = list.match(altFinder)
  if (altMatch) {
    pieces.push(altMatch[2])
  } // if ...

  return pieces
}
breakStringList