Ejemplo n.º 1
0
        public Expression Compile(IEnumerable <Expression> expressions, Expression parentContext, string templateName = null)
        {
            try
            {
                var expressionsList = expressions as IList <Expression> ?? expressions.ToList();

                if (expressionsList.Count == 0)
                {
                    return(EmptyLambda);
                }
                if (expressionsList.Count == 1 && expressionsList[0] is DefaultExpression)
                {
                    return(EmptyLambda);
                }
                var compilationContext = new CompilationContext(_engine);
                var expression         = CreateExpressionBlock(expressionsList);
                expression = CommentVisitor.Visit(expression, compilationContext);
                expression = UnencodedStatementVisitor.Visit(expression, compilationContext);
                expression = PartialBinder.Bind(expression, compilationContext);
                expression = StaticReplacer.Replace(expression, compilationContext);
                expression = IteratorBinder.Bind(expression, compilationContext);
                expression = BlockHelperFunctionBinder.Bind(expression, compilationContext);
                expression = DeferredSectionVisitor.Bind(expression, compilationContext);
                expression = HelperFunctionBinder.Bind(expression, compilationContext);
                expression = BoolishConverter.Convert(expression, compilationContext);
                expression = PathBinder.Bind(expression, compilationContext);
                expression = SubExpressionVisitor.Visit(expression, compilationContext);
                expression = ContextBinder.Bind(expression, compilationContext, parentContext, templateName);
                return(expression);
            }
            catch (Exception ex)
            {
                throw new HandlebarsCompilerException("An unhandled exception occurred while trying to compile the template.", ex);
            }
        }
 public Expression Compile(IEnumerable <Expression> expressions, Expression parentContext, string templatePath = null)
 {
     try
     {
         if (expressions.Any() == false)
         {
             return(_emptyLambda);
         }
         if (expressions.IsOneOf <Expression, DefaultExpression>() == true)
         {
             return(_emptyLambda);
         }
         var compilationContext = new CompilationContext(_configuration);
         var expression         = CreateExpressionBlock(expressions);
         expression = CommentVisitor.Visit(expression, compilationContext);
         expression = UnencodedStatementVisitor.Visit(expression, compilationContext);
         expression = PartialBinder.Bind(expression, compilationContext);
         expression = StaticReplacer.Replace(expression, compilationContext);
         expression = IteratorBinder.Bind(expression, compilationContext);
         expression = BlockHelperFunctionBinder.Bind(expression, compilationContext);
         expression = DeferredSectionVisitor.Bind(expression, compilationContext);
         expression = HelperFunctionBinder.Bind(expression, compilationContext);
         expression = BoolishConverter.Convert(expression, compilationContext);
         expression = PathBinder.Bind(expression, compilationContext);
         expression = SubExpressionVisitor.Visit(expression, compilationContext);
         expression = ContextBinder.Bind(expression, compilationContext, parentContext, templatePath);
         return(expression);
     }
     catch (Exception ex)
     {
         throw new HandlebarsCompilerException("An unhandled exception occurred while trying to compile the template", ex);
     }
 }
		public override Task<IReadOnlyList<Comment>> GetCommentsAsync (CancellationToken cancellationToken = default(CancellationToken))
		{
			if (comments == null) {
				return Task.Run (delegate {
					lock (commentLock) {
						if (comments == null) {
							var visitor = new CommentVisitor (cancellationToken);
							if (Unit != null)
								visitor.Visit (Unit.GetRoot (cancellationToken));
							comments = visitor.Comments;
						}
					}
					return comments;
				});
			}
			return Task.FromResult (comments);
		}
