@openfisca/json-model
Version:
Library to handle informations extracted in JSON or YAML format from OpenFisca parameters, variables, etc
51 lines • 6.65 kB
JavaScript
export function getRolePersonsIdKey(role) {
return role.max === undefined || role.max > 1 ? role.key_plural : role.key;
}
export function isAdultRole(role) {
return role.adult || role.adult === undefined && role.child === undefined;
}
export function isChildRole(role) {
return role.child || role.adult === undefined && role.child === undefined;
}
export function* iterFlattenedRole(role) {
if (role.subroles === undefined) {
if (role.max === undefined) {
while (true) {
yield role;
}
} else {
for (let index = 0; index < role.max; index++) {
yield role;
}
}
} else {
if (role.max === undefined) {
for (const subrole of role.subroles) {
yield* iterSubRole(subrole);
}
} else {
let index = 0;
for (const subrole of role.subroles) {
for (const subrole1 of iterSubRole(subrole)) {
if (index >= role.max) {
return;
}
yield subrole1;
index++;
}
}
}
}
}
export function* iterSubRole(subrole) {
if (subrole.max === undefined) {
while (true) {
yield subrole;
}
} else {
for (let index = 0; index < subrole.max; index++) {
yield subrole;
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRSb2xlUGVyc29uc0lkS2V5Iiwicm9sZSIsIm1heCIsInVuZGVmaW5lZCIsImtleV9wbHVyYWwiLCJrZXkiLCJpc0FkdWx0Um9sZSIsImFkdWx0IiwiY2hpbGQiLCJpc0NoaWxkUm9sZSIsIml0ZXJGbGF0dGVuZWRSb2xlIiwic3Vicm9sZXMiLCJpbmRleCIsInN1YnJvbGUiLCJpdGVyU3ViUm9sZSIsInN1YnJvbGUxIl0sInNvdXJjZXMiOlsiLi4vc3JjL2VudGl0aWVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVudGl0eSA9IEdyb3VwRW50aXR5IHwgUGVyc29uRW50aXR5XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5QmFzZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmdcbiAgaXNfcGVyc29uPzogYm9vbGVhblxuICBrZXk6IHN0cmluZ1xuICBrZXlfcGx1cmFsPzogc3RyaW5nXG4gIGxhYmVsPzogc3RyaW5nXG4gIGxhYmVsX3BsdXJhbD86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBFbnRpdHlCeUtleSA9IHsgW2tleTogc3RyaW5nXTogRW50aXR5IH1cblxuZXhwb3J0IGludGVyZmFjZSBHcm91cEVudGl0eSBleHRlbmRzIEVudGl0eUJhc2Uge1xuICBjb21wb3NpdGlvbl9sYWJlbD86IHN0cmluZ1xuICBpc19wZXJzb24/OiBmYWxzZVxuICBpc19zaW5nbGVfbGFiZWw/OiBzdHJpbmdcbiAgcm9sZXM6IFJvbGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNvbkVudGl0eSBleHRlbmRzIEVudGl0eUJhc2Uge1xuICBpc19wZXJzb246IHRydWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb2xlIGV4dGVuZHMgUm9sZUJhc2Uge1xuICBhZHVsdD86IGJvb2xlYW4gLy8gQ2FuIGFkdWx0cyBiZSBhZGRlZCB0byB0aGlzIHJvbGU/XG4gIGNoaWxkPzogYm9vbGVhbiAvLyBDYW4gY2hpbGRyZW4gYmUgYWRkZWQgdG8gdGhpcyByb2xlP1xuICBzdWJyb2xlcz86IFN1YlJvbGVbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVCYXNlIHtcbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZ1xuICBrZXk6IHN0cmluZ1xuICBrZXlfcGx1cmFsPzogc3RyaW5nXG4gIGxhYmVsPzogc3RyaW5nXG4gIG1heD86IG51bWJlclxufVxuXG50eXBlIFN1YlJvbGUgPSBSb2xlQmFzZVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um9sZVBlcnNvbnNJZEtleShyb2xlOiBSb2xlIHwgU3ViUm9sZSk6IHN0cmluZyB7XG4gIHJldHVybiByb2xlLm1heCA9PT0gdW5kZWZpbmVkIHx8IHJvbGUubWF4ID4gMSA/IHJvbGUua2V5X3BsdXJhbCEgOiByb2xlLmtleVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBZHVsdFJvbGUocm9sZTogUm9sZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcm9sZS5hZHVsdCB8fCAocm9sZS5hZHVsdCA9PT0gdW5kZWZpbmVkICYmIHJvbGUuY2hpbGQgPT09IHVuZGVmaW5lZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2hpbGRSb2xlKHJvbGU6IFJvbGUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJvbGUuY2hpbGQgfHwgKHJvbGUuYWR1bHQgPT09IHVuZGVmaW5lZCAmJiByb2xlLmNoaWxkID09PSB1bmRlZmluZWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckZsYXR0ZW5lZFJvbGUoXG4gIHJvbGU6IFJvbGUsXG4pOiBHZW5lcmF0b3I8Um9sZSB8IFN1YlJvbGUsIHZvaWQsIHVuZGVmaW5lZD4ge1xuICBpZiAocm9sZS5zdWJyb2xlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHJvbGUubWF4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHlpZWxkIHJvbGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvbGUubWF4OyBpbmRleCsrKSB7XG4gICAgICAgIHlpZWxkIHJvbGVcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHJvbGUubWF4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZvciAoY29uc3Qgc3Vicm9sZSBvZiByb2xlLnN1YnJvbGVzKSB7XG4gICAgICAgIHlpZWxkKiBpdGVyU3ViUm9sZShzdWJyb2xlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaW5kZXggPSAwXG4gICAgICBmb3IgKGNvbnN0IHN1YnJvbGUgb2Ygcm9sZS5zdWJyb2xlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHN1YnJvbGUxIG9mIGl0ZXJTdWJSb2xlKHN1YnJvbGUpKSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IHJvbGUubWF4KSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgeWllbGQgc3Vicm9sZTFcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyU3ViUm9sZShcbiAgc3Vicm9sZTogU3ViUm9sZSxcbik6IEdlbmVyYXRvcjxTdWJSb2xlLCB2b2lkLCB1bmRlZmluZWQ+IHtcbiAgaWYgKHN1YnJvbGUubWF4ID09PSB1bmRlZmluZWQpIHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgeWllbGQgc3Vicm9sZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc3Vicm9sZS5tYXg7IGluZGV4KyspIHtcbiAgICAgIHlpZWxkIHN1YnJvbGVcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBd0NBLE9BQU8sU0FBU0EsbUJBQW1CQSxDQUFDQyxJQUFvQixFQUFVO0VBQ2hFLE9BQU9BLElBQUksQ0FBQ0MsR0FBRyxLQUFLQyxTQUFTLElBQUlGLElBQUksQ0FBQ0MsR0FBRyxHQUFHLENBQUMsR0FBR0QsSUFBSSxDQUFDRyxVQUFVLEdBQUlILElBQUksQ0FBQ0ksR0FBRztBQUM3RTtBQUVBLE9BQU8sU0FBU0MsV0FBV0EsQ0FBQ0wsSUFBVSxFQUFXO0VBQy9DLE9BQU9BLElBQUksQ0FBQ00sS0FBSyxJQUFLTixJQUFJLENBQUNNLEtBQUssS0FBS0osU0FBUyxJQUFJRixJQUFJLENBQUNPLEtBQUssS0FBS0wsU0FBVTtBQUM3RTtBQUVBLE9BQU8sU0FBU00sV0FBV0EsQ0FBQ1IsSUFBVSxFQUFXO0VBQy9DLE9BQU9BLElBQUksQ0FBQ08sS0FBSyxJQUFLUCxJQUFJLENBQUNNLEtBQUssS0FBS0osU0FBUyxJQUFJRixJQUFJLENBQUNPLEtBQUssS0FBS0wsU0FBVTtBQUM3RTtBQUVBLE9BQU8sVUFBVU8saUJBQWlCQSxDQUNoQ1QsSUFBVSxFQUNrQztFQUM1QyxJQUFJQSxJQUFJLENBQUNVLFFBQVEsS0FBS1IsU0FBUyxFQUFFO0lBQy9CLElBQUlGLElBQUksQ0FBQ0MsR0FBRyxLQUFLQyxTQUFTLEVBQUU7TUFDMUIsT0FBTyxJQUFJLEVBQUU7UUFDWCxNQUFNRixJQUFJO01BQ1o7SUFDRixDQUFDLE1BQU07TUFDTCxLQUFLLElBQUlXLEtBQUssR0FBRyxDQUFDLEVBQUVBLEtBQUssR0FBR1gsSUFBSSxDQUFDQyxHQUFHLEVBQUVVLEtBQUssRUFBRSxFQUFFO1FBQzdDLE1BQU1YLElBQUk7TUFDWjtJQUNGO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsSUFBSUEsSUFBSSxDQUFDQyxHQUFHLEtBQUtDLFNBQVMsRUFBRTtNQUMxQixLQUFLLE1BQU1VLE9BQU8sSUFBSVosSUFBSSxDQUFDVSxRQUFRLEVBQUU7UUFDbkMsT0FBT0csV0FBVyxDQUFDRCxPQUFPLENBQUM7TUFDN0I7SUFDRixDQUFDLE1BQU07TUFDTCxJQUFJRCxLQUFLLEdBQUcsQ0FBQztNQUNiLEtBQUssTUFBTUMsT0FBTyxJQUFJWixJQUFJLENBQUNVLFFBQVEsRUFBRTtRQUNuQyxLQUFLLE1BQU1JLFFBQVEsSUFBSUQsV0FBVyxDQUFDRCxPQUFPLENBQUMsRUFBRTtVQUMzQyxJQUFJRCxLQUFLLElBQUlYLElBQUksQ0FBQ0MsR0FBRyxFQUFFO1lBQ3JCO1VBQ0Y7VUFDQSxNQUFNYSxRQUFRO1VBQ2RILEtBQUssRUFBRTtRQUNUO01BQ0Y7SUFDRjtFQUNGO0FBQ0Y7QUFFQSxPQUFPLFVBQVVFLFdBQVdBLENBQzFCRCxPQUFnQixFQUNxQjtFQUNyQyxJQUFJQSxPQUFPLENBQUNYLEdBQUcsS0FBS0MsU0FBUyxFQUFFO0lBQzdCLE9BQU8sSUFBSSxFQUFFO01BQ1gsTUFBTVUsT0FBTztJQUNmO0VBQ0YsQ0FBQyxNQUFNO0lBQ0wsS0FBSyxJQUFJRCxLQUFLLEdBQUcsQ0FBQyxFQUFFQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQ1gsR0FBRyxFQUFFVSxLQUFLLEVBQUUsRUFBRTtNQUNoRCxNQUFNQyxPQUFPO0lBQ2Y7RUFDRjtBQUNGIiwiaWdub3JlTGlzdCI6W119