summaryrefslogtreecommitdiff
path: root/domestic/session/server_handling/interpreter.py
blob: 0c403e47d946e3316acf1375f52e7026cb1c70dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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'])