@openfisca/json-model
Version:
Library to handle informations extracted in JSON or YAML format from OpenFisca parameters, variables, etc
41 lines • 9.63 kB
JavaScript
export function getVariableFormula({
formulas
}, date) {
if (formulas === undefined) {
return null;
}
for (const bestDate of Object.keys(formulas).sort().reverse()) {
if (bestDate <= date) {
return formulas[bestDate];
}
}
return null;
}
export function getVariableLatestFormulaDate({
formulas
}) {
if (formulas === undefined) {
return null;
}
const latestDate = Object.keys(formulas).sort().reverse()[0] ?? null;
return formulas[latestDate] === null ? null : latestDate;
}
export function newFormulaRepositoryUrl(metadata, formula) {
const packageName = formula.file_path.split("/")[0];
for (const packageMetadata of metadata.packages) {
if (packageMetadata.name === packageName) {
return `${packageMetadata.repository_url}/blob/${packageMetadata.version}/${formula.file_path}#L${formula.start_line_number}-L${formula.stop_line_number - 1}`;
}
}
return undefined;
}
export function newVariableRepositoryUrl(metadata, variable) {
const packageName = variable.file_path.split("/")[0];
for (const packageMetadata of metadata.packages) {
if (packageMetadata.name === packageName) {
return `${packageMetadata.repository_url}/blob/${packageMetadata.version}/${variable.file_path}#L${variable.start_line_number}-L${variable.stop_line_number - 1}`;
}
}
return undefined;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWYXJpYWJsZUZvcm11bGEiLCJmb3JtdWxhcyIsImRhdGUiLCJ1bmRlZmluZWQiLCJiZXN0RGF0ZSIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwicmV2ZXJzZSIsImdldFZhcmlhYmxlTGF0ZXN0Rm9ybXVsYURhdGUiLCJsYXRlc3REYXRlIiwibmV3Rm9ybXVsYVJlcG9zaXRvcnlVcmwiLCJtZXRhZGF0YSIsImZvcm11bGEiLCJwYWNrYWdlTmFtZSIsImZpbGVfcGF0aCIsInNwbGl0IiwicGFja2FnZU1ldGFkYXRhIiwicGFja2FnZXMiLCJuYW1lIiwicmVwb3NpdG9yeV91cmwiLCJ2ZXJzaW9uIiwic3RhcnRfbGluZV9udW1iZXIiLCJzdG9wX2xpbmVfbnVtYmVyIiwibmV3VmFyaWFibGVSZXBvc2l0b3J5VXJsIiwidmFyaWFibGUiXSwic291cmNlcyI6WyIuLi9zcmMvdmFyaWFibGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHl0aG9uQXN0RnVuY3Rpb25EZWYgfSBmcm9tIFwiLi9hc3RcIlxuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCIuL21ldGFkYXRhXCJcbmltcG9ydCB0eXBlIHsgUGVyaW9kVW5pdCB9IGZyb20gXCIuL3BlcmlvZHNcIlxuaW1wb3J0IHR5cGUgeyBSZWZlcmVuY2VzQnlJbnN0YW50IH0gZnJvbSBcIi4vcmVmZXJlbmNlc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybXVsYSB7XG4gIGFzdD86IFB5dGhvbkFzdEZ1bmN0aW9uRGVmIC8vIFJlcXVpcmVkLCBidXQgcmVtb3ZlZCBmcm9tIHZhcmlhYmxlQnlOYW1lIGZvciBjb21wYWN0bmVzc1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nXG4gIGZpbGVfcGF0aDogc3RyaW5nXG4gIHBhcmFtZXRlcnM/OiBzdHJpbmdbXVxuICBzb3VyY2VfY29kZT86IHN0cmluZyAvLyBSZXF1aXJlZCwgYnV0IHJlbW92ZWQgZnJvbSB2YXJpYWJsZUJ5TmFtZSBmb3IgY29tcGFjdG5lc3NcbiAgc3RhcnRfbGluZV9udW1iZXI6IG51bWJlclxuICBzdG9wX2xpbmVfbnVtYmVyOiBudW1iZXJcbiAgdmFyaWFibGVzPzogc3RyaW5nW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dEJ5VmFyaWFibGVOYW1lIHtcbiAgW3ZhcmlhYmxlTmFtZTogc3RyaW5nXTogVmFyaWFibGVWYWx1ZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQZXJjZW50aWxlIHtcbiAgYnVja2V0X2NvdW50OiBudW1iZXJcbiAgYnVja2V0X21lYW46IG51bWJlclxuICBidWNrZXRfc3RkZXY6IG51bWJlclxuICBidWNrZXRfc3VtOiBudW1iZXJcbiAgY291bnRfYWJvdmVfdXBwZXJfYm91bmQ6IG51bWJlclxuICBsb3dlcl9ib3VuZDogbnVtYmVyXG4gIG1lYW5fYWJvdmVfdXBwZXJfYm91bmQ6IG51bWJlclxuICByYXRpb19jb3VudF9hYm92ZV91cHBlcl9ib3VuZDogbnVtYmVyXG4gIHN1bV9hYm92ZV91cHBlcl9ib3VuZDogbnVtYmVyXG4gIHVwcGVyX2JvdW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZSB7XG4gIGFnZ3JlZ2F0ZT86IHtcbiAgICBkZWNpbGVzPzogUGVyY2VudGlsZVtdXG4gICAgeWVhcjogbnVtYmVyXG4gIH1cbiAgZGVmYXVsdF92YWx1ZTogVmFyaWFibGVWYWx1ZVxuICBkZWZpbml0aW9uX3BlcmlvZDogUGVyaW9kVW5pdFxuICBkZXNjcmlwdGlvbj86IFJlZmVyZW5jZXNCeUluc3RhbnRcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZ1xuICBlbnRpdHk6IHN0cmluZyAvLyBGb3IgRnJhbmNlOiBcImZhbWlsbGVcIiB8IFwiZm95ZXJfZmlzY2FsXCIgfCBcImluZGl2aWR1XCIgfCBcIm1lbmFnZVwiXG4gIGZpbGVfcGF0aDogc3RyaW5nXG4gIGZvcm11bGFzPzogeyBbZGF0ZTogc3RyaW5nXTogRm9ybXVsYSB8IG51bGwgfVxuICAvLy8gVHJ1ZSB3aGVuIHZhcmlhYmxlIHZhcmlhYmxlIGlzIHVzZWQgYXMgYSBpbnB1dCB2YXJpYWJsZVxuICAvLy8gZGVzcGl0ZSBoYXZpbmcgZm9ybXVsYXNcbiAgaW5wdXQ/OiBib29sZWFuXG4gIGxhYmVsPzogc3RyaW5nXG4gIGxhc3RfdmFsdWVfc3RpbGxfdmFsaWRfb24/OiBzdHJpbmdcbiAgLy8vIFRoZSBuYW1lcyBvZiB0aGUgKGluZGlyZWN0KSBpbnB1dCB2YXJpYWJsZXMgdGhhdCBhcmUgbm90IGFkZGVkIGluIHRoZSBmb3JtdWxhLlxuICAvLy8gRm9yIGV4YW1wbGUgXCJwYXJ0IGRlIHF1b3RpZW50IGZhbWlsaWFsXCIgb3IgXCJyZXZlbnUgZmlzY2FsIGRlIHLDqWbDqXJlbmNlXCIgYXJlXG4gIC8vLyB1c2VkIHRvIGNhbGN1bGF0ZSBcImltcMO0dCBzdXIgbGUgcmV2ZW51XCIgYnV0IGFyZSBub3QgYWRkZWQuXG4gIC8vLyBUaGVzZSB2YXJpYWJsZXMgYXJlIGhpZ2hsaWdodGVkIGluIFVJLlxuICBsaW5rZWRfb3RoZXJfdmFyaWFibGVzPzogc3RyaW5nW11cbiAgbmFtZTogc3RyaW5nXG4gIC8vLyBUcnVlIHdoZW4gbGF0ZXN0IGZvcm11bGEgb2YgdmFyaWFibGUgbmVlZHMgdG8gYmUgdXBkYXRlZCBvciBzZXQgdG8gbnVsbFxuICAvLy8gb3IuLi5cbiAgb2Jzb2xldGU/OiBib29sZWFuXG4gIHBvc3NpYmxlX3ZhbHVlcz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9XG4gIHJlZmVyZW5jZT86IFJlZmVyZW5jZXNCeUluc3RhbnRcbiAgcmVmZXJyaW5nX3ZhcmlhYmxlcz86IHN0cmluZ1tdXG4gIHNldF9pbnB1dD86IHN0cmluZ1xuICBzdGFydF9saW5lX251bWJlcjogbnVtYmVyXG4gIHN0b3BfbGluZV9udW1iZXI6IG51bWJlclxuICAvLy8gVW5pdCBhZGRlZCBieSBjdXN0b21pemF0aW9ucyBvciBkZWNvbXBvc2l0aW9uc1xuICAvLy8gVXNlZCB3aGVuIHZhcmlhYmxlIGhhcyBhIFwiZmxvYXRcIiB2YWx1ZV90eXBlLlxuICB1bml0Pzogc3RyaW5nXG4gIC8vLyBTaG9ydCBsYWJlbCBvZiB2YXJpYWJsZVxuICBzaG9ydF9sYWJlbD86IHN0cmluZ1xuICB2YWx1ZV90eXBlOiBcImJvb2xcIiB8IFwiZGF0ZVwiIHwgXCJFbnVtXCIgfCBcImZsb2F0XCIgfCBcImludFwiIHwgXCJzdHJcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlQnlOYW1lIHtcbiAgW25hbWU6IHN0cmluZ106IFZhcmlhYmxlXG59XG5cbmV4cG9ydCB0eXBlIFZhcmlhYmxlVmFsdWUgPSBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nXG5cbmV4cG9ydCB0eXBlIFZhcmlhYmxlVmFsdWVzID0gYm9vbGVhbltdIHwgbnVtYmVyW10gfCBzdHJpbmdbXVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFyaWFibGVGb3JtdWxhKFxuICB7IGZvcm11bGFzIH06IFZhcmlhYmxlLFxuICBkYXRlOiBzdHJpbmcsXG4pOiBGb3JtdWxhIHwgbnVsbCB7XG4gIGlmIChmb3JtdWxhcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBmb3IgKGNvbnN0IGJlc3REYXRlIG9mIE9iamVjdC5rZXlzKGZvcm11bGFzKS5zb3J0KCkucmV2ZXJzZSgpKSB7XG4gICAgaWYgKGJlc3REYXRlIDw9IGRhdGUpIHtcbiAgICAgIHJldHVybiBmb3JtdWxhc1tiZXN0RGF0ZV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhcmlhYmxlTGF0ZXN0Rm9ybXVsYURhdGUoe1xuICBmb3JtdWxhcyxcbn06IFZhcmlhYmxlKTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChmb3JtdWxhcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBsYXRlc3REYXRlID0gT2JqZWN0LmtleXMoZm9ybXVsYXMpLnNvcnQoKS5yZXZlcnNlKClbMF0gPz8gbnVsbFxuICByZXR1cm4gZm9ybXVsYXNbbGF0ZXN0RGF0ZV0gPT09IG51bGwgPyBudWxsIDogbGF0ZXN0RGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3Rm9ybXVsYVJlcG9zaXRvcnlVcmwoXG4gIG1ldGFkYXRhOiBNZXRhZGF0YSxcbiAgZm9ybXVsYTogRm9ybXVsYSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhY2thZ2VOYW1lID0gZm9ybXVsYS5maWxlX3BhdGguc3BsaXQoXCIvXCIpWzBdXG4gIGZvciAoY29uc3QgcGFja2FnZU1ldGFkYXRhIG9mIG1ldGFkYXRhLnBhY2thZ2VzKSB7XG4gICAgaWYgKHBhY2thZ2VNZXRhZGF0YS5uYW1lID09PSBwYWNrYWdlTmFtZSkge1xuICAgICAgcmV0dXJuIGAke3BhY2thZ2VNZXRhZGF0YS5yZXBvc2l0b3J5X3VybH0vYmxvYi8ke1xuICAgICAgICBwYWNrYWdlTWV0YWRhdGEudmVyc2lvblxuICAgICAgfS8ke2Zvcm11bGEuZmlsZV9wYXRofSNMJHtmb3JtdWxhLnN0YXJ0X2xpbmVfbnVtYmVyfS1MJHtcbiAgICAgICAgZm9ybXVsYS5zdG9wX2xpbmVfbnVtYmVyIC0gMVxuICAgICAgfWBcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3VmFyaWFibGVSZXBvc2l0b3J5VXJsKFxuICBtZXRhZGF0YTogTWV0YWRhdGEsXG4gIHZhcmlhYmxlOiBWYXJpYWJsZSxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBhY2thZ2VOYW1lID0gdmFyaWFibGUuZmlsZV9wYXRoLnNwbGl0KFwiL1wiKVswXVxuICBmb3IgKGNvbnN0IHBhY2thZ2VNZXRhZGF0YSBvZiBtZXRhZGF0YS5wYWNrYWdlcykge1xuICAgIGlmIChwYWNrYWdlTWV0YWRhdGEubmFtZSA9PT0gcGFja2FnZU5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtwYWNrYWdlTWV0YWRhdGEucmVwb3NpdG9yeV91cmx9L2Jsb2IvJHtcbiAgICAgICAgcGFja2FnZU1ldGFkYXRhLnZlcnNpb25cbiAgICAgIH0vJHt2YXJpYWJsZS5maWxlX3BhdGh9I0wke3ZhcmlhYmxlLnN0YXJ0X2xpbmVfbnVtYmVyfS1MJHtcbiAgICAgICAgdmFyaWFibGUuc3RvcF9saW5lX251bWJlciAtIDFcbiAgICAgIH1gXG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBaUZBLE9BQU8sU0FBU0Esa0JBQWtCQSxDQUNoQztFQUFFQztBQUFtQixDQUFDLEVBQ3RCQyxJQUFZLEVBQ0k7RUFDaEIsSUFBSUQsUUFBUSxLQUFLRSxTQUFTLEVBQUU7SUFDMUIsT0FBTyxJQUFJO0VBQ2I7RUFDQSxLQUFLLE1BQU1DLFFBQVEsSUFBSUMsTUFBTSxDQUFDQyxJQUFJLENBQUNMLFFBQVEsQ0FBQyxDQUFDTSxJQUFJLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxFQUFFO0lBQzdELElBQUlKLFFBQVEsSUFBSUYsSUFBSSxFQUFFO01BQ3BCLE9BQU9ELFFBQVEsQ0FBQ0csUUFBUSxDQUFDO0lBQzNCO0VBQ0Y7RUFDQSxPQUFPLElBQUk7QUFDYjtBQUVBLE9BQU8sU0FBU0ssNEJBQTRCQSxDQUFDO0VBQzNDUjtBQUNRLENBQUMsRUFBaUI7RUFDMUIsSUFBSUEsUUFBUSxLQUFLRSxTQUFTLEVBQUU7SUFDMUIsT0FBTyxJQUFJO0VBQ2I7RUFDQSxNQUFNTyxVQUFVLEdBQUdMLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDTCxRQUFRLENBQUMsQ0FBQ00sSUFBSSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJO0VBQ3BFLE9BQU9QLFFBQVEsQ0FBQ1MsVUFBVSxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksR0FBR0EsVUFBVTtBQUMxRDtBQUVBLE9BQU8sU0FBU0MsdUJBQXVCQSxDQUNyQ0MsUUFBa0IsRUFDbEJDLE9BQWdCLEVBQ0k7RUFDcEIsTUFBTUMsV0FBVyxHQUFHRCxPQUFPLENBQUNFLFNBQVMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNuRCxLQUFLLE1BQU1DLGVBQWUsSUFBSUwsUUFBUSxDQUFDTSxRQUFRLEVBQUU7SUFDL0MsSUFBSUQsZUFBZSxDQUFDRSxJQUFJLEtBQUtMLFdBQVcsRUFBRTtNQUN4QyxPQUFPLEdBQUdHLGVBQWUsQ0FBQ0csY0FBYyxTQUN0Q0gsZUFBZSxDQUFDSSxPQUFPLElBQ3JCUixPQUFPLENBQUNFLFNBQVMsS0FBS0YsT0FBTyxDQUFDUyxpQkFBaUIsS0FDakRULE9BQU8sQ0FBQ1UsZ0JBQWdCLEdBQUcsQ0FBQyxFQUM1QjtJQUNKO0VBQ0Y7RUFDQSxPQUFPcEIsU0FBUztBQUNsQjtBQUVBLE9BQU8sU0FBU3FCLHdCQUF3QkEsQ0FDdENaLFFBQWtCLEVBQ2xCYSxRQUFrQixFQUNFO0VBQ3BCLE1BQU1YLFdBQVcsR0FBR1csUUFBUSxDQUFDVixTQUFTLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDcEQsS0FBSyxNQUFNQyxlQUFlLElBQUlMLFFBQVEsQ0FBQ00sUUFBUSxFQUFFO0lBQy9DLElBQUlELGVBQWUsQ0FBQ0UsSUFBSSxLQUFLTCxXQUFXLEVBQUU7TUFDeEMsT0FBTyxHQUFHRyxlQUFlLENBQUNHLGNBQWMsU0FDdENILGVBQWUsQ0FBQ0ksT0FBTyxJQUNyQkksUUFBUSxDQUFDVixTQUFTLEtBQUtVLFFBQVEsQ0FBQ0gsaUJBQWlCLEtBQ25ERyxRQUFRLENBQUNGLGdCQUFnQixHQUFHLENBQUMsRUFDN0I7SUFDSjtFQUNGO0VBQ0EsT0FBT3BCLFNBQVM7QUFDbEIiLCJpZ25vcmVMaXN0IjpbXX0=