process static method

dynamic process(
  1. Map tree
)

Implementation

static dynamic process(Map tree) {
  // print('process');

  // registered item
  if (tree.keys.length == 1 &&
      ServerSideRendering.isRegistered(tree.keys.first)) {
    var name = tree.keys.first;
    var child = tree[name];

    // print('registeryItem');
    // print(name);
    // print(child);

    List<dynamic> positionalArguments = (child is List
            ? child.takeWhile((value) => value is! Map)
            : (child is! Map ? [child] : []))
        .toList();

    // print('positionalArguments');
    // print(positionalArguments);

    Map<String, dynamic> namedArguments;

    try {
      namedArguments = child is List
          ? child.firstWhere((element) => element is Map)
          : child;
    } catch (err) {
      namedArguments = {};
    }

    // print('namedArguments');
    // print(namedArguments);

    // print('outside loop');
    var processedTree =
        ServerSideRendering.processNamedArguments(namedArguments);

    // });

    if (processedTree.isEmpty) {
      return Function.apply(
          ServerSideRendering.getRegistery(name)!, positionalArguments);
    } else {
      return Function.apply(ServerSideRendering.getRegistery(name)!,
          positionalArguments, {const Symbol('args'): processedTree});
    }
  }

  var processedTree = ServerSideRendering.processNamedArguments(tree);

  return processedTree;
}