wiki-entity
Version:
Wiki entity fetcher
77 lines (76 loc) • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.simplifySitelinks = exports.simplifyLabels = exports.simplifyDescriptions = exports.simplifyAliases = exports.simplifyEntity = void 0;
const simplify_claims_1 = require("./simplify_claims");
function simplifyEntity(lang, data, options = {}) {
const entity = { id: data.id };
if (data.pageid)
entity.pageid = data.pageid;
if (data.redirectsToId)
entity.redirectsToId = data.redirectsToId;
if (data.redirectsFromId)
entity.redirectsFromId = data.redirectsFromId;
if (options.labels !== false && data.labels) {
entity.labels = simplifyLabels(data.labels);
entity.label = entity.labels[lang];
}
if (options.descriptions !== false && data.descriptions) {
entity.description = simplifyDescriptions(data.descriptions)[lang];
if (!entity.description)
delete entity.description;
}
if (options.aliases !== false && data.aliases) {
entity.aliases = simplifyAliases(data.aliases)[lang];
if (!entity.aliases)
delete entity.aliases;
}
if (options.sitelinks !== false && data.sitelinks)
entity.sitelinks = simplifySitelinks(data.sitelinks);
if (options.claims !== false && data.claims)
entity.claims = (0, simplify_claims_1.simplifyClaims)(data.claims);
return entity;
}
exports.simplifyEntity = simplifyEntity;
function simplifyAliases(data) {
return getManyLangValue(data);
}
exports.simplifyAliases = simplifyAliases;
function simplifyDescriptions(data) {
return getLangValue(data);
}
exports.simplifyDescriptions = simplifyDescriptions;
function simplifyLabels(data) {
return getLangValue(data);
}
exports.simplifyLabels = simplifyLabels;
function simplifySitelinks(data) {
if (data) {
const result = {};
Object.keys(data).forEach((site) => {
result[site.replace(/wiki$/, "")] = data[site].title;
});
return result;
}
return null;
}
exports.simplifySitelinks = simplifySitelinks;
function getLangValue(data) {
if (data) {
const result = {};
Object.keys(data).forEach((lang) => {
result[lang] = data[lang].value;
});
return result;
}
return null;
}
function getManyLangValue(data) {
if (data) {
const result = {};
Object.keys(data).forEach((lang) => {
result[lang] = data[lang].map((item) => item.value);
});
return result;
}
return null;
}