Implemented some enhancement request and fixed some bugs
Fixed #2 : Variables are not recognized when inside a rule token Fixed #15 : Rule: rete attributes are lost when a new ontology is created Fixed #14 : ReteNetwork: Format rules must not be added to Rete network Fixed #16 : DefConcept: Variables are not recognized when they are keyword arguments Fixed #4 : Comparison are not correctly set when comparison property is a concept Fixed #14 : Parser: merge FunctionParser.NamesNode and ExpressionParser.NamesNode Fixed #18 : Parser: Add SourceCodeNode test to UnrecognizedNodeParser Fixed #20 : At startup Number concept is saved in db a numerous number of time Fixed #21 : CacheManager: I can remove all elements from a ListIfNeededCache and fill it again Fixed #22 : CacheManager: I can remove all elements from a SetCache and fill it again Fixed #23 : HistoryManager: history() no longer works Fixed #24 : HistoryManager: history() no longer works after creating an exec rule Fixed #25 : SheerkaMemory: Use MemoryObject instead of sheerka.local Fixed #26 : Debugger: add the list all available services.. Fixed #27 : CONCEPTS_GRAMMARS_ENTRY does not seems to be in use any more Fixed #28 : Give order to services
This commit is contained in:
@@ -8,6 +8,7 @@ from core.sheerka.Sheerka import Sheerka
|
||||
from core.sheerka.services.SheerkaExecute import ParserInput
|
||||
from evaluators.BaseEvaluator import BaseEvaluator
|
||||
from parsers.BaseParser import BaseParser
|
||||
from parsers.DefRuleParser import DefRuleNode, DefExecRuleNode, DefFormatRuleNode
|
||||
from parsers.PythonParser import PythonNode
|
||||
from sheerkapickle.handlers import BaseHandler, registry
|
||||
|
||||
@@ -213,6 +214,26 @@ class PythonNodeHandler(BaseHandler):
|
||||
return instance
|
||||
|
||||
|
||||
class DefRuleNodeHandler(BaseHandler):
|
||||
def flatten(self, obj, data):
|
||||
pickler = self.context
|
||||
|
||||
data["tokens"] = pickler.flatten(obj.tokens)
|
||||
data["name"] = pickler.flatten(obj.name)
|
||||
return data
|
||||
|
||||
def new(self, data):
|
||||
return DefRuleNode.__new__(DefRuleNode)
|
||||
|
||||
def restore(self, data, instance):
|
||||
pickler = self.context
|
||||
|
||||
instance.__init__(data["source"], objects=pickler.restore(data["objects"]))
|
||||
instance.tokens = pickler.restore(data["tokens"])
|
||||
instance.name = pickler.restore(data["name"])
|
||||
return instance
|
||||
|
||||
|
||||
def initialize_pickle_handlers():
|
||||
registry.register(Concept, ConceptHandler, True)
|
||||
registry.register(UserInputConcept, UserInputHandler, True)
|
||||
@@ -221,3 +242,6 @@ def initialize_pickle_handlers():
|
||||
registry.register(ExecutionContext, ExecutionContextHandler, True)
|
||||
registry.register(Rule, RuleContextHandler, True)
|
||||
registry.register(PythonNode, PythonNodeHandler, True)
|
||||
registry.register(DefRuleNode, DefRuleNodeHandler, True)
|
||||
registry.register(DefExecRuleNode, DefRuleNodeHandler, True) # TODO: fix inheritance that does not work
|
||||
registry.register(DefFormatRuleNode, DefRuleNodeHandler, True) # TODO: fix inheritance that does not work
|
||||
|
||||
Reference in New Issue
Block a user