summaryrefslogtreecommitdiff
path: root/domestic/session/server_handling/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'domestic/session/server_handling/interpreter.py')
-rw-r--r--domestic/session/server_handling/interpreter.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/domestic/session/server_handling/interpreter.py b/domestic/session/server_handling/interpreter.py
new file mode 100644
index 0000000..0c403e4
--- /dev/null
+++ b/domestic/session/server_handling/interpreter.py
@@ -0,0 +1,35 @@
+from domestic.parse.error_exception_handling import *
+from domestic.utility.validate_dict_key import *
+from domestic.session.session_message import *
+from domestic.utility.status_message import *
+from domestic.utility.read_file import *
+from domestic.global_state import *
+
+
+@error_exception_handling
+def interpreter(message):
+ execute = validate_dict_key(message, 'execute')
+ script = validate_dict_key(message, 'script')
+ quiet = validate_dict_key(message, 'quiet')
+
+ assert execute or script
+
+ if script:
+ parent_folder = state['settings']['folders']['parent']
+ child_folder = state['settings']['folders']['child'][1]
+ message['execute'] = read_file(f'{state["root"]}/{parent_folder}/{child_folder}/{script}').decode(state['settings']['encoding'])
+ del message['script']
+
+ if quiet:
+ del message['quiet']
+
+ data = session_message(message, False)
+ result = validate_dict_key(data, 'result')
+
+ if result:
+ if quiet is None:
+ status_message(data['result'], 'pure', {'end': True})
+ print()
+ make_file(['interpreter'], 'txt', bytes(data['result'], state['settings']['encoding']), data['message'])
+ else:
+ status_message(data['message'], data['text_mode']) \ No newline at end of file