2017-09-21 23:00:09 +00:00
|
|
|
import logging
|
2017-09-29 23:32:04 +00:00
|
|
|
import datetime
|
|
|
|
from .session.org_mode import (
|
|
|
|
global_session as session,
|
|
|
|
create_global_session,
|
|
|
|
)
|
2017-09-18 02:01:59 +00:00
|
|
|
from .knowledge_base import KnowledgeBase
|
2017-09-29 22:53:42 +00:00
|
|
|
from .visualization import (
|
|
|
|
show_knowledge,
|
|
|
|
show_samples,
|
|
|
|
)
|
2017-09-18 02:01:59 +00:00
|
|
|
from .tests import gac_100
|
|
|
|
from .modifiable_property import (
|
|
|
|
ModifiableProperty,
|
|
|
|
ModifiablePropertyWithAst,
|
|
|
|
is_modifiable_property,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
bye_phrases = ['bye', 'exit']
|
|
|
|
|
2017-09-21 01:04:04 +00:00
|
|
|
|
2017-09-29 23:32:04 +00:00
|
|
|
def gen_session_name():
|
|
|
|
now = datetime.datetime.utcnow()
|
|
|
|
return "treeNLU-cli-session-{}.org".format(
|
|
|
|
now.strftime("%y_%m_%d %H:%M:%S_%f"))
|
|
|
|
|
2017-09-21 01:04:04 +00:00
|
|
|
|
2017-09-18 02:01:59 +00:00
|
|
|
def main():
|
2017-09-29 23:32:04 +00:00
|
|
|
create_global_session(gen_session_name())
|
2017-09-21 23:00:09 +00:00
|
|
|
logging.getLogger().setLevel(logging.INFO)
|
2017-09-18 02:01:59 +00:00
|
|
|
knowledge = gac_100.main()
|
2017-09-21 23:00:09 +00:00
|
|
|
logging.getLogger().setLevel(logging.DEBUG)
|
2017-09-18 02:01:59 +00:00
|
|
|
while True:
|
|
|
|
try:
|
|
|
|
data = input("> ").strip()
|
2017-09-29 23:32:04 +00:00
|
|
|
session().log_step(data, 0)
|
2017-09-18 02:01:59 +00:00
|
|
|
except EOFError:
|
|
|
|
print("bye")
|
|
|
|
break
|
|
|
|
if data.lower() in bye_phrases:
|
|
|
|
break
|
|
|
|
if not data:
|
|
|
|
continue
|
|
|
|
|
2017-09-21 23:00:39 +00:00
|
|
|
if data == '/show':
|
|
|
|
show_knowledge(knowledge)
|
2017-09-21 01:04:04 +00:00
|
|
|
continue
|
2017-09-29 22:53:42 +00:00
|
|
|
elif data == '/samples':
|
|
|
|
show_samples(knowledge)
|
|
|
|
continue
|
2017-09-21 01:04:04 +00:00
|
|
|
|
2017-09-18 02:01:59 +00:00
|
|
|
ret = knowledge.process(data)
|
|
|
|
if ret:
|
|
|
|
result, _, _ = ret
|
|
|
|
if not is_modifiable_property(result):
|
|
|
|
print("<", result)
|
|
|
|
else:
|
|
|
|
result.setter()
|
|
|
|
print("OK")
|
2017-09-29 22:54:09 +00:00
|
|
|
elif ret is None:
|
|
|
|
print("- Couldn't understand that, oops... -")
|
|
|
|
else:
|
|
|
|
print("Unhandled response:", ret)
|
2017-09-18 02:01:59 +00:00
|
|
|
print("< Bye!")
|