/
Stameskaaa
/
Server
Обзор
Документация
Войти
/
Stameskaaa
/
Server
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
node_modules/mpath/lib/stringToParts.js
48 строк
1 KB
Stameskaaa
first
19 июн 2024, 15:02
19 июн 2024, 15:02
ac1472e
Код
Авторство
О чём код?
'use strict'; module.exports = function stringToParts(str) { const result = []; let curPropertyName = ''; let state = 'DEFAULT'; for (let i = 0; i < str.length; ++i) { // Fall back to treating as property name rather than bracket notation if // square brackets contains something other than a number. if (state === 'IN_SQUARE_BRACKETS' && !/\d/.test(str[i]) && str[i] !== ']') { state = 'DEFAULT'; curPropertyName = result[result.length - 1] + '[' + curPropertyName; result.splice(result.length - 1, 1); } if (str[i] === '[') { if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') { result.push(curPropertyName); curPropertyName = ''; } state = 'IN_SQUARE_BRACKETS'; } else if (str[i] === ']') { if (state === 'IN_SQUARE_BRACKETS') { state = 'IMMEDIATELY_AFTER_SQUARE_BRACKETS'; result.push(curPropertyName); curPropertyName = ''; } else { state = 'DEFAULT'; curPropertyName += str[i]; } } else if (str[i] === '.') { if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') { result.push(curPropertyName); curPropertyName = ''; } state = 'DEFAULT'; } else { curPropertyName += str[i]; } } if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') { result.push(curPropertyName); } return result; };