diff options
Diffstat (limited to 'language/parser.ts')
-rw-r--r-- | language/parser.ts | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/language/parser.ts b/language/parser.ts index bb4ac1e..40bdd81 100644 --- a/language/parser.ts +++ b/language/parser.ts @@ -5,6 +5,11 @@ import "../util/array.ts"; import "../util/set.ts"; import { DeepPartial } from "../util/types.ts"; +const CONJUGABLE_TAGS = [ + ...Object.values(Tag.Class.Verb), + ...Object.values(Tag.Class.Adjective), +]; + // TODO: rename Parser to Search /** @summary main Parser class */ export default class Parser { @@ -20,6 +25,7 @@ export default class Parser { }); } + // Search.sentence() async parse(sentence: string, optional?: DeepPartial<InputSentenceProps>): Promise<ParseResult> { await this.ready; @@ -64,8 +70,8 @@ export default class Parser { // deconjugated words if (result.depth > 0) { - // can't be conjugated at all - if (!result.tags.anyOf(Object.values(Tag.Class.Verb))) return false; + // check if this word can be conjugated at all + if (!result.tags.anyOf(CONJUGABLE_TAGS)) return false; // ignore other wrong deconjugations if (result.tags.includes(Tag.Class.Verb.U) && @@ -74,6 +80,10 @@ export default class Parser { !result.tags.includes(Tag.Inflection.Reason.Ru)) return false; if (result.tags.includes(Tag.Class.Verb.Suru) && !result.tags.includes(Tag.Inflection.Reason.Suru)) return false; + if (result.tags.includes(Tag.Class.Adjective.I) && + !result.tags.includes(Tag.Inflection.Reason.Adjective.I)) return false; + if (result.tags.includes(Tag.Class.Adjective.Na) && + !result.tags.includes(Tag.Inflection.Reason.Adjective.Na)) return false; } // all other results should be valid grammatically |