from static method

Data from(
  1. dynamic value, {
  2. String? root,
})

Implementation

static Data from(dynamic value, {String? root}) {
  Data? data;

  if (value is List) data = Data(data: value);
  if (value is Data) data = value;
  if (value is String) {
    var isXml = value.trim().startsWith('<');
    data = isXml ? Data.fromXml(value) : Data.fromJson(value);
  }

  // default
  data ??= Data(data: data);

  // root should be supplied
  root ??= data.findRoot(root);

  // select sub-list
  if (root != null) {
    // convert root to dot notation
    DotNotation? dotnotation = DotNotation.fromString(root);

    // get sublist
    if (dotnotation != null) data = fromDotNotation(data, dotnotation);
  }

  // build default data set
  data ??= Data(data: null);

  // save root name
  data.root = root;

  return data;
}