/// <inheritdoc /> public void Render(ToParsableStringDocumentVisitor visitor) { visitor.StringBuilder.Append("{{"); if (Children.Any()) { visitor.StringBuilder.Append(MorestachioLocalizationBlockProvider.OpenTag); } else { visitor.StringBuilder.Append(MorestachioLocalizationTagProvider.OpenTag); } visitor.StringBuilder.Append(visitor.ReparseExpression(MorestachioExpression)); if (ExplicitCulture != null) { visitor.StringBuilder.Append(" #CULTURE "); visitor.StringBuilder.Append(visitor.ReparseExpression(ExplicitCulture)); } visitor.StringBuilder.Append("}}"); if (!Children.Any()) { return; } visitor.VisitChildren(this); visitor.StringBuilder.Append("{{"); visitor.StringBuilder.Append(MorestachioLocalizationBlockProvider.CloseTag); visitor.StringBuilder.Append("}}"); }
/// <summary> /// Renders the current <see cref="FluentApiContext.CurrentNode"/> and all its children using the <see cref="ToParsableStringDocumentVisitor"/> /// </summary> /// <param name="template"></param> /// <returns></returns> public MorestachioDocumentFluentApi RenderTree(Action <string> template) { var visitor = new ToParsableStringDocumentVisitor(); Context.CurrentNode.Item.Accept(visitor); template(visitor.StringBuilder.ToString()); return(this); }
/// <inheritdoc /> public void Render(ToParsableStringDocumentVisitor visitor) { visitor.StringBuilder.Append("{{"); visitor.CheckForInlineTagLineBreakAtStart(this); visitor.StringBuilder.Append(TagKeyword); if (!string.IsNullOrWhiteSpace(Value)) { visitor.StringBuilder.Append(" "); visitor.StringBuilder.Append(Value); } visitor.CheckForInlineTagLineBreakAtEnd(this); visitor.StringBuilder.Append("}}"); }
/// <inheritdoc /> public void Render(ToParsableStringDocumentVisitor visitor) { if (!Children.Any()) { visitor.StringBuilder.Append("{{" + MorestachioLocalizationTagProvider.OpenTag + visitor.ReparseExpression(MorestachioExpression) + "}}"); } else { visitor.StringBuilder.Append("{{" + MorestachioLocalizationBlockProvider.OpenTag + visitor.ReparseExpression(MorestachioExpression) + "}}"); visitor.VisitChildren(this); visitor.StringBuilder.Append("{{" + MorestachioLocalizationBlockProvider.CloseTag + "}}"); } }
public static void AssertDocumentItemIsSameAsTemplate(string text, IDocumentItem documentItem) { var visitor = new ToParsableStringDocumentVisitor(); visitor.Visit(documentItem as MorestachioDocument); var format = visitor.StringBuilder.ToString(); StringAssert.AreEqualIgnoringCase(text, format); if (!format.Equals(text)) { if (!format.Equals(text, StringComparison.InvariantCultureIgnoreCase)) { Assert.That(format, Is.EqualTo(text)); } Console.WriteLine("The two string are only the same of not checked for casing"); } }
private static IEnumerable <NewFolding> CreateNewFoldings(TextDocument document, IDocumentItem morestachioDocument) { var morestachioDocumentChildren = morestachioDocument .Children .ToArray(); for (var index = 0; index < morestachioDocumentChildren.Length; index++) { var morestachioDocumentChild = morestachioDocumentChildren[index]; var start = document.GetOffset( morestachioDocumentChild.ExpressionStart.Line, morestachioDocumentChild.ExpressionStart.Character - 2); var end = document.Text.Length; if (index + 1 < morestachioDocumentChildren.Length) { var documentChild = morestachioDocumentChildren[index + 1]; end = document.GetOffset(documentChild.ExpressionStart.Line, documentChild.ExpressionStart.Character); } var builder = new ToParsableStringDocumentVisitor(); if (morestachioDocumentChild.Children.Any()) { if (morestachioDocumentChild is ExpressionScopeDocumentItem expScope) { builder.Visit(expScope); } else if (morestachioDocumentChild is EachDocumentItem eachScope) { builder.Visit(eachScope); } else if (morestachioDocumentChild is DoLoopDocumentItem doScope) { builder.Visit(doScope); } else if (morestachioDocumentChild is IfExpressionScopeDocumentItem ifScope) { builder.Visit(ifScope); } else if (morestachioDocumentChild is IfNotExpressionScopeDocumentItem ifNotScope) { builder.Visit(ifNotScope); } else if (morestachioDocumentChild is InvertedExpressionScopeDocumentItem invertScope) { builder.Visit(invertScope); } else if (morestachioDocumentChild is PartialDocumentItem partial) { builder.Visit(partial); } else if (morestachioDocumentChild is WhileLoopDocumentItem whileScope) { builder.Visit(whileScope); } yield return(new NewFolding(start, end) { Name = builder.StringBuilder.ToString(), }); } foreach (var newFolding in CreateNewFoldings(document, morestachioDocumentChild)) { yield return(newFolding); } } }
/// <inheritdoc /> public void Render(ToParsableStringDocumentVisitor visitor) { visitor.StringBuilder.Append("{{" + MorestachioLocalizationParamTagProvider.OpenTag + visitor.ReparseExpression(MorestachioExpression) + "}}"); }
/// <inheritdoc /> public void Render(ToParsableStringDocumentVisitor visitor) { visitor.StringBuilder.Append("{{#LESS}}"); visitor.VisitChildren(this); visitor.StringBuilder.Append("{{/LESS}}"); }