/// <summary> /// Parse the initial text as a Text Expression Tree then apply the given transformation /// to get the final text /// </summary> /// <param name="transConverter"></param> public void TransformUsing(ITextExpressionVisitor <string> transConverter) { ITextExpression textExpr; InitialText.TryParseToTextExpression(out textExpr); FinalText = ReferenceEquals(textExpr, null) ? String.Empty : transConverter.Visit(textExpr); IsFixed = (FinalText == InitialText); }
/// <summary> /// Generate text inside slot tags of the region template using the tag string that /// contains a text expression that is interpreted using the given text expression visitor. /// </summary> /// <param name="transFunc"></param> /// <returns></returns> public string GenerateText(ITextExpressionVisitor <string> transFunc) { var slotTagsList = Template.SlotRegions.SelectMany(r => r.SlotTags); foreach (var slotTag in slotTagsList) { ITextExpression expr; var result = slotTag.TagString.TryParseToTextExpression(out expr); slotTag.SetGeneratedText( string.IsNullOrEmpty(result) ? transFunc.Visit(expr) : result ); } return(Template.GetText()); }
/// <summary> /// Apply the given mapping to the segments list /// </summary> /// <param name="segments"></param> /// <param name="transConverter"></param> public static void TransformUsing(this IEnumerable <MappingComposerSegment> segments, ITextExpressionVisitor <string> transConverter) { foreach (var segment in segments) { segment.TransformUsing(transConverter); } }