(object, pair)
| 820 | |
| 821 | function form2json(data, noCastItems = []) { |
| 822 | let method = function (object, pair) { |
| 823 | let keys = pair[0].replace(/\]/g, '').split('['); |
| 824 | let key = keys[0]; |
| 825 | let value = pair[1]; |
| 826 | |
| 827 | if (!noCastItems.includes(keys.join('.'))) { |
| 828 | if (value === 'true' || value === 'false') { |
| 829 | value = value === 'true'; |
| 830 | |
| 831 | } else if (typeof (value) === 'string' && value.trim() !== '' && !isNaN(value)) { |
| 832 | value = parseFloat(value); |
| 833 | } |
| 834 | } |
| 835 | |
| 836 | if (keys.length > 1) { |
| 837 | let i, x, segment; |
| 838 | let last = value; |
| 839 | let type = isNaN(keys[1]) ? {} : []; |
| 840 | value = segment = object[key] || type; |
| 841 | |
| 842 | for (i = 1; i < keys.length; i++) { |
| 843 | x = keys[i]; |
| 844 | if (i == keys.length - 1) { |
| 845 | if (Array.isArray(segment)) { |
| 846 | segment.push(last); |
| 847 | } else { |
| 848 | segment[x] = last; |
| 849 | } |
| 850 | } else if (segment[x] == undefined) { |
| 851 | segment[x] = isNaN(keys[i + 1]) ? {} : []; |
| 852 | } |
| 853 | segment = segment[x]; |
| 854 | } |
| 855 | } |
| 856 | |
| 857 | object[key] = value; |
| 858 | return object; |
| 859 | } |
| 860 | |
| 861 | let object = Array.from(data).reduce(method, {}); |
| 862 | return JSON.stringify(object); |
nothing calls this directly
no outgoing calls
no test coverage detected