@@ -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