Skip to content

Commit 618844a

Browse files
committed
Add new function add_array and add_hash #374
The are a copy of the current implementation of set_array and set_hash. This is a preparation for #309
1 parent 9b4a6c1 commit 618844a

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

metafix/src/main/java/org/metafacture/metafix/FixMethod.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,29 @@ public void apply(final Metafix metafix, final Record record, final List<String>
164164

165165
// RECORD-LEVEL METHODS:
166166

167+
add_array {
168+
@Override
169+
public void apply(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options) {
170+
final String field = params.get(0);
171+
final Value newValue = newArray(params.subList(1, params.size()).stream().map(Value::new));
172+
record.set(field, newValue);
173+
newValue.asArray().forEach(value -> value.withPathSet(newValue.getPath() + "." + value.getPath()));
174+
}
175+
},
167176
add_field {
168177
@Override
169178
public void apply(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options) {
170179
record.set(params.get(0), new Value(params.get(1)));
171180
}
172181
},
182+
add_hash {
183+
@Override
184+
public void apply(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options) {
185+
final String field = params.get(0);
186+
final Value newValue = Value.newHash(h -> options.forEach((f, v) -> h.put(f, new Value(v))));
187+
record.set(field, newValue);
188+
}
189+
},
173190
array { // array-from-hash
174191
@Override
175192
public void apply(final Metafix metafix, final Record record, final List<String> params, final Map<String, String> options) {

0 commit comments

Comments
 (0)