1
- async function handleType ( obj , sentence , langRef , src , defaults ) {
1
+ async function handleType ( obj , sentence , langRef , src , defaults , forces ) {
2
2
switch ( obj . type ) {
3
3
case 'VERB' :
4
- obj = await handleVERB ( obj , sentence , langRef , src , defaults ) ;
4
+ obj = await handleVERB ( obj , sentence , langRef , src , defaults , forces ) ;
5
5
break ;
6
6
case 'NOUN' :
7
7
obj = await handleNOUN ( obj , sentence , langRef , src , defaults ) ;
@@ -18,7 +18,7 @@ async function handleType(obj, sentence, langRef, src, defaults){
18
18
}
19
19
}
20
20
21
- async function handleVERB ( obj , sentence , langRef , src , defaults ) {
21
+ async function handleVERB ( obj , sentence , langRef , src , defaults , forces ) {
22
22
//HERE: we are joining prepositions into the previous verb
23
23
let prepIndex = obj . types . findIndex ( t => t === 'PREP' )
24
24
while ( prepIndex >= 0 ) {
@@ -30,17 +30,21 @@ async function handleVERB(obj, sentence, langRef, src, defaults){
30
30
obj . meta . PERSON = defaults . PERSON ;
31
31
32
32
const childrenSUBJ = obj . children . filter ( c => c . type === 'SUBJ' || c . type === 'NOUN' ) //HERE: check if include NOUN here is ok
33
- if ( childrenSUBJ . length > 1 ) {
33
+ if ( forces . PERSON ) {
34
+ obj . meta . PERSON = forces . PERSON ;
35
+ } else if ( childrenSUBJ . length > 1 ) {
34
36
const childrenSUBJpersons = childrenSUBJ . map ( c => sentence [ c . position ] . meta . PERSON )
35
37
const personsPluralsSn = await langRef . child ( `PERSONS/PLURALS` ) . get ( ) //if there's more than one subj token, recall the personPlurals
36
38
const personsPlurals = personsPluralsSn . val ( ) || { } ;
37
- const foundPerson = personsPlurals . find ( person => ( childrenSUBJpersons . includes ( person [ 0 ] ) || childrenSUBJpersons . includes ( person [ 1 ] ) ) ) ;
39
+ const foundPerson = personsPlurals . find ( person => childrenSUBJpersons . includes ( person [ 0 ] ) || childrenSUBJpersons . includes ( person [ 1 ] ) ) ;
38
40
obj . meta . PERSON = foundPerson [ 1 ] ;
39
41
} else if ( childrenSUBJ . length === 1 ) obj . meta . PERSON = sentence [ childrenSUBJ [ 0 ] . position ] . meta . PERSON || obj . meta . PERSON ;
40
42
41
43
obj . meta . TIME = defaults . TIME ;
42
44
const childrenADV = obj . children . filter ( c => c . type === 'ADV' )
43
- if ( childrenADV . length > 1 ) {
45
+ if ( forces . TIME ) {
46
+ obj . meta . TIME = forces . TIME ;
47
+ } else if ( childrenADV . length > 1 ) {
44
48
const sortedChildrenADV = childrenADV . sort ( ( a , b ) => Math . abs ( a . position - obj . position ) - Math . abs ( b . position - obj . position ) )
45
49
for ( childADV of sortedChildrenADV ) {
46
50
if ( sentence [ childADV . position ] . meta . TIME ) {
0 commit comments