Further simplification

This commit is contained in:
Tony Garnock-Jones 2021-05-21 16:01:04 +02:00
parent 46ab6d90ec
commit 0f1ea4aa20
1 changed files with 10 additions and 13 deletions

View File

@ -17,19 +17,16 @@ export function unconverterForDefinition(
return [seq(`return `, unconverterFor( return [seq(`return `, unconverterFor(
ctx, p.pattern, hasValueField ? `${src}.value` : src))]; ctx, p.pattern, hasValueField ? `${src}.value` : src))];
})))))]; })))))];
case 'and': { case 'and':
const ps = [def.pattern0, def.pattern1, ... def.patternN]; return [seq(`return _.merge`, parens(
const cs = ps.flatMap(p => { `(a, b) => (a === b) ? a : void 0`,
if (p._variant === 'anonymous' && p.value._variant === 'SimplePattern') { ... [def.pattern0, def.pattern1, ... def.patternN].flatMap(p => {
return []; if (p._variant === 'anonymous' && p.value._variant === 'SimplePattern') {
} else { return [];
return [unconverterForNamed(ctx, p, src)]; } else {
} return [unconverterForNamed(ctx, p, src)];
}); }
return [seq(`return `, (cs.length === 1) })))];
? cs[0]
: seq(`_.merge`, parens(`(a, b) => (a === b) ? a : void 0`, ... cs)))];
}
case 'Pattern': case 'Pattern':
return [seq(`return `, unconverterFor(ctx, def.value, `${src}`))]; return [seq(`return `, unconverterFor(ctx, def.value, `${src}`))];
} }