1
1
import { nullableAsArray , throwError } from "../../misc/misc.ts" ;
2
- import { ArrayResult } from "../compound.ts" ;
2
+ import { IterableResult } from "../compound.ts" ;
3
3
import * as TokiPona from "../parser/ast.ts" ;
4
4
import * as English from "./ast.ts" ;
5
5
import { FilteredError , TranslationTodoError } from "./error.ts" ;
@@ -71,7 +71,7 @@ function phraseClause(phrases: TokiPona.MultiplePhrases) {
71
71
} ) ;
72
72
}
73
73
function liClause ( clause : TokiPona . Clause & { type : "li clause" } ) {
74
- return ArrayResult . combine (
74
+ return IterableResult . combine (
75
75
multiplePhrasesAsNoun ( {
76
76
phrases : clause . subjects ,
77
77
place : "subject" ,
@@ -134,27 +134,25 @@ function oClause(clause: TokiPona.Clause & { type: "o clause" }) {
134
134
includeGerund : true ,
135
135
andParticle : "en" ,
136
136
} )
137
- : new ArrayResult ( [
138
- {
139
- type : "simple" ,
140
- determiner : [ ] ,
141
- adjective : [ ] ,
142
- noun : noEmphasis ( "you" ) ,
143
- quantity : "plural" ,
144
- perspective : "second" ,
145
- postAdjective : null ,
146
- postCompound : null ,
147
- preposition : [ ] ,
148
- emphasis : false ,
149
- } ,
150
- ] ) ;
151
- return ArrayResult . combine ( subject , predicate ( clause . predicates , "o" ) )
137
+ : IterableResult . single ( {
138
+ type : "simple" ,
139
+ determiner : [ ] ,
140
+ adjective : [ ] ,
141
+ noun : noEmphasis ( "you" ) ,
142
+ quantity : "plural" ,
143
+ perspective : "second" ,
144
+ postAdjective : null ,
145
+ postCompound : null ,
146
+ preposition : [ ] ,
147
+ emphasis : false ,
148
+ } ) ;
149
+ return IterableResult . combine ( subject , predicate ( clause . predicates , "o" ) )
152
150
. flatMap ( ( [ subject , predicate ] ) => {
153
151
const subjectPerspective = perspective ( subject ) ;
154
- return ArrayResult . concat (
152
+ return IterableResult . concat (
155
153
verb ( predicate , subjectPerspective , subject . quantity )
156
154
. map ( ( verb ) => iWish ( subject , verb ) ) ,
157
- ArrayResult . from ( ( ) =>
155
+ IterableResult . from ( ( ) =>
158
156
verb (
159
157
addModalToAll (
160
158
noAdverbs ( noEmphasis ( "should" ) ) ,
@@ -173,7 +171,9 @@ function oClause(clause: TokiPona.Clause & { type: "o clause" }) {
173
171
) ;
174
172
} ) ;
175
173
}
176
- export function clause ( clause : TokiPona . Clause ) : ArrayResult < English . Clause > {
174
+ export function clause (
175
+ clause : TokiPona . Clause ,
176
+ ) : IterableResult < English . Clause > {
177
177
switch ( clause . type ) {
178
178
case "phrases" :
179
179
return phraseClause ( clause . phrases ) ;
@@ -200,10 +200,12 @@ export function clause(clause: TokiPona.Clause): ArrayResult<English.Clause> {
200
200
}
201
201
export function contextClause (
202
202
contextClause : TokiPona . ContextClause ,
203
- ) : ArrayResult < ReadonlyArray < English . Clause > > {
203
+ ) : IterableResult < ReadonlyArray < English . Clause > > {
204
204
switch ( contextClause . type ) {
205
205
case "prepositions" :
206
- return ArrayResult . combine ( ...contextClause . prepositions . map ( preposition ) )
206
+ return IterableResult . combine (
207
+ ...contextClause . prepositions . map ( preposition ) ,
208
+ )
207
209
. map ( ( prepositions ) =>
208
210
prepositions . map ( ( preposition ) => ( {
209
211
...preposition ,
@@ -220,12 +222,14 @@ export function contextClause(
220
222
emphasis : false ,
221
223
} ] ) ;
222
224
case "anu" :
223
- return ArrayResult . errors ( [
225
+ return IterableResult . errors ( [
224
226
new TranslationTodoError ( `${ contextClause . type } context clause` ) ,
225
227
] ) ;
226
228
default :
227
- return ArrayResult . concat < ReadonlyArray < English . Clause > > (
228
- new ArrayResult ( nullableAsArray ( unwrapSingleWord ( contextClause ) ) )
229
+ return IterableResult . concat < ReadonlyArray < English . Clause > > (
230
+ IterableResult . fromArray (
231
+ nullableAsArray ( unwrapSingleWord ( contextClause ) ) ,
232
+ )
229
233
. flatMap ( ( wordUnit ) =>
230
234
fromSimpleDefinition (
231
235
wordUnit ,
0 commit comments