41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
from core.builtin_concepts import BuiltinConcepts
|
|
from evaluators.BaseEvaluator import OneReturnValueEvaluator
|
|
|
|
|
|
class PrepareEvalEvaluator(OneReturnValueEvaluator):
|
|
"""
|
|
To parse evaluation requests
|
|
"""
|
|
|
|
NAME = "PrepareEval"
|
|
|
|
def __init__(self, **kwargs):
|
|
super().__init__(self.NAME, [BuiltinConcepts.BEFORE_PARSING], 90)
|
|
self.text = None
|
|
|
|
def matches(self, context, return_value):
|
|
if not (return_value.status and
|
|
context.sheerka.isinstance(return_value.body, BuiltinConcepts.USER_INPUT) and
|
|
isinstance(return_value.body.body, str)):
|
|
return False
|
|
|
|
text = return_value.body.body.strip()
|
|
if not text.startswith("eval "):
|
|
return False
|
|
|
|
self.text = text
|
|
return True
|
|
|
|
def eval(self, context, return_value):
|
|
sheerka = context.sheerka
|
|
|
|
new_text_to_parse = sheerka.ret(
|
|
self.name,
|
|
True, sheerka.new(BuiltinConcepts.USER_INPUT, body=self.text[5:], user_name=context.event.user))
|
|
|
|
evaluation_requested = sheerka.ret(
|
|
self.name,
|
|
True, sheerka.new(BuiltinConcepts.CONCEPT_VALUE_REQUESTED))
|
|
|
|
return [new_text_to_parse, evaluation_requested]
|