-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommands.py
More file actions
148 lines (118 loc) · 3.34 KB
/
commands.py
File metadata and controls
148 lines (118 loc) · 3.34 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import utils
import SSS
import editor
# this have to be defined in order for most commands to work
current = utils.Note()
# this one is used by save and load to "use" the "last filename"
lastfile = None
def exit(*args,**kwargs):
raise
def goup(*args, **kwargs):
"""go to the note above in the tree, until you are on the root note"""
global current
if current.father is not None:
current = current.father
else:
print("at the root already!")
def goto(*args, **kwargs):
"""go to <name> note."""
name = args[0]
global current
for sub in current.subnotes:
if sub.name == name:
current = sub
break
else:
print("invalid name!")
def see(*args, **kwargs):
"""see the contents of <name> note"""
if args:
name = args[0]
for sub in current.subnotes:
if sub.name == name:
note = sub
break
else:
print("invalid name")
return
else:
note = current
print(note.text)
def create(*args, **kwargs):
"""create a subnote of the current note named <name>"""
if args:
name = args[0]
else:
print("name required")
return
if name == '':
print("invalid name!")
return
for sub in current.subnotes:
if sub.name == name:
print("name already used!")
return
current.addchild(name=name)
def delete(*args, **kwargs):
"""delete <name> note"""
name = args[0]
for sub in range(len(current.subnotes)):
if current.subnotes[sub].name == name:
current.subnotes.pop(sub)
return
else:
print("Invalid name")
def ls(*args, **kwargs):
"""see the names of the subnotes of the current note"""
if len(current.subnotes) == 0:
print("None!")
for sub in current.subnotes:
print(sub.name)
def save(*args, **kwargs):
global lastfile
serialized = utils.note_to_sss(utils.getroot(current))
serialized = SSS.serialize(serialized)
if args:
lastfile = open(args[0], "wb+")
if lastfile is not None:
lastfile.seek(0)
lastfile.write(serialized)
lastfile.flush()
else:
print("filename required")
def load(*args, **kwargs):
global lastfile
global current
if args:
lastfile = open(args[0], "rb+")
if lastfile is not None:
notes = SSS.parse(lastfile)
notes = utils.sss_to_note(notes)
current = notes
else:
print("filename required")
def edit(*args, **kwargs):
if args:
name = args[0]
for sub in current.subnotes:
if sub.name == name:
note = sub
break
else:
print("invalid name")
return
else:
note = current
note.text = editor.editor(note.text)
def search(*args, note=None, route="", **kwargs):
if note is None:
note = utils.getroot(current)
route += "/" + note.name
for arg in args:
if note.text.find(arg) != (-1):
print(f"match found in text of {route}")
if note.name.find(arg) != (-1):
print(f"match found at {route}")
for sub in note.subnotes:
search(*args, note=sub, route=route)
funcs = [create, delete, see, goto, goup, ls, save, load, edit, exit, search]