/// <summary> /// Gets and-rule for sentence. /// </summary> /// <param name="rule"></param> /// <param name="andRuleId"></param> /// <returns></returns> public NotenizerAndRule GetAndRuleForSentence(NotenizerRule rule, String andRuleId) { NotenizerAndRule andRule; andRule = DocumentParser.ParseAndRule( DB.GetFirst( DBConstants.AndRulesCollectionName, DocumentCreator.CreateFilterById(andRuleId)).Result); andRule.Structure = new NotenizerStructure( DocumentParser.ParseStructure( DB.GetFirst( DBConstants.StructuresCollectionName, DocumentCreator.CreateFilterById(andRule.StructureID)).Result)); andRule.Sentence = rule.Sentence; return andRule; }
/// <summary> /// Applies rule. /// Parses sentence by applied rule. /// </summary> /// <param name="sentence">Sentence to apply rule to</param> /// <param name="rule">Rule for parsing to apply</param> /// <returns></returns> public NotenizerNote ApplyRule(NotenizerSentence sentence, NotenizerRule rule) { NotenizerNote note = new NotenizerNote(sentence); NotePart notePart = new NotePart(sentence); foreach (NotenizerDependency ruleLoop in rule.Structure.Dependencies) { ApplyRule(sentence, ruleLoop, notePart); } note.Add(notePart); if (rule is NotenizerNoteRule) ApplyRule(note, rule as NotenizerNoteRule); else if (rule is NotenizerAndRule) ApplyRule(note, rule as NotenizerAndRule); //note.Note = rule.Note; note.Structure = rule.Structure; return note; }