public static string Serialize(this IGraphQLField field, string operationType = "query", string operationName = null, IEnumerable <IGraphQLVariable> variables = null) { var vardeclaration = variables == null ? null : " (" + string.Join(" ", variables.Select(s => $"${s.VariableId}: {s.VariableType}")) + ")"; var sb = new StringBuilder($"{operationType} {operationName} {vardeclaration}{{"); field.SerializeInto(sb, Ident); sb.AppendLine("}"); return(sb.ToString()); }
internal static IGraphQLField GetLastField(this IGraphQLField field) { IGraphQLField prev = null; while (field != null) { prev = field; field = field.SubFields?.SingleOrDefault(); } return(prev); }
internal static IEnumerable <string> GetBindingPath(this IGraphQLField field) { List <string> path = null; while (field != null) { if (field.Name != null) { (path ?? (path = new List <string>())).Add(field.Alias ?? field.Name); } field = field.SubFields?.SingleOrDefault(); } return(path); }
static void SerializeInto(this IGraphQLField field, StringBuilder sb, int identation) { sb.AppendLine(); sb.Append(new string(' ', identation)); if (field.Name == null) { if (!field.SubFields?.Any() ?? true) { return; } foreach (var f in field.SubFields) { f.SerializeInto(sb, identation + Ident); } sb.AppendLine(); return; } if (field.Alias != null) { sb.Append($"{field.Alias}: "); } sb.Append(field.Name); if (field.Argument != null) { sb.Append($" ({field.Argument})"); } if (!field.SubFields?.Any() ?? true) { return; } sb.Append(" {"); foreach (var f in field.SubFields) { f.SerializeInto(sb, identation + Ident); } sb.AppendLine(); sb.Append(new string(' ', identation)); sb.AppendLine("}"); }