Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

30
LINES

< > BotCompany Repo | #1021489 // ai_ruleEngine2_rulesForInput_4 [with line types]

JavaX fragment (include)

// matches first condition, leaves rest in MatchedRule
static L<RuleEngine2_MatchedRule> ai_ruleEngine2_rulesForInput_4(RuleEngine2 engine, SS inputsByType) {
  new L<RuleEngine2_MatchedRule> l;
  for (RuleEngine2.Rule rule : engine.rules) {
    TextAndType in = first(rule.insWithType);
    S cond = in.text;
    S tokenize = or(matchAny_firstGroup("tokenize with *", rule.comments), f javaTokNPunctuationWithBrackets);
    LS tokC = (LS) callAndMake(tokenize, cond);
    S input = inputsByType.get(in.type);
    if (input == null) continue;
    LS tokI = (LS) callAndMake(tokenize, input);
    tokI = ai_applyWordSplitPattern1(tokC, tokI);
    SS map = zipTwoListsToCIMap_strict_withoutEquals(tokC, tokI);
    if (map == null) continue;
    //print(map + " | " + cond + " | " + rule.vars);
    final new RuleEngine2_MatchedRule matched;
    matched.rule = rule;
    matched.map = map;
    matched.matchedLines.add(pair(tokC, tokI));
    matched.tokenizationFunction = tokenize;
    matched.remainingConditions = nullIfEmpty(map(dropFirst(rule.in), func(S s) -> S { matched.applyMappingTo(s) }));
    matched.remainingConditionsWithType = nullIfEmpty(map(dropFirst(rule.insWithType), func(TextAndType in) -> TextAndType { TextAndType(matched.applyMappingTo(in.text), in.type) }));
    Map<PairS, Int> qualities = ai_ruleEngine2_mappingQualities(rule);
    for (S a, b : map) {
      mapPut(matched.mappingQuality, a, qualities.get(pair(a, b)));
    }
    l.add(matched);
  }
  ret l;
}

Author comment

Began life as a copy of #1021405

download  show line numbers  debug dex  old transpilations   

Travelled to 7 computer(s): bhatertpkbcr, cfunsshuasjs, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1021489
Snippet name: ai_ruleEngine2_rulesForInput_4 [with line types]
Eternal ID of this version: #1021489/7
Text MD5: f64a4cae13cfc332d30176c1051a0750
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2019-02-15 06:09:20
Source code size: 1515 bytes / 30 lines
Pitched / IR pitched: No / No
Views / Downloads: 246 / 265
Version history: 6 change(s)
Referenced in: [show references]