Skip to content

Commit 85d5f44

Browse files
committed
Refactor moleculeUnparser
1 parent 5561d86 commit 85d5f44

File tree

1 file changed

+21
-24
lines changed

1 file changed

+21
-24
lines changed

src/language/unparsing/plz-utilities.ts

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,27 @@ export const moleculeUnparser =
3535
) => Either<UnserializableValueError, string>,
3636
) =>
3737
(value: Molecule): Either<UnserializableValueError, string> => {
38-
const functionExpressionResult = readFunctionExpression(value)
39-
if (!either.isLeft(functionExpressionResult)) {
40-
return unparseSugaredFunction(
41-
functionExpressionResult.value,
42-
unparseAtomOrMolecule,
43-
)
44-
} else {
45-
const applyExpressionResult = readApplyExpression(value)
46-
if (!either.isLeft(applyExpressionResult)) {
47-
return unparseSugaredApply(
48-
applyExpressionResult.value,
49-
unparseAtomOrMolecule,
50-
)
51-
} else {
52-
const lookupExpressionResult = readLookupExpression(value)
53-
if (!either.isLeft(lookupExpressionResult)) {
54-
return unparseSugaredLookup(
55-
lookupExpressionResult.value,
56-
unparseAtomOrMolecule,
57-
)
58-
} else {
59-
return unparseSugarFreeMolecule(value, unparseAtomOrMolecule)
60-
}
61-
}
38+
switch (value['0']) {
39+
case '@apply':
40+
return either.match(readApplyExpression(value), {
41+
left: _ => unparseSugarFreeMolecule(value, unparseAtomOrMolecule),
42+
right: applyExpression =>
43+
unparseSugaredApply(applyExpression, unparseAtomOrMolecule),
44+
})
45+
case '@function':
46+
return either.match(readFunctionExpression(value), {
47+
left: _ => unparseSugarFreeMolecule(value, unparseAtomOrMolecule),
48+
right: functionExpression =>
49+
unparseSugaredFunction(functionExpression, unparseAtomOrMolecule),
50+
})
51+
case '@lookup':
52+
return either.match(readLookupExpression(value), {
53+
left: _ => unparseSugarFreeMolecule(value, unparseAtomOrMolecule),
54+
right: lookupExpression =>
55+
unparseSugaredLookup(lookupExpression, unparseAtomOrMolecule),
56+
})
57+
default:
58+
return unparseSugarFreeMolecule(value, unparseAtomOrMolecule)
6259
}
6360
}
6461

0 commit comments

Comments
 (0)