fromDotNotation static method

Data? fromDotNotation(
  1. Data data,
  2. DotNotation dotnotation
)

Implementation

static Data? fromDotNotation(Data data, DotNotation dotnotation)
{
  try
  {
    if (data.isEmpty) return null;

    dynamic _data = data;
    if (dotnotation.isEmpty) return _data;

    // parse list
    for (NotationSegment? property in dotnotation)
    if (property != null)
    {
      if (_data is Map)
      {
        if (!_data.containsKey(property.name))
        {
          _data = null;
          break;
        }
        _data = _data[property.name];
      }

      else if (_data is List)
      {
        if (_data.length < property.offset)
        {
          _data = null;
          break;
        }
        _data = _data[property.offset];
        if ((_data is Map) && (_data.containsKey(property.name))) _data = _data[property.name];
      }

      else
      {
        _data = null;
        break;
      }
    }

    return Data(data: _data);
  }
  catch(e)
  {
    return null;
  }
}