public IEnumerable <SourceMatch> Extract(SourceMatch extractedSoFar) { int index = 0; foreach (var child in extractedSoFar.Element.Children()) { var extracted = extractedSoFar .With(child is JProperty prop ? prop.Value : child); var isValid = true; foreach (var variable in this.variableHandlers) { if (!variable.TrySetValue(extracted, child, index)) { isValid = false; break; } } if (isValid) { yield return(extracted); } ++index; } }
public IEnumerable <SourceMatch> Extract(SourceMatch extractedSoFar) { if (extractedSoFar.Element is JObject obj && obj.TryGetValue(this.nodeName, out var nested)) { yield return(extractedSoFar.With(nested)); } }
public bool TrySetValue(SourceMatch extracted, JToken value, int index) { var variableValue = this.variableCapture(value, index); if (variableValue == null) { return(false); } if (this.filter?.Include(variableValue) == false) { return(false); } extracted.SetVariable(this.variableName, variableValue); return(true); }