Date: 2021/04/21 20:44:30 UTC-07:00
Type: Diff Report
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
TabComplete:
type: procedure
debug: false
definitions: command|data|raw_args
script:
- - define raw_args <[raw_args]||<empty>>
+ - define raw_args <[raw_args].if_null[<empty>]>
+ - define newArg '<[raw_args].ends_with[ ].or[<[raw_args].equals[<empty>]>]>'
- define path <[command]>
- define script <script[<[data]>]>
+ - define args <list>
+ - if <[raw_args]> != <empty>:
- define 'args:|:<[raw_args].split[ ]>'
- - if <[args].get[1]> == <empty>:
- - define args:!|:<[args].remove[1]>
- define argsSize <[args].size>
- - define newArg <[raw_args].ends_with[<&sp>].or[<[raw_args].is[==].to[<empty>]>]>
- if <[newArg]>:
- define argsSize:+:1
- repeat <[argsSize].sub[1]> as:index:
- define value <[args].get[<[index]>]>
- - define keys:!|:<[script].list_keys[<[path]>]>
- - define permLockedKeys:!|:<[keys].filter[starts_with[?]]>
- - define keys:<-:<[permLockedKeys]>
- if <[value]> == <empty>:
- foreach next
+ - define keys <[script].list_keys[<[path]>]>
+ - define permLockedKeys <[keys].filter[starts_with[?]]>
+ - define keys:<-:<[permLockedKeys]>
- if <[keys].contains[<[value]>]>:
- define path <[path]>.<[value]>
- else:
- if <[permLockedKeys].size> > 0:
- - define permMap '<[permLockedKeys].parse[after[ ]].map_with[<[permLockedKeys].parse[before[ ]]>]>'
- - define perm <[permMap].get[<[value]>]||null>
- - if <[perm]> != null && <player.has_permission[<[perm].after[?]>]>:
+ - define perm '<[permLockedKeys].filter[ends_with[ <[value]>]]>'
+ - if '!<[perm].is_empty> && <player.has_permission[<[perm].first.after[?].before[ ]>]>':
+ - define path <[path]>.<[perm].first>
- - define path '<[path]>.<[perm]> <[value]>'
- repeat next
- - define default <[keys].filter[starts_with[_]].get[1]||null>
- - if <[default]> == null:
- - determine <list[]>
- - define path <[path]>.<[default]>
+ - define default <[keys].filter[starts_with[_]]>
+ - if <[default].is_empty>:
+ - determine <list>
+ - define path <[path]>.<[default].first>
- if <[script].data_key[<[path]>]> == end:
- - determine <list[]>
+ - determine <list>
- foreach <[script].list_keys[<[path]>]>:
- if <[value].starts_with[_]>:
- define value <[value].after[_]>
- if <[value].starts_with[*]>:
- define ret:|:<proc[<[data]>_<[value].after[*]>].context[<[args]>]>
- else if <[value].starts_with[?]>:
- define perm '<[value].before[ ].after[?]>'
- if <player.has_permission[<[perm]>]>:
- define 'ret:|:<[value].after[ ]>'
- else:
- define ret:->:<[value]>
- - if !<definition[ret].exists>:
- - determine <list[]>
+ - if !<[ret].exists>:
+ - determine <list>
- if <[newArg]>:
- determine <[ret]>
- determine <[ret].filter[starts_with[<[args].last>]]>