public JSONRenderer(JSONKeywords keywords) { super(new JSONBuilder<T, T>(keywords)); }
public JSONObject<R, T, P> nullableBool(String name, ToBoolFunction<T> isNull, ToBoolFunction<T> func) { assert(!declaredEmpty); builder.addFieldPrefix(name).addBool(isNull, func); return this; }
public <M> JSONObject<R, T, P> renderer(String name, JSONRenderer<M> renderer, ToMemberFunction<T, M> accessor) { builder.addFieldPrefix(name).addBuilder(renderer.builder, accessor); return this; }
public <E extends Enum<E>> JSONObject<R, T, P> enumName(String name, ToEnumFunction<T, E> func) { assert(!declaredEmpty); builder.addFieldPrefix(name).addEnumName(func); return this; }
public JSONObject<R, T, P> nullableDecimal(String name, int precision, ToBoolFunction<T> isNull, ToDoubleFunction<T> func, JSONType encode) { assert(!declaredEmpty); builder.addFieldPrefix(name).addDecimal(precision, isNull, func, encode); return this; }
public JSONObject<R, T, P> nullableInteger(String name, ToBoolFunction<T> isNull, ToLongFunction<T> func) { assert(!declaredEmpty); builder.addFieldPrefix(name).addInteger(isNull, func); return this; }
public JSONObject<R, T, P> string(String name, ToStringFunction<T> func) { assert(!declaredEmpty); builder.addFieldPrefix(name).addString(false, func); return this; }
public <E extends Enum<E>> JSONObject<R, T, P> enumOrdinal(String name, ToEnumFunction<T, E> func) { assert(!declaredEmpty); builder.addFieldPrefix(name).addEnumOrdinal(func); return this; } }
JSONBuilder<R, T> beginSelect() { final byte[] declaredMemberName = consumeDeclaredMemberName(); JSONBuilder<R, T> builder = new JSONBuilder<R, T>(new StringTemplateBuilder<T>(), kw, depth, root); builder.declaredMemberName = declaredMemberName; builder.ors = ors; this.scripts.add(builder); return builder; }
public JSONObject<R, T, P> constantNull(String name) { builder.addFieldPrefix(name).addNull(); return this; }
public <N, M> JSONBuilder<R, M> beginArray(final IteratorFunction<T, N> iterator, final IterMemberFunction<T, M> func) { final StringTemplateBuilder<M> notNullBranch = new StringTemplateBuilder<>(); kw.OpenArray(notNullBranch, depth); iterate(iterator, true, func, new RenderIteration<M, N>() { @Override public void render(AppendableByteWriter writer, M m, int i) { notNullBranch.render(writer, m); } }); return new JSONBuilder<R, M>(notNullBranch, kw, depth + 1, root); }
void recurseRoot(final ToMemberFunction<T, R> accessor) { if (root != this) { addBuilder(root, accessor); } }
void addBool(final ToBoolFunction<T> isNull, final ToBoolFunction<T> func, JSONType encode) { switch (encode) { case TypeString: break; case TypeInteger: break; case TypeDecimal: break; case TypeBoolean: addBool(isNull, func); break; } }
public <E extends Enum<E>> P enumOrdinal(ToEnumFunction<T, E> func) { builder.addEnumOrdinal(func); return this.childCompleted(); } }
public <E extends Enum<E>> P enumName(IterEnumFunction<T, E> func) { builder.addEnumName(iterator, func); return this.childCompleted(); }
public P constantNull() { builder.addNull(iterator); return this.childCompleted(); }
void addInteger(ToBoolFunction<T> isNull, ToLongFunction<T> func, JSONType encode) { switch (encode) { case TypeString: break; case TypeInteger: addInteger(isNull, func); break; case TypeDecimal: break; case TypeBoolean: break; } }
public P nullableString(IterStringFunction<T> func, JSONType encode) { builder.addString(iterator, true, func, encode); return this.childCompleted(); }
void addDecimal(int precision, ToBoolFunction<T> isNull, ToDoubleFunction<T> func, JSONType encode) { switch (encode) { case TypeString: break; case TypeInteger: break; case TypeDecimal: addDecimal(precision, isNull, func); break; case TypeBoolean: break; } }
public JSONObject<R, T, P> nullableDecimal(String name, int precision, ToBoolFunction<T> isNull, ToDoubleFunction<T> func) { assert(!declaredEmpty); builder.addFieldPrefix(name).addDecimal(precision, isNull, func); return this; }