lamassu-server/lib/ofac/name-utils.js
Konstantin Mamalakis f7561acf3c done
2018-05-03 20:20:18 +03:00

31 lines
771 B
JavaScript

const doubleMetaphone = require('talisman/phonetics/double-metaphone')
const _ = require('lodash/fp')
const makePhonetic = _.flow(doubleMetaphone, _.uniq)
// Combine name-parts in a standard order.
const partOrdering = ['firstName', 'middleName', 'maidenName', 'patronymic', 'matronymic', 'lastName']
const usingPartOrder = _.flow(
_.get('partName'),
_.partialRight(_.indexOf, [partOrdering])
)
const makeFullName = _.flow(
_.sortBy(usingPartOrder),
_.map(_.get('value')),
_.join(' ')
)
const makeWords = value => {
const words = _.split(' ', value)
const phonetics = _.map(makePhonetic, words)
const pairs = _.zipAll([words, phonetics])
return _.map(_.zipObject(['value', 'phonetics']), pairs)
}
module.exports = {
makeFullName,
makeWords
}