Ejemplo n.º 4
0
        public override Task <IReadOnlyList <Comment> > GetCommentsAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            if (comments == null)
            {
                return(Task.Run(async delegate {
                    bool locked = await commentLock.WaitAsync(Timeout.Infinite, cancellationToken).ConfigureAwait(false);
                    await commentLock.WaitAsync();
                    try {
                        if (comments == null)
                        {
                            var visitor = new CommentVisitor(cancellationToken);
                            var unit = await GetParsedSyntaxTreeAsync(cancellationToken);
                            if (unit != null)
                            {
                                try {
                                    var syntaxRoot = await unit.GetRootAsync(cancellationToken);
                                    visitor.Visit(syntaxRoot);
                                } catch (OperationCanceledException) {
                                }
                            }
                            comments = visitor.Comments;
                        }
                    } finally {
                        if (locked)
                        {
                            commentLock.Release();
                        }
                    }
                    return comments;
                }));
            }
            return(Task.FromResult(comments));

            async Task <SyntaxTree> GetParsedSyntaxTreeAsync(CancellationToken token)
            {
                if (ParsedUnit == null && DocumentId != null)
                {
                    var document = IdeServices.TypeSystemService.GetCodeAnalysisDocument(DocumentId, token);
                    ParsedUnit = await document.GetSyntaxTreeAsync(token);
                }
                return(ParsedUnit);
            }
        }
            public override IElement VisitSectionElement([NotNull] SectionElementContext context)
            {
                var commentContext = context.comment();

                if (commentContext != null)
                {
                    var commentVisitor = new CommentVisitor().Inherit(this);
                    var comment        = commentVisitor.VisitComment(commentContext);
                    return(comment);
                }

                var blockContext = context.lineBlock();

                if (blockContext != null)
                {
                    var blockVisitor = new LineBlockVisitor().Inherit(this);
                    var lineBlock    = blockVisitor.VisitLineBlock(blockContext);
                    return(lineBlock);
                }

                var listItemContext = context.listItemBullet();

                if (listItemContext != null)
                {
                    var listItemVisitor = new ListItemVisitor().Inherit(this);
                    var listItem        = listItemVisitor.VisitListItemBullet(listItemContext);
                    return(listItem);
                }

                var listItemContext2 = context.listItemEnumerated();

                if (listItemContext2 != null)
                {
                    var listItemVisitor = new ListItemVisitor().Inherit(this);
                    var listItem        = listItemVisitor.VisitListItemEnumerated(listItemContext2);
                    return(listItem);
                }

                var paragraphVisitor = new ParagraphVisitor().Inherit(this);
                var paragraph        = paragraphVisitor.VisitParagraph(context.paragraph());

                return(paragraph);
            }
Ejemplo n.º 6
0
        internal static T AddComments <T>(this T syntaxNode, ConversionContext context, Node methodDecl) where T : CSharpSyntaxNode
        {
            if (context.Options.IncludeComments)
            {
                var comment = methodDecl.getComment();
                if (comment != null)
                {
                    var trivia = CommentVisitor.VisitComment(context, comment);
                    syntaxNode = syntaxNode.WithLeadingTrivia(trivia);
                }
                else if (methodDecl.getOrphanComments().size() > 0)
                {
                    var orphanComments = methodDecl.getOrphanComments().AsEnumerable <Comment>();
                    var trivias        = orphanComments.SelectMany(orphanComment => CommentVisitor.VisitComment(context, orphanComment)).ToList();
                    syntaxNode = syntaxNode.WithLeadingTrivia(trivias);
                }
            }

            return(syntaxNode);
        }
Ejemplo n.º 7
0
 public override Task <IReadOnlyList <Comment> > GetCommentsAsync(CancellationToken cancellationToken = default(CancellationToken))
 {
     if (comments == null)
     {
         return(Task.Run(delegate {
             lock (commentLock) {
                 if (comments == null)
                 {
                     var visitor = new CommentVisitor(cancellationToken);
                     if (Unit != null)
                     {
                         visitor.Visit(Unit.GetRoot(cancellationToken));
                     }
                     comments = visitor.Comments;
                 }
             }
             return comments;
         }));
     }
     return(Task.FromResult(comments));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public abstract void Accept <T>(CommentVisitor <T> visitor, T context);
Ejemplo n.º 9
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitSeeAlso(this, context);
 }
Ejemplo n.º 10
0
        public static string ContainerComments(this UrlHelper urlHelper, INamedEntity entity, string dataFormat)
        {
            CommentVisitor vistor = new CommentVisitor(urlHelper);

            return(vistor.Visit <string>(entity, dataFormat));
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitReturns(this, context);
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitPermission(this, context);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitWhitespace(this, context);
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitSeeExternalLink(this, context);
 }
Ejemplo n.º 15
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitExample(this, context);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitTypeParam(this, context);
 }
Ejemplo n.º 17
0
 /// <summary>
 /// Accepts the specified visitor.
 /// </summary>
 /// <typeparam name="T">The context type.</typeparam>
 /// <param name="visitor">The visitor.</param>
 /// <param name="context">The context.</param>
 public override void Accept <T>(CommentVisitor <T> visitor, T context)
 {
     visitor.VisitInlineText(this, context);
 }