factbook
Version:
Serves as an independent data scraping module, complete with ontology and full scraping ability for the CIA World Factbook site
56 lines (55 loc) • 4 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var funktologies_1 = require("funktologies");
var getUuid = require("uuid-by-string");
var constants_1 = require("../../constants/constants");
var globalStore_1 = require("../../constants/globalStore");
function parsedThreeValStrings(origParams, dataId, hasProp, instProp, baseOntProp, storeKey, dataPropNames, country, label, delimiters, datatype) {
var objectProperties = globalStore_1.store.countries[origParams.countryId].objectProperties;
var prevHasList = objectProperties.filter(function (rel) { return rel[constants_1.consts.ONTOLOGY[hasProp]]; });
origParams.cheerioElem(dataId).each(function (index, element) {
var rawScrapedList = origParams.cheerioElem(element).find('div.category_data.subfield.numeric').text().trim().replace(/\\n/g, '');
if (rawScrapedList) {
var guid_1 = constants_1.consts.ONTOLOGY[instProp] + getUuid(country);
var val1 = rawScrapedList.substring(0, rawScrapedList.search(delimiters[0])).trim();
var val2 = rawScrapedList.substring(rawScrapedList.search(delimiters[1]), rawScrapedList.search(delimiters[2])).trim();
var val3 = rawScrapedList.substring(rawScrapedList.search(delimiters[2])).trim();
var hasPropAlready = prevHasList.some(function (p) { return p[constants_1.consts.ONTOLOGY[hasProp]]['@id'].includes(guid_1); });
if (!hasPropAlready && val1 && val2) {
var objectProp = funktologies_1.entityMaker(constants_1.consts.ONTOLOGY[hasProp], constants_1.consts.ONTOLOGY[baseOntProp], guid_1, label + " for " + country);
globalStore_1.store[storeKey][guid_1] = objectProp[constants_1.consts.ONTOLOGY[hasProp]];
if (!datatype) {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[0]]] = val1;
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[1]]] = val2;
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[2]]] = val3 || 'N/A';
}
else {
if (datatype[0] && datatype[0] === 'number') {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[0]]] = Number(val1) || null;
}
else {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[0]]] = val1;
}
if (datatype[1] && datatype[1] === 'number') {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[1]]] = Number(val2) || null;
}
else {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[1]]] = val2;
}
if (datatype[2] && datatype[2] === 'number') {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[2]]] = Number(val3) || null;
}
else {
objectProp[constants_1.consts.ONTOLOGY[hasProp]].datatypeProperties[constants_1.consts.ONTOLOGY[dataPropNames[2]]] = val3 || 'N/A';
}
}
globalStore_1.store.countries[origParams.countryId].objectProperties.push(funktologies_1.entityRefMaker(constants_1.consts.ONTOLOGY[hasProp], objectProp));
}
}
else {
return;
}
});
}
exports.parsedThreeValStrings = parsedThreeValStrings;
;
;