WriteInkList static method

dynamic WriteInkList(
  1. SimpleJsonWriter writer,
  2. ListValue listVal
)

Implementation

static WriteInkList(SimpleJsonWriter writer, ListValue listVal) {
  var rawList = listVal.value;
  if (rawList == null) {
    return ArgumentError.notNull("rawList");
  }

  writer.WriteObjectStart();
  writer.WritePropertyStart("list");
  writer.WriteObjectStart();

  for (var kv in rawList.entries) {
    var item = kv.key;
    var itemVal = kv.value;

    if (item.itemName == null) {
      return ArgumentError.notNull("item.itemName");
    }

    writer.WritePropertyNameStart();
    writer.WritePropertyNameInner(item.originName ?? "?");
    writer.WritePropertyNameInner(".");
    writer.WritePropertyNameInner(item.itemName!);
    writer.WritePropertyNameEnd();

    writer.Write(itemVal);

    writer.WritePropertyEnd();
  }

  writer.WriteObjectEnd();

  writer.WritePropertyEnd();

  if (rawList.isEmpty &&
      rawList.originNames != null &&
      rawList.originNames!.isNotEmpty) {
    writer.WritePropertyStart("origins");
    writer.WriteArrayStart();
    for (var name in rawList.originNames!) {
      writer.Write(name);
    }
    writer.WriteArrayEnd();
    writer.WritePropertyEnd();
  }

  writer.WriteObjectEnd();
}