user_manager.alc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. include "io.alh"
  2. include "primitives.alh"
  3. Void function user_management():
  4. String username
  5. Element user_root
  6. Element user_frame
  7. Element output_value
  8. Element input_value
  9. while (True):
  10. username = input()
  11. if (string_startswith(username, "__")):
  12. username = string_substr(username, 2, string_len(username) - 1)
  13. dict_delete(read_root(), username)
  14. else:
  15. if (bool_not(dict_in(read_root(), username))):
  16. user_root = create_node()
  17. user_frame = create_node()
  18. output_value = create_node()
  19. input_value = create_node()
  20. dict_add(user_root, "frame", user_frame)
  21. dict_add(user_root, "globals", create_node())
  22. dict_add(user_root, "output", output_value)
  23. dict_add(user_root, "last_output", output_value)
  24. dict_add(user_root, "input", input_value)
  25. dict_add(user_root, "last_input", input_value)
  26. dict_add(user_frame, "evalstack", create_node())
  27. dict_add(user_frame, "returnvalue", create_node())
  28. dict_add(user_frame, "phase", "init")
  29. dict_add(user_frame, "IP", dict_read(dict_read(read_root(), "__hierarchy"), "__IP"))
  30. dict_add(user_frame, "symbols", create_node())
  31. //Add this only at the end, as otherwise the user will already be detected
  32. dict_add(read_root(), username, user_root)