toValueNode method

ValueNode toValueNode()

Implementation

ValueNode toValueNode() {
  final self = this;
  if (self == null) return const NullValueNode();
  if (self is String) {
    return StringValueNode(value: self, isBlock: false);
  } else if (self is int) {
    return IntValueNode(value: self.toString());
  } else if (self is num) {
    return FloatValueNode(value: self.toString());
  } else if (self is Iterable<Object?>) {
    return ListValueNode(values: self.map((e) => e.toValueNode()).toList());
  } else if (self is Map<Object?, Object?>) {
    return ObjectValueNode(
        fields: self.entries
            .map((entry) => ObjectFieldNode(
                  name: entry.key.toString().toNameNode(),
                  value: entry.value.toValueNode(),
                ))
            .toList());
  } else {
    throw "Don't know how to create value node from ${this.runtimeType}";
  }
}