@@ -78,10 +78,12 @@ function sentence(
78
78
case "simple" : {
79
79
let startingAdverb : IterableResult < null | English . Word > ;
80
80
let startingConjunction : null | English . Word ;
81
+ let contextClauses : ReadonlyArray < TokiPona . ContextClause > ;
81
82
if ( sentence . startingParticle != null ) {
82
83
const { startingParticle } = sentence ;
83
84
const emphasis = startingParticle . emphasis != null ;
84
85
const reduplicationCount = getReduplicationCount ( startingParticle ) ;
86
+ contextClauses = sentence . contextClauses ;
85
87
switch ( sentence . startingParticle . word as "taso" | "kin" | "anu" ) {
86
88
case "taso" :
87
89
startingAdverb = IterableResult . single ( null ) ;
@@ -108,9 +110,22 @@ function sentence(
108
110
} ) ;
109
111
break ;
110
112
}
113
+ } else if (
114
+ sentence . contextClauses . length > 0 &&
115
+ sentence . contextClauses [ 0 ] . type === "anu"
116
+ ) {
117
+ const anu = sentence . contextClauses [ 0 ] ;
118
+ startingAdverb = IterableResult . single ( null ) ;
119
+ startingConjunction = word ( {
120
+ reduplicationCount : getReduplicationCount ( anu . anu ) ,
121
+ emphasis : anu . anu . emphasis != null ,
122
+ word : "or" ,
123
+ } ) ;
124
+ contextClauses = sentence . contextClauses . slice ( 1 ) ;
111
125
} else {
112
126
startingAdverb = IterableResult . single ( null ) ;
113
127
startingConjunction = null ;
128
+ contextClauses = sentence . contextClauses ;
114
129
}
115
130
const useAnuSeme = nullableAsArray ( sentence . anuSeme )
116
131
. map ( ( seme ) : English . Clause => ( {
@@ -122,7 +137,7 @@ function sentence(
122
137
} ) ,
123
138
} ) ) ;
124
139
const interjectionClause : IterableResult < English . Clause > =
125
- sentence . contextClauses . length === 0 &&
140
+ contextClauses . length === 0 &&
126
141
sentence . startingParticle == null
127
142
? IterableResult . fromArray (
128
143
nullableAsArray ( unwrapSingleWord ( sentence . finalClause ) ) ,
@@ -143,7 +158,7 @@ function sentence(
143
158
: IterableResult . empty ( ) ;
144
159
const clauses = IterableResult . combine (
145
160
startingAdverb ,
146
- IterableResult . combine ( ...sentence . contextClauses . map ( contextClause ) )
161
+ IterableResult . combine ( ...contextClauses . map ( contextClause ) )
147
162
. map ( ( clause ) => clause . flat ( ) ) ,
148
163
IterableResult . concat ( interjectionClause , clause ( sentence . finalClause ) ) ,
149
164
)
0 commit comments