-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodel_HkeyFolder.livecodescript
More file actions
272 lines (223 loc) · 8.68 KB
/
Copy pathmodel_HkeyFolder.livecodescript
File metadata and controls
272 lines (223 loc) · 8.68 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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
script "model_HkeyFolder"
--> MetaData
-
copyright: David Bovill
license: GPLv3
name: model_HkeyFolder
type: model
version: 0.1
/*
Handlers, their calls and their metadata are now stored in a folder that reflects the folder structure of project and object scripts:
Scripts are stored as merge files inside the dataObject_Folder eg:
-- /lcw_User/lcw_Metadata/LCW/data/objects/stack/lcw_script.txt
Handlers and calls are stored inside the dataObject_Folder:
-- /lcw_User/lcw_Metadata/LCW/data/objects/stack/handlers/M someCommand/lcw_handler.txt
- put _ConstructHandlerFolder (hKey, objectScriptFolder) into hkeyFolder
While hander graphs and dependency arrays are stored inside the metadataObject_Folder:
-- /lcw_User/lcw_Metadata/LCW/data/objects/stack/handlers/M someCommand/lcw_handler.txt
*/
--> Check
-
function hkey_MetadataFolder hKey
hkey_Deconstruct hKey, hName, hType, hObject, hNum
put the metadataObject_Folder of hObject into dataObjectFolder
put _ConstructHandlerFolder (hKey, dataObjectFolder) into hkeyMetadataFolder
return hkeyMetadataFolder
end hkey_MetadataFolder
--> Handler | Folder
-
getprop handler_Folder [shortHkey]
-- /lcw_User/lcw_Metadata/LCW/data/objects/stack/handlers/
put the dataObject_Folder [true] of the target into dataObjectFolder
--
if shortHkey is empty then
put dataObjectFolder & "handlers/" into handlerFolderRoot
return handlerFolderRoot
else
put _ConstructHandlerFolder (shortHkey, dataObjectFolder) into handlerFolder
return handlerFolder
end if
end handler_Folder
--> Working on
-
function textStack_ConstructCallsFile hKeyLine, dataFolder
put _ConstructHandlerFolder (hKeyLine, dataFolder) & "lcw_calls.txt" into callsFile
return callsFile
end textStack_ConstructCallsFile
function textStack_ConstructHandlerFile shortHkey, dataFolder
-- see also "hkey_HandlerFile"
put _ConstructHandlerFolder (shortHkey, dataFolder) & "lcw_handler.txt" into handlerFile
return handlerFile
end textStack_ConstructHandlerFile
--> Hkey | Folder | Metadata
-
/*
The old hkey_Folder was here:
- put library_HkeyFolder (hKey, pDontCreate) into hkeyFolder
*/
getprop metadata_Folder [shortHkey]
if shortHkey is empty then
return the metadataObject_Folder of the target
else
return the metadataHandler_Folder [shortHkey] of the target
end if
end metadata_Folder
getprop metadataHandler_Folder [shortHkey]
put the long id of the target into tObject
--
put word 1 to 2 of shortHkey into shortHkey
put shortHkey && "of" && tObject into hKey
put hkey_MetadataFolder (hKey) into metadataHekyFolder
--
return metadataHekyFolder
end metadataHandler_Folder
getprop metadataObject_Folder [pDontCreate]
-- lib_IDE/metadata/objects/stack/
-- the objects metadataObject_Folder (not the textStack_MetadataFolder
-- /lcw_User/lcw_Metadata/LCW/metadata/objects/stack/
-- where the script_File, handler_Folder and other data related to the object is stored.
put the long id of the target into tObject
put the metadataObjects_Folder [pDontCreate] of tObject into metadataObjectsFolder
put the defaultstack into tObject
put the short name of tObject into stackName
put the mainstack of tObject into mainStackName
if stackName = mainStackName then
put metadataObjectsFolder into metadataObjectFolder
else
put metadataObjectsFolder & "substacks/" & stackName & "/" into metadataObjectFolder
end if
--
switch word 1 of tObject
case "stack"
put "stack/" after metadataObjectFolder
break
default
put word 1 of tObject & "_" & word 3 of tObject & "/" after metadataObjectFolder
end switch
--
if pDontCreate is not true then folder_CreateNested metadataObjectFolder
return metadataObjectFolder
end metadataObject_Folder
getprop metadataObjects_Folder [pDontCreate]
-- /metadata/objects/
-- /lcw_User/lcw_Metadata/LCW/metadata/objects/
-- it is the metadata for a script object
put the textStack_MetadataFolder [pDontCreate] of the target into metadataFolder
put metadataFolder & "objects/" into metadataObjectsFolder
if pDontCreate is false then folder_CreateNested metadataObjectsFolder
return metadataObjectsFolder
end metadataObjects_Folder
getprop metadataProject_Folder [pDontCreate]
-- /metadata/project/
put the textStack_MetadataFolder of the target into metadataFolder
put metadataFolder & "project/" into overlayFolder
if pDontCreate is false then folder_CreateNested overlayFolder
return overlayFolder
end metadataProject_Folder
--> Folder | Data | Objects
-
getprop dataObject_Folder [pDontCreate]
/*
-- /lcw_User/lcw_Metadata/LCW/data/objects/stack/
This is an object specific data folder.
-- where the script_File (lcw_Script.txt), handler_Folder (handlers) and other data related to the object is stored.
All object specific data folders are within "the dataObjects_Folder"
Which in turn is within "the textStack_DataFolder"
*/
put the long id of the target into tObject
put the dataObjects_Folder [pDontCreate] of tObject into dataObjectsFolder
put the defaultstack into stackObject
put the short name of stackObject into stackName
put the mainstack of stackObject into mainStackName
if stackName = mainStackName then
put dataObjectsFolder into dataFolder
else
put dataObjectsFolder & "substacks/" & stackName & "/" into dataFolder
end if
switch word 1 of tObject
case "stack"
put "stack/" after dataFolder
break
default
put word 1 of tObject & "_" & word 3 of tObject & "/" after dataFolder
end switch
if pDontCreate is not true then folder_CreateNested dataFolder
return dataFolder
end dataObject_Folder
getprop dataObjects_Folder [pDontCreate]
/*
-- /lcw_User/lcw_Metadata/LCW/data/objects/
*/
put the textStack_DataFolder [pDontCreate] of the target into textStackDataFolder
put textStackDataFolder & "objects/" into dataObjectsFolder
return dataObjectsFolder
end dataObjects_Folder
--> Hkey | Folder | Model
-
function hkey_DataFolder hKey, pDontCreate
hkey_Deconstruct hKey, hName, hType, hObject, hNum
put the dataObject_Folder [pDontCreate] of hObject into dataFolder
return dataFolder
end hkey_DataFolder
function hkey_Folder hKey
hkey_Deconstruct hKey, hName, hType, hObject, hNum
if exists (hObject) is false then return empty
put the dataObject_Folder [true] of hObject into dataObjectFolder
put _ConstructHandlerFolder (hKey, dataObjectFolder) into handlerFolder
return handlerFolder
end hkey_Folder
command hkey_DeleteFolder hKey
put hkey_Folder (hKey) into hkeyFolder
revDeleteFolder hkeyFolder
end hkey_DeleteFolder
--> Hkey | Folders
-
/*
These handlers refer to the permanent fixed shared location of the files in hkey handler database.
*/
command hkey_DeconstructFolder scriptFolder, @shortHkey, @versionName
set the itemdelimiter to "/"
get item -1 of scriptFolder
put word 1 of it into shortFolder
put word 2 of it into versionName
set the itemdelimiter to "_"
put item 1 to -2 of shortFolder into handlerName
put item -1 of shortFolder into handlerType
put handlerName,handlerType into shortHkey
end hkey_DeconstructFolder
function hkey_FromFolder someFolder
set the itemdelimiter to "/"
put item - 1 of someFolder into shortFolder
put hkey_FromShortFolder (shortFolder) into shortHkey
return shortHkey
end hkey_FromFolder
function hkey_FromShortFolder shortFolder
put word 1 of shortFolder into handlerInfo
set the itemdelimiter to "_"
put item -1 of handlerInfo into handlerType
put item 1 to -2 of handlerInfo into handlerName
set the itemdelimiter to comma
if handlerType is not among the items of "g,s,c,f,m,pg,ps,pc,pf" then return empty
return handlerName,handlerType
end hkey_FromShortFolder
function hkey_FolderName hKey
put item 1 of hKey into hName
put item 2 of hKey into hType
if hType = "o" then put "c" into hType -- as "on" and "command" are functionally equivalent
put hName & "_" & tolower (hType) into folderName
return folderName
end hkey_FolderName
--> Private
-
private function _ConstructHandlerFolder hKeyLine, dataObjectFolder
/*
-- was "textStack_ConstructHandlerFolder"
Handlers and calls are stored inside the dataObject_Folder:
-- /lcw_User/lcw_Metadata/LCW/data/objects/stack/handlers/M someCommand/lcw_handler.txt
- put _ConstructHandlerFolder (hKey, objectScriptFolder) into hkeyFolder
*/
text_AddTrailing dataObjectFolder, slash
put word 1 to 2 of hKeyLine into folderName
put dataObjectFolder & "handlers/" & folderName & "/" into handlerFolder
return handlerFolder
end _ConstructHandlerFolder