package Specs;
sub subs {
my $sub = shift->getKey(@_);
return &{$sub};
}
sub getKey {
my $sub;
if ($_[1] =~ /Fry::Dump/) { $sub = 'dump'; }
elsif ($_[1] =~ /Fry::ReadLine/) { $sub = 'readline'; }
elsif ($_[1] =~ /Fry::View/) { $sub = 'view'; }
else {
$_[1] =~ /::(\w+)$/;
$sub = lc($1);
}
return $sub;
}
sub leftover {
print "yooo\n";
my $key = shift->getKey(@_);
return @{$left{$key}}
}
#SPECS
#parents
sub shell {
my @redefine = qw/loopDefault preLoop postLoop setPrompt parseLine autoView getInput postQuit/;
return (Specs->shell_script,Specs->shelli,Specs->base,@redefine);
}
sub shell_script { qw/shell once new loadPlugins loadFile initLibs runCmd/ }
sub shelli { return (qw/ varMany saveArray listAll List call/)
}
sub base { return qw/var lib cmd opt sub obj sh type
setVar Var setFlag Flag listCore
Caller Sub Config Dump Error Rline View view dumper/
}
sub list { return qw/new manyNew Obj objExists unloadObj get set getMany setMany attrExists
allAttr listIds listAliasAndIds listAlias findAlias anyAlias pushArray findIds defaultNew
indexObj defaultSet/
}
#core-all have isa:list,base
sub lib { return (qw/defaultNew runLibInits fullName getLibData readLibObj setAllObj
unloadLib
loadLib loadDependencies loadLibs initLibs/)
}
sub var { return qw/setOrMakeVar defaultNew defaultSet Var setVar/ }
sub opt { return qw/defaultNew setOptions Opt findSetOptions resetOptions preParseCmd/ }
sub cmd { return qw/defaultNew argAlias checkArgs runTest runCmd defaultTestName/ }
sub sub { return qw/parseEval parseChunks parseMultiline parseOptions parseNormal parseMenu
parseNum cmdList empty
call defaultNew subHook
chooseItems _require useThere spliceArray defaultTest/
}
sub obj {qw/defaultNew/}
#plugins-all have isa:base
sub readline { return qw/setup prompt stdin/} #shelli
sub error { return qw/setup sigHandler new setLevel flush stringify_stack/ }
sub dump { return qw/setup dump/}
sub view { return qw/setup view list hash/ }
#others CmdClass
#ISA
#list,base: easy
#shelli: shell,lib,readline,CmdClass
#CmdClass: all libs xcept default + core
#Sub::_Methods- all sub libs
#leftover
our %left = (
list=>[qw/list setId setHashDefault convertScalarToHash/, #internal
qw/setOrMake setObj getObj manyNewScalar callSubAttr/ #todo
],
var=>[qw/list/],
lib=>[qw/list reloadLibs/],
sub=>[qw/list/],
cmd=>[qw/list/],
opt=>[qw/list/],
obj=>[qw/list/],
shell=>[
qw/import/, #hidden
qw/wrap Dumper/,#other
],
dump=>[qw/CreateChainingFilter DumpTree DumpTrees/, #treedumper
'Dumper', #datadumper
],
error=>[qw/stack newwarn newdie/],
readline=>[qw/addhistory complete completeCmdArgs/], #hidden
view=>[qw/arrayOfArrays file objAoH objAoH_dt/], #unsure
);
1;