Pluggable.js

!!!!͋̕ClԂɂďꂽׁAǂނƔ]܂!!


Tv
@\̒ǉEgeՂȃNX𐶐B
NXɂ̓R}hƂă\bhǉłB
̃R}hɃtB^ƂăR}h֘AÂĊgłB
p[^IuWFNgɎsׂR}hłB

gp@

E1.AvP[VNX̐
ȉ̂悤ɂāAVmyPluginSystemNX𐶐
ɗ^֐RXgN^ƂȂB

myPluginSystem=new Pluggable(function(){
});


E2.AvP[VNX̊g
AvP[VNẌȉ̃\bhEvpeBŁAR}hǉĂ

addCommand(cName,func)
	funcŎw肳ꂽ֐cNameŎw肳ꂽR}hœo^B
	R}hmyPluginSystem.prototypeɃ\bhƂĒǉB
addCommands(obj)
	objcName:func̑g݂񋓂ÃR}h؂ɓo^łB
addDefaultCommand(pName,cName,func)
	execute()\bhCommandNameIdentifierɂR}hw肪ȂƂA
	sR}ho^B
	pNamew肷ƁA̖Õp[^w肳ĂƂ
	cNameŎw肳ꂽR}hs悤ɂȂB
	o^ꂽԂpNameA݂Ȃꍇ
	pName''w肵ēo^ꂽR}hsB
	ȂApNamew肵ĕsꂽꍇ́A㏑B
addFilter(cName,fName,func,before,top)
	cNameŎw肳ꂽR}hfNameŎw肳ꂽtB^o^B
	funcw肳ꂽꍇ́Å֐Aw肳Ȃꍇ́A
	ߋfNameœo^ꂽtB^֐o^B
	beforetrueȂR}h̑OɁAfalseȂR}ȟɎsB
	toptrueȂÃtB^̑OɁAfalseȂɓo^B
	tB^R}hƂēo^AtB^ɍXɃtB^t邱Ƃ\B
CommandNameIdentifier=
	execute()ɓnparamsŁAR}hw肷邽߂̃vpeBw肷B
	myPluginSystem.CommandNameIdentifier='c';
	ƂƁA
	(new myPluginSystem).execute({c:'myCommand',opt1:1234});
	ƂƂmyCommandƂR}hsB
	ftHgCommandNameIdentifieŕucommandvłB


Pluggable.loadPlugins(dir)
	dirŎw肳ꂽtH_*.jst@CǂݍݎsB
	vOCXNvgł́AAvP[VNX̊gs肷B

̑AR}htB^痘p\bh
myPluginSystem.prototypeɒǉĂ悢B
̂悤ȃ\bhAtB^ǉR}hƂČĂяoƂ\B



E3.AvP[VNX̃CX^X
ȉ̂悤ɂāACX^X𐶐B

ps=new myPluginSystem;


E4.R}h̎s

CX^XIuWFNg̈ȉ̃\bhŁAR}hsB

execute(params)
	p[^Qi[paramsIuWFNgɉďsB
	paramsw肳ȂꍇAthis.paramsQƂB
	[2]Őݒ肵ɏ]ĎsR}h܂B
execCommand(cName,params)
	cNameŎw肳ꂽR}hƁAɊ֘AÂꂽtB^s
	paramsɂ́A֐ɑIuWFNgwłB
execFilters(name,params,before)
	cNameŎw肳ꂽR}hɊ֘AÂꂽtB^sB
	beforew肵ꍇ́AR}hsOptB^sB
	paramsɂ́A֐ɑIuWFNgwłB

_EchoCommandLog_=true;
	R}hĂяoecho()֐(Std.jsŒ`)ŃOo͂s

̑Aڃ\bhĂяoĂ\ȂB


gp
ScrapBook.jsт̃vOCQƁB


TODO
Eo^R}htB^폜ł悤ɂ
EvOCǗ⏕NX̍쐬



