WriteRuntimeContainer static method

dynamic WriteRuntimeContainer(
  1. SimpleJsonWriter writer,
  2. Container? container, [
  3. bool withoutName = false
])

Implementation

static WriteRuntimeContainer(SimpleJsonWriter writer, Container? container,
    [bool withoutName = false]) {
  writer.WriteArrayStart();
  if (container == null) {
    return ArgumentError.notNull('container');
  }
  for (var c in container.content) {
    WriteRuntimeObject(writer, c);
  }

  var namedOnlyContent = container.namedOnlyContent;
  var countFlags = container.countFlags;
  var hasNameProperty = container.name != null && !withoutName;

  var hasTerminator =
      namedOnlyContent != null || countFlags > 0 || hasNameProperty;
  if (hasTerminator) {
    writer.WriteObjectStart();
  }

  if (namedOnlyContent != null) {
    for (var kv in namedOnlyContent.entries) {
      var name = kv.key;
      var namedContainer = asOrNull<Container>(kv.value);
      writer.WritePropertyStart(name);
      JsonSerialization.WriteRuntimeContainer(writer, namedContainer, true);
      writer.WritePropertyEnd();
    }
  }

  if (hasNameProperty) writer.WriteProperty('#n', container.name);

  if (hasTerminator) {
    writer.WriteObjectEnd();
  } else {
    writer.WriteNull();
  }

  writer.WriteArrayEnd();
}