コード例 #1
0
ファイル: MappingComposerSegment.cs プロジェクト: phreed/GMac
        /// <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);
        }
コード例 #2
0
ファイル: RegionComposer.cs プロジェクト: phreed/GMac
        /// <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());
        }
コード例 #3
0
 /// <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);
     }
 }