Skip to content

Commit 30b875d

Browse files
committed
js-1.5.0 js-core-1.6.0 java-0.9.5 monaco-1.1.0 - add merge function, expose examples (int-tests) through js-core, migrate from microbundle to tsc. prepare for dynamic docs
1 parent 3cf505c commit 30b875d

File tree

127 files changed

+3756
-21692
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+3756
-21692
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,5 @@ gradle-app.setting
8181

8282
# ignore binaries created by VScode Java plugins
8383
**/bin/
84+
85+
**/*.tsbuildinfo

docs/docs/functions/merge.md

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
# $$merge
2+
3+
Merge multiple objects into one. Allows deep merging and array concatenation.
4+
5+
### Usage
6+
```transformers
7+
{
8+
"$$merge": [ /* objects */ ],
9+
"deep": /* true / false (default) */,
10+
"arrays": /* true / false (default) */
11+
}
12+
```
13+
```transformers
14+
"$$merge([deep],[arrays]):{input}"
15+
```
16+
### Returns
17+
`object` (The merged schema of all specified objects)
18+
19+
### Arguments
20+
| Argument | Type | Values | Required / Default Value | Description |
21+
|----------|-----------|--------|-------------------------------|---------------------------------|
22+
| Primary | `array` | | Yes | Array of objects to merge |
23+
| `deep` | `boolean` | | `false` | Whether to merge objects deeply |
24+
| `arrays` | `boolean` | | `false` | Whether to concatenate arrays |
25+
26+
## Examples
27+
28+
29+
```mdx-code-block
30+
<div className="examples_grid">
31+
```
32+
33+
**Input**
34+
35+
**Definition**
36+
37+
**Output**
38+
39+
```json
40+
{
41+
"a": "A"
42+
}
43+
```
44+
```transformers
45+
{
46+
"$$merge": [
47+
"$",
48+
{
49+
"b": "B"
50+
}
51+
]
52+
}
53+
```
54+
```json
55+
{
56+
"a": "A",
57+
"b": "B"
58+
}
59+
```
60+
61+
```json
62+
{
63+
"a": "A",
64+
"b": "B"
65+
}
66+
```
67+
```transformers
68+
{
69+
"$$merge": [
70+
"$",
71+
{
72+
"b": "BB"
73+
}
74+
]
75+
}
76+
```
77+
```json
78+
{
79+
"a": "A",
80+
"b": "BB"
81+
}
82+
```
83+
84+
```json
85+
{
86+
"a": "A",
87+
"b": "B"
88+
}
89+
```
90+
```transformers
91+
{
92+
"$$merge": [
93+
"$",
94+
{
95+
"b": "#null"
96+
}
97+
]
98+
}
99+
```
100+
```json
101+
{
102+
"a": "A",
103+
"b": null
104+
}
105+
```
106+
107+
```json
108+
{
109+
"a": {
110+
"aa": "AA"
111+
},
112+
"b": "B"
113+
}
114+
```
115+
```transformers
116+
{
117+
"$$merge": [
118+
"$",
119+
{
120+
"a": {
121+
"aaa": "AAA"
122+
}
123+
}
124+
]
125+
}
126+
```
127+
```json
128+
{
129+
"a": {
130+
"aaa": "AAA"
131+
},
132+
"b": "B"
133+
}
134+
```
135+
136+
```json
137+
{
138+
"a": {
139+
"aa": "AA"
140+
},
141+
"b": "B"
142+
}
143+
```
144+
```transformers
145+
{
146+
"$$merge": [
147+
"$",
148+
{
149+
"a": {
150+
"aaa": "AAA"
151+
}
152+
}
153+
],
154+
"deep": true
155+
}
156+
```
157+
```json
158+
{
159+
"a": {
160+
"aa": "AA",
161+
"aaa": "AAA"
162+
},
163+
"b": "B"
164+
}
165+
```
166+
167+
```json
168+
{
169+
"a": {
170+
"aa": "AA"
171+
},
172+
"c": [
173+
1,
174+
2
175+
]
176+
}
177+
```
178+
```transformers
179+
{
180+
"$$merge": [
181+
"$",
182+
{
183+
"a": {
184+
"aaa": "AAA"
185+
},
186+
"c": [
187+
3,
188+
4
189+
]
190+
}
191+
],
192+
"deep": true,
193+
"arrays": true
194+
}
195+
```
196+
```json
197+
{
198+
"a": {
199+
"aa": "AA",
200+
"aaa": "AAA"
201+
},
202+
"c": [
203+
1,
204+
2,
205+
3,
206+
4
207+
]
208+
}
209+
```
210+
211+
```json
212+
{
213+
"a": {
214+
"aa": "AA"
215+
},
216+
"c": [
217+
1,
218+
2
219+
]
220+
}
221+
```
222+
```transformers
223+
{
224+
"$$merge": [
225+
"$",
226+
{
227+
"a": {
228+
"aaa": "AAA"
229+
},
230+
"c": [
231+
3,
232+
4
233+
]
234+
}
235+
],
236+
"arrays": true
237+
}
238+
```
239+
```json
240+
{
241+
"a": {
242+
"aaa": "AAA"
243+
},
244+
"c": [
245+
1,
246+
2,
247+
3,
248+
4
249+
]
250+
}
251+
```
252+
253+
```mdx-code-block
254+
</div>
255+
```

docs/package-lock.json

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
"@docusaurus/preset-classic": "3.7.0",
2020
"@mdx-js/react": "3.1.0",
2121
"@monaco-editor/react": "4.6.0",
22-
"@nlighten/json-transform": "^1.3.3",
23-
"@nlighten/json-transform-core": "^1.5.0",
24-
"@nlighten/monaco-json-transform": "^1.0.0",
22+
"@nlighten/json-transform": "^1.5.0",
23+
"@nlighten/json-transform-core": "^1.6.0",
24+
"@nlighten/monaco-json-transform": "^1.1.0",
2525
"buffer": "^6.0.3",
2626
"clsx": "2.1.0",
2727
"crypto-browserify": "^3.12.1",

java/json-transform/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ plugins {
99
}
1010

1111
group 'co.nlighten'
12-
version = '0.9.4'
12+
version = '0.9.5'
1313

1414
ext {
1515
gsonVersion = "2.10.1"

java/json-transform/src/main/java/co/nlighten/jsontransform/JsonTransformer.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ protected Object fromJsonObject(String path, Object definition, ParameterResolve
9393
}
9494

9595
var result = adapter.createObject();
96-
if (adapter.has(definition, OBJ_DESTRUCT_KEY)) {
96+
var hasObjectDestruction = adapter.has(definition, OBJ_DESTRUCT_KEY);
97+
if (hasObjectDestruction) {
9798
var val = adapter.get(definition, OBJ_DESTRUCT_KEY);
9899
var res = fromJsonElement(path + "[\"*\"]", val, resolver, false);
99100
if (res != null) {
@@ -120,9 +121,13 @@ protected Object fromJsonObject(String path, Object definition, ParameterResolve
120121
var localKey = kv.getKey();
121122
var localValue = kv.getValue();
122123
if (adapter.isJsonString(localValue) && adapter.getAsString(localValue).equals(NULL_VALUE)) {
123-
// don't define key if #null was used
124-
// might already exist, so try removing it
125-
adapter.remove(result, localKey);
124+
if (hasObjectDestruction) {
125+
// don't define key if #null was used
126+
// might already exist, so try removing it
127+
adapter.remove(result, localKey);
128+
} else {
129+
adapter.add(result, localKey, adapter.jsonNull());
130+
}
126131
continue;
127132
}
128133
var value = fromJsonElement(

java/json-transform/src/main/java/co/nlighten/jsontransform/TransformerFunctions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class TransformerFunctions implements TransformerFunctionsAdapter {
7171
Map.entry("matchall", new TransformerFunctionMatchAll()),
7272
Map.entry("math", new TransformerFunctionMath()),
7373
Map.entry("max",new TransformerFunctionMax()),
74+
Map.entry("merge",new TransformerFunctionMerge()),
7475
Map.entry("min",new TransformerFunctionMin()),
7576
Map.entry("normalize", new TransformerFunctionNormalize()),
7677
Map.entry("not", new TransformerFunctionNot()),

0 commit comments

Comments
 (0)