Add files via upload
This commit is contained in:
parent
72e2f310bd
commit
b83e702d8a
74
it/main.py
Normal file
74
it/main.py
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
# it, a shITtier version of ed
|
||||||
|
import importlib
|
||||||
|
import sys
|
||||||
|
|
||||||
|
oldinput = input
|
||||||
|
|
||||||
|
def input(*args, **kwargs):
|
||||||
|
message = args[0] if len(args) > 0 else ""
|
||||||
|
while 1:
|
||||||
|
try:
|
||||||
|
user_input = str(oldinput(message))
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
except EOFError:
|
||||||
|
sys.exit(0)
|
||||||
|
return user_input
|
||||||
|
|
||||||
|
def parsecommand(command):
|
||||||
|
casesensitive = True
|
||||||
|
escapes = ["\\"]
|
||||||
|
quotes = ["'", '"']
|
||||||
|
spaces = [" ", "\t"]
|
||||||
|
|
||||||
|
command = command.rstrip().lstrip()
|
||||||
|
|
||||||
|
inQuotes = 0
|
||||||
|
word = ""
|
||||||
|
parsed_command = []
|
||||||
|
|
||||||
|
for i in range(len(command)):
|
||||||
|
if (command[i] in quotes) and inQuotes == 0\
|
||||||
|
and (i == 0 \
|
||||||
|
or (i > 0 and command[i-1] != escape)):
|
||||||
|
inQuotes = command[i]
|
||||||
|
|
||||||
|
elif command[i] == inQuotes \
|
||||||
|
and (i > 0 and command[i-1] != escape):
|
||||||
|
inQuotes = 0
|
||||||
|
|
||||||
|
elif command[i] in space and inQuotes == 0\
|
||||||
|
and (i > 0 and command[i-1] != escape):
|
||||||
|
parsed_command += [word]
|
||||||
|
word = ""
|
||||||
|
|
||||||
|
elif command[i] != "\\" or (i == len(command) - 1) \
|
||||||
|
or not(command[i+1] in space + quotes):
|
||||||
|
word += command[i]
|
||||||
|
|
||||||
|
parsed_command += [word]
|
||||||
|
if parsed_command == ['']: return []
|
||||||
|
return parsed_command
|
||||||
|
|
||||||
|
class buffer: # all the information about the current file
|
||||||
|
content = []
|
||||||
|
dot = -1
|
||||||
|
filename = ""
|
||||||
|
saved = 0
|
||||||
|
|
||||||
|
def main(argc, argv):
|
||||||
|
file = buffer()
|
||||||
|
modules = {}
|
||||||
|
while True:
|
||||||
|
command = parsecommand(input())
|
||||||
|
if(command == []):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
modules[command[0]] = importlib.import_module(command[0])
|
||||||
|
except ModuleNotFoundError as err:
|
||||||
|
print(err)
|
||||||
|
else:
|
||||||
|
file = modules[command[0]].main(len(command), command, file)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
return main(len(sys.argv), sys.argv)
|
Loading…
Reference in New Issue
Block a user