@wiz-code/async-fsm
Version:
Finite StateMachine JavaScript Library
99 lines (77 loc) • 2.44 kB
JavaScript
/*var pureObject = Object.create(null);
var object = {};
var proto = Object.getPrototypeOf(object);
console.log(Object.getPrototypeOf(pureObject));
console.log(Object.getPrototypeOf(object));
console.log(Object.getPrototypeOf(proto));*/
/*var DELIMITER = '/';
var trim = (function () {
var escaped, pattern;
escaped = DELIMITER.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
pattern = new RegExp('^' + escaped + '+|' + escaped + '+$', 'g');
return function (str) {
return str.replace(pattern, '');
};
}());
var str = DELIMITER + 'test' + DELIMITER;
console.log(DELIMITER, str, trim(str));*/
/*var arr = [];
var pop = arr.pop();
console.log(pop);
console.log(arr);*/
var _ = require('underscore');
var assert = require('power-assert');
var FSM = require('../src');
var Model = require('../src/model');
var sinon = require('sinon');
FSM.globalize();
FSM.logger.setLogLevel('error');
var DELIMITER = '/';
function _getChildrenPath(object, currentPath, collection) {
currentPath = !_.isUndefined(currentPath) ? currentPath : DELIMITER;
collection = !_.isUndefined(collection) ? collection : [];
if (_.isObject(object)) {
_.each(object, function (value, key) {
var path = currentPath !== DELIMITER ? currentPath + DELIMITER + key : key;
_getChildrenPath(value, path, collection);
});
}
collection.push(currentPath);
return collection;
}
function _getParentPath(query, collection) {
var path = _parseQuery(query);
collection = !_.isUndefined(collection) ? collection : [];
if (path.length) {
path.pop();
path.reverse().push(DELIMITER);
}
Array.prototype.push.apply(collection, path);
return collection;
}
function _parseQuery(query) {
if (query !== DELIMITER) {
return query.split(DELIMITER);
} else {
return [];
}
}
describe('Test Model', function () {
describe('#get-set()', function () {
var region, state, result;
beforeEach(function (done) {
done();
});
it('should ...', function () {
var sample = {
a: {
b: 1,
},
c: [100, 101, 102]
};
//root/subroot
var path = _getChildrenPath(sample, 'root/subroot').concat(_getParentPath('root/subroot'));
console.log(path);
});
});
});