UNPKG

@wiz-code/async-fsm

Version:

Finite StateMachine JavaScript Library

99 lines (77 loc) 2.44 kB
/*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); }); }); });