/
Help.sc
47 lines (42 loc) · 1.4 KB
/
Help.sc
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
Help {
// These classvars and vars are part of the deprecated Help.tree stuff. When that stuff is removed from the classlib, this can be removed too.
classvar <global, categoriesSkipThese;
classvar <filterUserDirEntries, <>cachePath;
var tree, fileslist, <root;
*gui {
HelpBrowser.instance.goHome;
}
*dir {
^SCDoc.helpTargetDir
}
*methodArgs {|string|
var class, meth, f, m;
f = string.findRegexp("(\\w*)\\.(\\w+)").flop[1];
if(f.notNil) {#class, meth = f[1..]} {
if(string[0].isUpper) {
class = string;
meth = \new;
} {
meth = string;
}
};
f = {|m,c|
class = (c ?? {m.ownerClass}).name;
class = if(class.isMetaClassName) {class.asString[5..]++" *"} {class.asString++" -"};
class++m.name++" ("++m.argNames[1..].collect {|n,i|
n.asString++":"+m.prototypeFrame[i+1];
}.join(", ")++")";
};
class = class.asSymbol.asClass;
if(class.notNil) {
m = class.class.findRespondingMethodFor(meth.asSymbol);
^if(m.notNil) {f.value(m,class.class)} {""};
} {
^Class.allClasses.reject{|c|c.isMetaClass}.collect {|c|
c.findMethod(meth.asSymbol);
}.reject{|m|m.isNil}.collect {|m|
f.value(m);
}.join($\n);
}
}
}