UNPKG

2.27 kBJavaScriptView Raw
1'use strict';
2
3/**
4 * Generates javascript objects from elements.
5 */
6class ObjectGenerator {
7 /**
8 * Generate a javascript object from the elements.
9 *
10 * @param {Array} elements - The elements.
11 *
12 * @returns {Object} The javascript object.
13 */
14 generate(elements) {
15 if (elements) {
16 var object = {};
17 for (let element of elements) {
18 if (!element.isRemoved() && element.currentKey !== '') {
19 object[element.currentKey] = element.generateObject();
20 }
21 }
22 return object;
23 }
24 return elements;
25 }
26
27 /**
28 * Generate a javascript object from the elements with their original keys
29 * and values. This can be used in a query with an update to
30 * ensure the values on the document to edit are still up to date.
31 *
32 * @param {Array} elements - The elements.
33 *
34 * @returns {Object} The javascript object.
35 */
36 generateOriginal(elements) {
37 if (elements) {
38 var object = {};
39 for (let element of elements) {
40 if (!element.isAdded()) {
41 object[element.key] = element.generateOriginalObject();
42 }
43 }
44 return object;
45 }
46 return elements;
47 }
48
49 /**
50 * Generate an array from the elements.
51 *
52 * @param {Array} elements - The elements.
53 *
54 * @returns {Array} The array.
55 */
56 generateArray(elements) {
57 if (elements) {
58 var array = [];
59 for (let element of elements) {
60 if (!element.isRemoved()) {
61 if (element.elements) {
62 array.push(element.generateObject());
63 } else {
64 array.push(element.currentValue);
65 }
66 }
67 }
68 return array;
69 }
70 return elements;
71 }
72
73 /**
74 * Generate an array from the elements using their original values.
75 *
76 * @param {Array} elements - The elements.
77 *
78 * @returns {Array} The array.
79 */
80 generateOriginalArray(elements) {
81 if (elements) {
82 var array = [];
83 for (let element of elements) {
84 if (element.originalExpandableValue) {
85 array.push(element.generateOriginalObject());
86 } else if (!element.isAdded()) {
87 array.push(element.value);
88 }
89 }
90 return array;
91 }
92 return elements;
93 }
94}
95
96module.exports = new ObjectGenerator();