mirror of
https://github.com/borbann-platform/srs-document.git
synced 2025-12-19 20:44:07 +01:00
53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = recursePrefix;
|
|
|
|
var _config = require('./config');
|
|
|
|
var _config2 = _interopRequireDefault(_config);
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
// sort items as they're being found
|
|
// to prevent slow .sort() in NodeJs
|
|
var pushInOrder = function pushInOrder(word, prefixes) {
|
|
var i = 0;
|
|
|
|
while (i < prefixes.length) {
|
|
if (word < prefixes[i]) {
|
|
break;
|
|
}
|
|
i += 1;
|
|
}
|
|
|
|
prefixes.splice(i, 0, word);
|
|
|
|
return prefixes;
|
|
};
|
|
|
|
function recursePrefix(node, prefix, sorted) {
|
|
var prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
|
|
var word = prefix;
|
|
|
|
for (var branch in node) {
|
|
var currentLetter = branch;
|
|
if (branch === _config2.default.END_WORD && typeof node[branch] === 'number') {
|
|
if (sorted) {
|
|
pushInOrder(word, prefixes);
|
|
} else {
|
|
prefixes.push(word);
|
|
}
|
|
word = '';
|
|
} else if (branch === _config2.default.END_WORD_REPLACER) {
|
|
currentLetter = _config2.default.END_WORD;
|
|
}
|
|
recursePrefix(node[branch], prefix + currentLetter, sorted, prefixes);
|
|
}
|
|
|
|
return prefixes;
|
|
}
|
|
module.exports = exports['default']; |