初始化fy
This commit is contained in:
45
uni_modules/UniDevTools/node_modules/licia/State.js
generated
vendored
Normal file
45
uni_modules/UniDevTools/node_modules/licia/State.js
generated
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
var Emitter = require('./Emitter');
|
||||
var each = require('./each');
|
||||
var some = require('./some');
|
||||
var toArr = require('./toArr');
|
||||
exports = Emitter.extend({
|
||||
className: 'State',
|
||||
initialize: function(initial, events) {
|
||||
this.callSuper(Emitter, 'initialize');
|
||||
this.current = initial;
|
||||
var self = this;
|
||||
each(events, function(event, key) {
|
||||
self[key] = buildEvent(key, event);
|
||||
});
|
||||
},
|
||||
is: function(state) {
|
||||
return this.current === state;
|
||||
}
|
||||
});
|
||||
function buildEvent(name, event) {
|
||||
var from = toArr(event.from);
|
||||
var to = event.to;
|
||||
return function() {
|
||||
var args = toArr(arguments);
|
||||
args.unshift(name);
|
||||
var hasEvent = some(
|
||||
from,
|
||||
function(val) {
|
||||
return this.current === val;
|
||||
},
|
||||
this
|
||||
);
|
||||
if (hasEvent) {
|
||||
this.current = to;
|
||||
this.emit.apply(this, args);
|
||||
} else {
|
||||
this.emit(
|
||||
'error',
|
||||
new Error(this.current + ' => ' + to + ' error'),
|
||||
name
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user