processChildren method

  1. @override
Iterable<NodeData> processChildren(
  1. Status status,
  2. NodeControl control,
  3. FlowMessage message
)
override

Implementation

@override
Iterable<NodeData> processChildren(Status status, NodeControl control, FlowMessage message) sync* {
  bool candidate = true, checkCandi = message.data == false;
  if (checkCandi) {
    xml.XmlElement element = node as xml.XmlElement;
    xml.XmlAttribute? fnode = element.getAttributeNode("candidate");
    candidate = true;
    if (fnode != null) {
      var res = status.execute(fnode.value);
      if (res is String) candidate = res == "true";
      else if (res is bool) candidate = res;
    }

    if (candidate) {
      FlowMessage message = FlowMessage();
      for (var child in children) {
        yield* child.generate(status, control, message);
      }
    }
  }
  message.set(_ifFlowType, candidate || !checkCandi);
}