public CSharpParsedDocument(Ide.TypeSystem.ParseOptions options, string fileName) : base(fileName) { isAdHocProject = options.IsAdhocProject; }
public override async Task <IReadOnlyList <Projection> > GenerateProjections(Ide.TypeSystem.ParseOptions options, CancellationToken cancellationToken = default(CancellationToken)) { var razorDocument = (RazorCSharpParsedDocument) await Parse(options, cancellationToken); return(await GenerateProjections(razorDocument, options, cancellationToken)); }
public override async Task <ParsedDocumentProjection> GenerateParsedDocumentProjection(Ide.TypeSystem.ParseOptions options, CancellationToken cancellationToken = default(CancellationToken)) { var razorDocument = (RazorCSharpParsedDocument) await Parse(options, cancellationToken); var projections = await GenerateProjections(razorDocument, options, cancellationToken); return(new ParsedDocumentProjection(razorDocument, projections)); }
Task <IReadOnlyList <Projection> > GenerateProjections(RazorCSharpParsedDocument razorDocument, Ide.TypeSystem.ParseOptions options, CancellationToken cancellationToken = default(CancellationToken)) { var code = razorDocument.PageInfo.CSharpCode; if (string.IsNullOrEmpty(code)) { return(Task.FromResult((IReadOnlyList <Projection>) new Projection[0])); } string filename = razorDocument.PageInfo.ParsedDocument.FileName; var currentMappings = razorDocument.PageInfo.GeneratorResults.DesignTimeLineMappings; return(Task.Run(() => { var doc = TextEditorFactory.CreateNewDocument(new StringTextSource(code), filename, "text/x-csharp"); var segments = new List <ProjectedSegment> (); foreach (var map in currentMappings) { string pattern = "#line " + map.Key + " "; var idx = razorDocument.PageInfo.CSharpCode.IndexOf(pattern, StringComparison.Ordinal); if (idx < 0) { continue; } var line = doc.GetLineByOffset(idx); var offset = line.NextLine.Offset + map.Value.StartGeneratedColumn - 1; var seg = new ProjectedSegment(map.Value.StartOffset.Value, offset, map.Value.CodeLength); segments.Add(seg); } var projections = new List <Projection> (); projections.Add(new Projection(doc, segments)); return (IReadOnlyList <Projection>)projections; })); }
public VBNetParsedDocument(Ide.TypeSystem.ParseOptions options, string fileName) : base(fileName) { isAdHocProject = options.IsAdhocProject; Flags |= ParsedDocumentFlags.SkipFoldings; }
public CSharpParsedDocument(Ide.TypeSystem.ParseOptions options, string fileName) : base(fileName) { this.options = options; }