Exemple #1
0
        System.Threading.Tasks.Task <ParsedDocument> Parse(RazorCSharpParserContext context, CancellationToken cancellationToken)
        {
            EnsureParserInitializedFor(context);

            var errors = new List <Error> ();

            using (var source = new SeekableTextReader(context.Content.CreateReader())) {
                var textChange  = CreateTextChange(context, source);
                var parseResult = context.EditorParser.CheckForStructureChanges(textChange);
                if (parseResult == PartialParseResult.Rejected)
                {
                    context.RazorDocument.ParseComplete.WaitOne();
                    if (!context.CapturedArgs.GeneratorResults.Success)
                    {
                        GetRazorErrors(context, errors);
                    }
                }
            }

            ParseHtmlDocument(context, errors);
            CreateCSharpParsedDocument(context);
            context.ClearLastTextChange();

            RazorHostKind kind = RazorHostKind.WebPage;

            if (context.EditorParser.Host is WebCodeRazorHost)
            {
                kind = RazorHostKind.WebCode;
            }
            else if (context.EditorParser.Host is MonoDevelop.AspNet.Razor.Generator.PreprocessedRazorHost)
            {
                kind = RazorHostKind.Template;
            }

            var model    = context.AnalysisDocument.GetSemanticModelAsync(cancellationToken).Result;
            var pageInfo = new RazorCSharpPageInfo()
            {
                HtmlRoot         = context.HtmlParsedDocument,
                GeneratorResults = context.CapturedArgs.GeneratorResults,
                Spans            = context.EditorParser.CurrentParseTree.Flatten(),
                CSharpSyntaxTree = context.ParsedSyntaxTree,
                ParsedDocument   = new DefaultParsedDocument("generated.cs")
                {
                    Ast = model
                },
                AnalysisDocument = context.AnalysisDocument,
                CSharpCode       = context.CSharpCode,
                Errors           = errors,
                FoldingRegions   = GetFoldingRegions(context),
                Comments         = context.Comments,
                HostKind         = kind,
            };

            return(System.Threading.Tasks.Task.FromResult((ParsedDocument) new RazorCSharpParsedDocument(context.FileName, pageInfo)));
        }
		System.Threading.Tasks.Task<ParsedDocument> Parse (RazorCSharpParserContext context, CancellationToken cancellationToken)
		{
			EnsureParserInitializedFor (context);

			var errors = new List<Error> ();

			using (var source = new SeekableTextReader (context.Content.CreateReader ())) {
				var textChange = CreateTextChange (context, source);
				var parseResult = context.EditorParser.CheckForStructureChanges (textChange);
				if (parseResult == PartialParseResult.Rejected) {
					context.RazorDocument.ParseComplete.WaitOne ();
					if (!context.CapturedArgs.GeneratorResults.Success)
						GetRazorErrors (context, errors);
				}
			}

			ParseHtmlDocument (context, errors);
			CreateCSharpParsedDocument (context);
			context.ClearLastTextChange ();

			RazorHostKind kind = RazorHostKind.WebPage;
			if (context.EditorParser.Host is WebCodeRazorHost) {
				kind = RazorHostKind.WebCode;
			} else if (context.EditorParser.Host is MonoDevelop.AspNet.Razor.Generator.PreprocessedRazorHost) {
				kind = RazorHostKind.Template;
			}

			var model = context.AnalysisDocument.GetSemanticModelAsync (cancellationToken).Result;
			var pageInfo = new RazorCSharpPageInfo () {
				HtmlRoot = context.HtmlParsedDocument,
				GeneratorResults = context.CapturedArgs.GeneratorResults,
				Spans = context.EditorParser.CurrentParseTree.Flatten (),
				CSharpSyntaxTree = context.ParsedSyntaxTree,
				ParsedDocument = new DefaultParsedDocument ("generated.cs") { Ast = model },
				AnalysisDocument = context.AnalysisDocument,
				CSharpCode = context.CSharpCode,
				Errors = errors,
				FoldingRegions = GetFoldingRegions (context),
				Comments = context.Comments,
				HostKind = kind,
			};

			return System.Threading.Tasks.Task.FromResult((ParsedDocument)new RazorCSharpParsedDocument (context.FileName, pageInfo));
		}