2015-09-21 19:48:16 -04:00
|
|
|
import * as simple_library from './simple_library';
|
|
|
|
import * as ng from 'angular2/angular2';
|
|
|
|
|
|
|
|
const LIB_MAP = {
|
|
|
|
'simple_library': simple_library,
|
|
|
|
'ng': ng
|
|
|
|
};
|
|
|
|
|
|
|
|
const IGNORE =
|
|
|
|
{
|
|
|
|
captureStackTrace: true,
|
|
|
|
stackTraceLimit: true,
|
|
|
|
toString: true,
|
|
|
|
originalException: true,
|
|
|
|
originalStack: true,
|
|
|
|
wrapperMessage: true,
|
2015-11-03 09:53:28 -05:00
|
|
|
wrapperStack: true, '@@observable': true
|
2015-09-21 19:48:16 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
function collectClassSymbols(symbols: string[], prefix: String, type: Function):
|
|
|
|
void {
|
|
|
|
// static
|
|
|
|
for (var name in type) {
|
|
|
|
if (IGNORE[name] || name.charAt(0) == '_') continue;
|
|
|
|
var suf = type[name] instanceof Function ? '()' : '';
|
|
|
|
var symbol = `${prefix}#${name}${suf}`;
|
|
|
|
symbols.push(symbol);
|
|
|
|
}
|
|
|
|
|
|
|
|
// instance
|
|
|
|
for (var name in type.prototype) {
|
|
|
|
if (IGNORE[name] || name.charAt(0) == '_') continue;
|
|
|
|
if (name == 'constructor') continue;
|
|
|
|
var suf = '';
|
|
|
|
try {
|
|
|
|
if (type.prototype[name] instanceof Function) suf = '()';
|
|
|
|
} catch (e) {
|
|
|
|
}
|
|
|
|
var symbol = `${prefix}.${name}${suf}`;
|
|
|
|
symbols.push(symbol);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function collectTopLevelSymbols(prefix: string, lib: any):
|
|
|
|
string[] {
|
|
|
|
var symbols: string[] = [];
|
|
|
|
for (var name in lib) {
|
|
|
|
var symbol = `${name}`;
|
|
|
|
var ref = lib[name];
|
|
|
|
if (ref instanceof Function) {
|
|
|
|
if (symbol.charAt(0) == symbol.charAt(0).toLowerCase()) {
|
|
|
|
// assume it is top level function
|
|
|
|
symbols.push(symbol + '()');
|
|
|
|
} else {
|
|
|
|
symbols.push(symbol);
|
|
|
|
collectClassSymbols(symbols, symbol, ref);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
symbols.push(symbol);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return symbols;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getSymbolsFromLibrary(name: string): string[] {
|
|
|
|
var symbols = collectTopLevelSymbols(name, LIB_MAP[name]);
|
|
|
|
symbols.sort();
|
|
|
|
return symbols;
|
|
|
|
}
|