• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

NIT-Administrative-Systems / dynamic-forms / 13506106128

24 Feb 2025 07:22PM UTC coverage: 59.275% (-34.7%) from 94.003%
13506106128

Pull #480

github

nie7321
Additional annotations
Pull Request #480: Laravel 12

818 of 1380 relevant lines covered (59.28%)

44.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/JSONLogicInitHelper.php
1
<?php
2

3
namespace Northwestern\SysDev\DynamicForms;
4

5
use JWadhams\JsonLogic;
6
use Northwestern\SysDev\DynamicForms\JSONLogic\LodashFunctions\___;
7

8
class JSONLogicInitHelper
9
{
10
    /** This Lodash function is intentionally not offered. */
11
    private const NOT_IMPLEMENTED = 0;
12

13
    /** Implementation comes from northwestern-sysdev/lodash-php package */
14
    private const LIB_LODASH_PHP = 1;
15

16
    /**
17
     * The function is implemented by this package, in the {@see ___} class.
18
     */
19
    private const IN_PACKAGE = 3;
20

21
    public function __construct()
22
    {
23
        $this->registerLodash();
×
24
    }
25

26
    /**
27
     * Registers all the lodash functions.
28
     */
29
    private function registerLodash(): void
30
    {
31
        //This list contains all the lodash functions (supported by formsio) and implementation source
32
        // (0 is missing, self::LIB_LODASH_PHP is lodash-php library, self::LIB_MEIO is php-lodash library, and 3 is from this repo)
33
        $lodashList = [
×
34
            // Array
35
            ['chunk', self::LIB_LODASH_PHP],
×
36
            ['compact', self::LIB_LODASH_PHP],
×
37
            ['concat', self::LIB_LODASH_PHP],
×
38
            ['difference', self::LIB_LODASH_PHP],
×
39
            ['differenceBy', self::NOT_IMPLEMENTED],
×
40
            ['differenceWith', self::NOT_IMPLEMENTED],
×
41
            ['drop', self::LIB_LODASH_PHP],
×
42
            ['dropRight', self::LIB_LODASH_PHP],
×
43
            ['dropRightWhile', self::NOT_IMPLEMENTED],
×
44
            ['dropWhile', self::NOT_IMPLEMENTED],
×
45
            ['findIndex', self::LIB_LODASH_PHP],
×
46
            ['findLastIndex', self::LIB_LODASH_PHP],
×
47
            ['first', self::IN_PACKAGE],
×
48
            ['flatten', self::LIB_LODASH_PHP],
×
49
            ['flattenDeep', self::LIB_LODASH_PHP],
×
50
            ['flattenDepth', self::LIB_LODASH_PHP],
×
51
            ['fromPairs', self::IN_PACKAGE],
×
52
            ['head', self::LIB_LODASH_PHP],
×
53
            ['indexOf', self::LIB_LODASH_PHP],
×
54
            ['initial', self::LIB_LODASH_PHP],
×
55
            ['intersection', self::LIB_LODASH_PHP],
×
56
            ['intersectionBy', self::NOT_IMPLEMENTED],
×
57
            ['intersectionWith', self::NOT_IMPLEMENTED],
×
58
            ['join', self::IN_PACKAGE],
×
59
            ['last', self::LIB_LODASH_PHP],
×
60
            ['lastIndexOf', self::LIB_LODASH_PHP],
×
61
            ['nth', self::LIB_LODASH_PHP],
×
62
            ['slice', self::IN_PACKAGE],
×
63
            ['sortedIndex', self::IN_PACKAGE],
×
64
            ['sortedIndexBy', self::NOT_IMPLEMENTED],
×
65
            ['sortedIndexOf', self::IN_PACKAGE],
×
66
            ['sortedLastIndex', self::IN_PACKAGE],
×
67
            ['sortedLastIndexBy', self::NOT_IMPLEMENTED],
×
68
            ['sortedLastIndexOf', self::IN_PACKAGE],
×
69
            ['sortedUniq', self::IN_PACKAGE],
×
70
            ['sortedUniqBy', self::NOT_IMPLEMENTED],
×
71
            ['tail', self::LIB_LODASH_PHP],
×
72
            ['take', self::LIB_LODASH_PHP],
×
73
            ['takeRight', self::LIB_LODASH_PHP],
×
74
            ['takeRightWhile', self::LIB_LODASH_PHP],
×
75
            ['takeWhile', self::LIB_LODASH_PHP],
×
76
            ['union', self::LIB_LODASH_PHP],
×
77
            ['unionBy', self::NOT_IMPLEMENTED],
×
78
            ['unionWith', self::NOT_IMPLEMENTED],
×
79
            ['uniq', self::LIB_LODASH_PHP],
×
80
            ['uniqBy', self::NOT_IMPLEMENTED],
×
81
            ['uniqWith', self::NOT_IMPLEMENTED],
×
82
            ['unzip', self::LIB_LODASH_PHP],
×
83
            ['unzipWith', self::NOT_IMPLEMENTED],
×
84
            ['without', self::LIB_LODASH_PHP],
×
85
            ['xor', self::NOT_IMPLEMENTED],
×
86
            ['xorBy', self::NOT_IMPLEMENTED],
×
87
            ['xorWith', self::NOT_IMPLEMENTED],
×
88
            ['zip', self::LIB_LODASH_PHP],
×
89
            ['zipObject', self::LIB_LODASH_PHP],
×
90
            ['zipObjectDeep', self::LIB_LODASH_PHP],
×
91
            ['zipWith', self::NOT_IMPLEMENTED],
×
92
            // Collection
93
            ['countBy', self::NOT_IMPLEMENTED],
×
94
            ['every', self::LIB_LODASH_PHP],
×
95
            ['filter', self::LIB_LODASH_PHP],
×
96
            ['find', self::LIB_LODASH_PHP],
×
97
            ['findLast', self::LIB_LODASH_PHP],
×
98
            ['flatMap', self::NOT_IMPLEMENTED],
×
99
            ['flatMapDeep', self::NOT_IMPLEMENTED],
×
100
            ['flatMapDepth', self::NOT_IMPLEMENTED],
×
101
            ['groupBy', self::NOT_IMPLEMENTED],
×
102
            ['includes', self::IN_PACKAGE],
×
103
            ['invokeMap', self::NOT_IMPLEMENTED],
×
104
            ['keyBy', self::LIB_LODASH_PHP],
×
105
            ['map', self::LIB_LODASH_PHP],
×
106
            ['orderBy', self::IN_PACKAGE],
×
107
            ['partition', self::NOT_IMPLEMENTED],
×
108
            ['reduce', self::NOT_IMPLEMENTED],
×
109
            ['reduceRight', self::NOT_IMPLEMENTED],
×
110
            ['reject', self::LIB_LODASH_PHP],
×
111
            ['sample', self::LIB_LODASH_PHP], //untested
×
112
            ['sampleSize', self::LIB_LODASH_PHP], //untested
×
113
            ['shuffle', self::LIB_LODASH_PHP], //untested
×
114
            ['size', self::LIB_LODASH_PHP],
×
115
            ['some', self::LIB_LODASH_PHP],
×
116
            ['sortBy', self::LIB_LODASH_PHP],
×
117
            // Date
118
            ['now', self::LIB_LODASH_PHP],
×
119
            // Function
120
            ['flip', self::NOT_IMPLEMENTED],
×
121
            ['negate', self::NOT_IMPLEMENTED],
×
122
            ['overArgs', self::NOT_IMPLEMENTED],
×
123
            ['partial', self::NOT_IMPLEMENTED],
×
124
            ['partialRight', self::NOT_IMPLEMENTED],
×
125
            ['rearg', self::NOT_IMPLEMENTED],
×
126
            ['rest', self::NOT_IMPLEMENTED],
×
127
            ['spread', self::NOT_IMPLEMENTED],
×
128
            // Lang
129
            ['castArray', self::IN_PACKAGE],
×
130
            ['clone', self::NOT_IMPLEMENTED],
×
131
            ['cloneDeep', self::NOT_IMPLEMENTED],
×
132
            ['cloneDeepWith', self::NOT_IMPLEMENTED],
×
133
            ['conformsTo', self::NOT_IMPLEMENTED],
×
134
            ['eq', self::LIB_LODASH_PHP],
×
135
            ['gt', self::IN_PACKAGE],
×
136
            ['gte', self::IN_PACKAGE],
×
137
            ['isArguments', self::NOT_IMPLEMENTED],
×
138
            ['isArray', self::IN_PACKAGE],
×
139
            ['isArrayBuffer', self::NOT_IMPLEMENTED],
×
140
            ['isArrayLike', self::IN_PACKAGE],
×
141
            ['isArrayLikeObject', self::IN_PACKAGE],
×
142
            ['isBoolean', self::IN_PACKAGE],
×
143
            ['isBuffer', self::NOT_IMPLEMENTED],
×
144
            ['isDate', self::NOT_IMPLEMENTED],
×
145
            ['isElement', self::NOT_IMPLEMENTED],
×
146
            ['isEmpty', self::IN_PACKAGE],
×
147
            ['isEqual', self::LIB_LODASH_PHP],
×
148
            ['isEqualWith', self::NOT_IMPLEMENTED],
×
149
            ['isError', self::LIB_LODASH_PHP],
×
150
            ['isFinite', self::IN_PACKAGE],
×
151
            ['isFunction', self::NOT_IMPLEMENTED],
×
152
            ['isInteger', self::IN_PACKAGE],
×
153
            ['isLength', self::IN_PACKAGE],
×
154
            ['isMap', self::NOT_IMPLEMENTED],
×
155
            ['isMatch', self::IN_PACKAGE],
×
156
            ['isMatchWith', self::NOT_IMPLEMENTED],
×
157
            ['isNaN', self::IN_PACKAGE],
×
158
            ['isNative', self::NOT_IMPLEMENTED],
×
159
            ['isNil', self::NOT_IMPLEMENTED],
×
160
            ['isNull', self::IN_PACKAGE],
×
161
            ['isNumber', self::IN_PACKAGE],
×
162
            ['isObject', self::IN_PACKAGE],
×
163
            ['isObjectLike', self::NOT_IMPLEMENTED],
×
164
            ['isPlainObject', self::NOT_IMPLEMENTED],
×
165
            ['isRegExp', self::NOT_IMPLEMENTED],
×
166
            ['isSafeInteger', self::NOT_IMPLEMENTED],
×
167
            ['isSet', self::NOT_IMPLEMENTED],
×
168
            ['isString', self::IN_PACKAGE],
×
169
            ['isSymbol', self::NOT_IMPLEMENTED],
×
170
            ['isTypedArray', self::NOT_IMPLEMENTED],
×
171
            ['isUndefined', self::NOT_IMPLEMENTED],
×
172
            ['isWeakMap', self::NOT_IMPLEMENTED],
×
173
            ['isWeakSet', self::NOT_IMPLEMENTED],
×
174
            ['lt', self::IN_PACKAGE],
×
175
            ['lte', self::IN_PACKAGE],
×
176
            ['toArray', self::IN_PACKAGE],
×
177
            ['toFinite', self::IN_PACKAGE],
×
178
            ['toInteger', self::IN_PACKAGE],
×
179
            ['toLength', self::IN_PACKAGE],
×
180
            ['toNumber', self::IN_PACKAGE],
×
181
            ['toPlainObject', self::NOT_IMPLEMENTED],
×
182
            ['toSafeInteger', self::IN_PACKAGE],
×
183
            ['toString', self::IN_PACKAGE],
×
184
            // Math
185
            ['add', self::LIB_LODASH_PHP],
×
186
            ['ceil', self::IN_PACKAGE],
×
187
            ['divide', self::IN_PACKAGE],
×
188
            ['floor', self::IN_PACKAGE],
×
189
            ['max', self::LIB_LODASH_PHP],
×
190
            ['maxBy', self::LIB_LODASH_PHP],
×
191
            ['mean', self::IN_PACKAGE],
×
192
            ['meanBy', self::NOT_IMPLEMENTED],
×
193
            ['min', self::IN_PACKAGE],
×
194
            ['minBy', self::NOT_IMPLEMENTED],
×
195
            ['multiply', self::IN_PACKAGE],
×
196
            ['round', self::IN_PACKAGE],
×
197
            ['subtract', self::IN_PACKAGE],
×
198
            ['sum', self::IN_PACKAGE],
×
199
            ['sumBy', self::NOT_IMPLEMENTED],
×
200
            // Number
201
            ['clamp', self::LIB_LODASH_PHP],
×
202
            ['inRange', self::LIB_LODASH_PHP],
×
203
            ['random', self::LIB_LODASH_PHP], //untested
×
204
            // Object
205
            ['at', self::IN_PACKAGE],
×
206
            ['entries', self::IN_PACKAGE],
×
207
            ['entriesIn', self::IN_PACKAGE],
×
208
            ['findKey', self::NOT_IMPLEMENTED],
×
209
            ['findLastKey', self::NOT_IMPLEMENTED],
×
210
            ['functions', self::NOT_IMPLEMENTED],
×
211
            ['functionsIn', self::NOT_IMPLEMENTED],
×
212
            ['get', self::LIB_LODASH_PHP],
×
213
            ['has', self::IN_PACKAGE],
×
214
            ['hasIn', self::IN_PACKAGE],
×
215
            ['invert', self::IN_PACKAGE],
×
216
            ['invertBy', self::NOT_IMPLEMENTED],
×
217
            ['invoke', self::NOT_IMPLEMENTED],
×
218
            ['keys', self::IN_PACKAGE],
×
219
            ['keysIn', self::IN_PACKAGE],
×
220
            ['mapKeys', self::NOT_IMPLEMENTED],
×
221
            ['mapValues', self::NOT_IMPLEMENTED],
×
222
            ['omit', self::IN_PACKAGE],
×
223
            ['omitBy', self::NOT_IMPLEMENTED],
×
224
            ['pick', self::IN_PACKAGE],
×
225
            ['pickBy', self::NOT_IMPLEMENTED],
×
226
            ['result', self::IN_PACKAGE],
×
227
            ['toPairs', self::IN_PACKAGE],
×
228
            ['toPairsIn', self::IN_PACKAGE],
×
229
            ['transform', self::NOT_IMPLEMENTED],
×
230
            ['values', self::IN_PACKAGE],
×
231
            ['valuesIn', self::IN_PACKAGE],
×
232
            // String
233
            ['camelCase', self::LIB_LODASH_PHP],
×
234
            ['capitalize', self::LIB_LODASH_PHP],
×
235
            ['deburr', self::LIB_LODASH_PHP],
×
236
            ['endsWith', self::LIB_LODASH_PHP],
×
237
            ['escape', self::LIB_LODASH_PHP],
×
238
            ['escapeRegExp', self::LIB_LODASH_PHP],
×
239
            ['kebabCase', self::LIB_LODASH_PHP],
×
240
            ['lowerCase', self::LIB_LODASH_PHP],
×
241
            ['lowerFirst', self::LIB_LODASH_PHP],
×
242
            ['pad', self::LIB_LODASH_PHP],
×
243
            ['padEnd', self::LIB_LODASH_PHP],
×
244
            ['padStart', self::LIB_LODASH_PHP],
×
245
            ['parseInt', self::LIB_LODASH_PHP],
×
246
            ['repeat', self::LIB_LODASH_PHP],
×
247
            ['replace', self::LIB_LODASH_PHP],
×
248
            ['snakeCase', self::LIB_LODASH_PHP],
×
249
            ['split', self::LIB_LODASH_PHP],
×
250
            ['startCase', self::LIB_LODASH_PHP],
×
251
            ['startsWith', self::LIB_LODASH_PHP],
×
252
            ['toLower', self::LIB_LODASH_PHP],
×
253
            ['toUpper', self::LIB_LODASH_PHP],
×
254
            ['trim', self::LIB_LODASH_PHP],
×
255
            ['trimEnd', self::LIB_LODASH_PHP],
×
256
            ['trimStart', self::LIB_LODASH_PHP],
×
257
            ['truncate', self::LIB_LODASH_PHP],
×
258
            ['unescape', self::LIB_LODASH_PHP],
×
259
            ['upperCase', self::LIB_LODASH_PHP],
×
260
            ['upperFirst', self::LIB_LODASH_PHP],
×
261
            ['words', self::LIB_LODASH_PHP],
×
262
            // Util
263
            ['cond', self::NOT_IMPLEMENTED],
×
264
            ['conforms', self::NOT_IMPLEMENTED],
×
265
            ['constant', self::IN_PACKAGE],
×
266
            ['defaultTo', self::LIB_LODASH_PHP],
×
267
            ['flow', self::NOT_IMPLEMENTED],
×
268
            ['flowRight', self::NOT_IMPLEMENTED],
×
269
            ['identity', self::LIB_LODASH_PHP],
×
270
            ['iteratee', self::IN_PACKAGE],
×
271
            ['matches', self::IN_PACKAGE],
×
272
            ['matchesProperty', self::IN_PACKAGE],
×
273
            ['method', self::NOT_IMPLEMENTED],
×
274
            ['methodOf', self::NOT_IMPLEMENTED],
×
275
            ['nthArg', self::NOT_IMPLEMENTED],
×
276
            ['over', self::NOT_IMPLEMENTED],
×
277
            ['overEvery', self::NOT_IMPLEMENTED],
×
278
            ['overSome', self::NOT_IMPLEMENTED],
×
279
            ['property', self::LIB_LODASH_PHP],
×
280
            ['propertyOf', self::NOT_IMPLEMENTED],
×
281
            ['range', self::IN_PACKAGE],
×
282
            ['rangeRight', self::IN_PACKAGE],
×
283
            ['stubArray', self::IN_PACKAGE],
×
284
            ['stubFalse', self::IN_PACKAGE],
×
285
            ['stubObject', self::IN_PACKAGE],
×
286
            ['stubString', self::IN_PACKAGE],
×
287
            ['stubTrue', self::IN_PACKAGE],
×
288
            ['times', self::IN_PACKAGE],
×
289
            ['toPath', self::IN_PACKAGE],
×
290
            ['uniqueId', self::NOT_IMPLEMENTED],
×
291
        ];
×
292
        foreach ($lodashList as $lodashfunct) {
×
293
            if ($lodashfunct[1] == self::LIB_LODASH_PHP) {
×
294
                JsonLogic::add_operation('_'.$lodashfunct[0], '_Lodash::'.$lodashfunct[0]);
×
295
            }
296

297
            if ($lodashfunct[1] == self::IN_PACKAGE) {
×
298
                JsonLogic::add_operation('_'.$lodashfunct[0], [___::class, $lodashfunct[0]]);
×
299
            }
300
        }
301
    }
302
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc