/// <summary> /// Builds the collected data and generates the query as a string. /// </summary> /// <param name="formatting">None: One line, Indented: Human-readable.</param> /// <returns>The query as a string.</returns> public string Build(GraphQLFormatting formatting = GraphQLFormatting.None) { if (_root == null) { return(ChildBuild(formatting)); } return(_root.Build(formatting)); }
internal string Build(int nesting = 0, GraphQLFormatting formatting = GraphQLFormatting.None) { var newLine = " "; if (formatting == GraphQLFormatting.Indented) { newLine = Environment.NewLine; } return($"{string.Join(newLine, _fields.Select(f => f.Build(nesting, formatting)))}"); }
internal string ChildBuild(GraphQLFormatting formatting) { var newLine = " "; var nesting = string.Empty; if (formatting == GraphQLFormatting.Indented) { newLine = Environment.NewLine; nesting = "".PadLeft(_nesting * 4); } var builtArguments = _arguments.Empty ? string.Empty : $"({_arguments.Build()})"; var fields = _select.Build(_nesting + 1, formatting); var children = string.Join(newLine, _children.Select(q => q.ChildBuild(formatting))); return ($@"{nesting}{_objectToQuery}{builtArguments} {{{newLine}{fields}{(string.IsNullOrEmpty(fields) ? "" : newLine)}{children}{(string.IsNullOrEmpty(children) ? "" : newLine)}{nesting}}}"); }
internal string Build(int nesting, GraphQLFormatting formatting) { var spaces = string.Empty; var child = string.Empty; var newLine = " "; if (formatting == GraphQLFormatting.Indented) { spaces = spaces.PadLeft(nesting * 4); newLine = Environment.NewLine; } if (!_child.Empty) { child = $" {{{newLine}{_child.Build(nesting + 1, formatting)}{newLine}{spaces}}}"; } return($"{spaces}{_name}{child}"); }