public static XmlWriter <XmlWriterNode <TInput> > Content <TInput>(this XmlWriterNode <TInput> writerNode, Func <TInput, string> func, bool asCData = false) { return(state => { var content = new Content { Text = state.GetValue(func), AsCData = asCData }; writerNode.Node.Add(content); return new Result <XmlWriterNode <TInput> >(writerNode, state); }); }
public static XmlWriter <XmlWriterNode <TInput> > Content <TInput>(this XmlWriterNode <TInput> writerNode, string text, bool asCData = false) { return(state => { var content = new Content { Text = text, AsCData = asCData }; writerNode.Node.Add(content); return new Result <XmlWriterNode <TInput> >(writerNode, state); }); }
public static XmlWriter <XmlWriterNode <TInput> > Apply <TInput>(this XmlWriterNode <TInput> writerNode, XmlWriter <XmlWriterNode <TInput> > innerWriter) { return(state => { var oldNode = state.Current; innerWriter(state); state.Current = oldNode; return Result <TInput> .WriterNodeResultFromState(state); }); }
public static XmlWriter <XmlWriterNode <TInput> > If <TInput>(this XmlWriterNode <TInput> writerNode, Func <TInput, bool> predicate) { return(state => { var condition = predicate((TInput)state.CurrentInput); if (condition) { return new Result <XmlWriterNode <TInput> >(new XmlWriterNode <TInput>(state.Current), state); } return new Result <XmlWriterNode <TInput> >(new XmlWriterNode <TInput>(new Node()), state); }); }
public static XmlWriter <XmlWriterNode <TInput> > Apply <TInput>(this XmlWriterNode <TInput> writerNode, XmlWriterAction <TInput> innerWriterAction) { return(state => { var oldInput = state.CurrentInput; var oldNode = state.Current; IResult <XmlWriterNode <TInput> > InnerWriter(State innerState) => new Result <XmlWriterNode <TInput> >(new XmlWriterNode <TInput>(innerState.Current), innerState); var appliedWriter = innerWriterAction(InnerWriter); appliedWriter(state); state.Current = oldNode; state.CurrentInput = oldInput; return Result <TInput> .WriterNodeResultFromState(state); }); }
public static XmlWriter <XmlWriterNode <TInput> > Many <TInput, TOut>( this XmlWriterNode <TInput> writerNode, Func <TInput, IEnumerable <TOut> > func, XmlWriter <XmlWriterNode <TOut> > innerWriter) { return (state => { var oldInput = state.CurrentInput; var oldNode = state.Current; foreach (var element in (IEnumerable)func((TInput)state.CurrentInput)) { state.Current = writerNode.Node; state.CurrentInput = element; innerWriter(state); state.Current = oldNode; } state.CurrentInput = oldInput; return Result <TInput> .WriterNodeResultFromState(state); }); }
public static XmlWriter <XmlWriterNode <TInput> > Many <TInput, TOut>( this XmlWriterNode <TInput> writerNode, Func <TInput, IEnumerable <TOut> > func, XmlWriterAction <TOut> innerWriterAction) { return (state => { var oldInput = state.CurrentInput; var oldNode = state.Current; foreach (var element in (IEnumerable)func((TInput)state.CurrentInput)) { state.Current = writerNode.Node; state.CurrentInput = element; IResult <XmlWriterNode <TOut> > InnerWriter(State innerState) => new Result <XmlWriterNode <TOut> >(new XmlWriterNode <TOut>(innerState.Current), innerState); var appliedWriter = innerWriterAction(InnerWriter); appliedWriter(state); state.Current = oldNode; } state.CurrentInput = oldInput; return Result <TInput> .WriterNodeResultFromState(state); }); }
public static XmlWriter <XmlWriterNode <TInput> > Attribute <TInput>(this XmlWriterNode <TInput> writerNode, string name, string value) { return(state => Attribute(state, writerNode, name, value)); }
private static IResult <XmlWriterNode <TInput> > Attribute <TInput>(State state, XmlWriterNode <TInput> writerNode, string name, string value) { writerNode.Node.Attributes.Add(name, value); return(new Result <XmlWriterNode <TInput> >(writerNode, state)); }
public static XmlWriter <XmlWriterNode <TInput> > Attribute <TInput>(this XmlWriterNode <TInput> writerNode, string name, Func <TInput, string> func) { return(state => Attribute(state, writerNode, name, state.GetValue(func))); }
public static XmlWriter <XmlWriterNode <TInput> > Tag <TInput>(this XmlWriterNode <TInput> writerNode, string tag) { return(state => AppendTag(state, writerNode, tag)); }
private static IResult <XmlWriterNode <TInput> > AppendTag <TInput>(State state, XmlWriterNode <TInput> writerNode, string tag) { if (writerNode.Node == null) { AppendTag(state, tag); return(Result <TInput> .WriterNodeResultFromState(state)); } var newnode = new Node { Name = tag }; writerNode.Node.Add(newnode); state.Current = newnode; return(new Result <XmlWriterNode <TInput> >(new XmlWriterNode <TInput>(newnode), state)); }
public static XmlWriter <XmlWriterNode <TInput> > Tag <TInput>(this XmlWriterNode <TInput> writerNode, Func <TInput, string> func) { return(state => AppendTag(state, writerNode, state.GetValue(func))); }