Skip to content

Instantly share code, notes, and snippets.

@alexmachina
Created September 20, 2019 16:52
Show Gist options
  • Save alexmachina/80a9d34ae2f5e4270f5dc7bc1bfe334d to your computer and use it in GitHub Desktop.
Save alexmachina/80a9d34ae2f5e4270f5dc7bc1bfe334d to your computer and use it in GitHub Desktop.
const fs = require("fs");
const {
cond,
T,
equals,
always,
omit,
evolve,
merge,
compose,
identity
} = require("ramda");
const { parsePhoneNumberFromString } = require("libphonenumber-js");
const transform = entry => {
const transformGender = cond([
[equals("male"), always("M")],
[equals("female"), always("F")],
[T, identity]
]);
const omitAge = omit(["age"]);
const removeOldPhoneFields = omit(["phone", "cell"]);
const addNewPhoneFields = merge({
telephoneNumbers: [parsePhoneNumberFromString(entry.phone, "BR").number],
mobileNumbers: [parsePhoneNumberFromString(entry.cell, "BR").number]
});
const transformGenderAndOmitAge = evolve({
gender: transformGender,
dob: omitAge,
registered: omitAge
});
const transformEntry = compose(
transformGenderAndOmitAge,
removeOldPhoneFields,
addNewPhoneFields
);
return transformEntry(entry);
};
const inputPath = __dirname + "/input.json";
const json = fs.readFileSync(inputPath, "utf-8");
const { results } = JSON.parse(json);
const normalized = results.map(transform);
console.log(normalized);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment