private IDom CreateEndRegion(SyntaxTrivia trivia, IDom parent, OutputContext context) { if (!trivia.HasStructure) { return(null); } var structure = trivia.GetStructure(); var regionSyntax = structure as EndRegionDirectiveTriviaSyntax; var startDirectives = regionSyntax .GetRelatedDirectives() .Where(x => x is RegionDirectiveTriviaSyntax); if (startDirectives.Count() != 1) { throw new NotImplementedException(); } var startSyntax = startDirectives.Single(); var container = parent as IContainer; if (container == null) { throw new NotImplementedException(); } var startBlock = container.GetMembers() .OfType <RDomDetailBlockStart>() .Where(x => MatchEndRegion(startSyntax, x.TypedTrivia)) .SingleOrDefault(); var newItem = new RDomDetailBlockEnd(parent, trivia, startBlock); if (trivia.Token.LeadingTrivia.Any()) { newItem.Whitespace2Set.Add(GetWhitespace(trivia.Token.LeadingTrivia.First())); } return(newItem); }
internal IDom CreateEndRegion(SyntaxTrivia trivia, IDom parent, OutputContext context) { if (!trivia.HasStructure) { return(null); } var structure = trivia.GetStructure(); var regionSyntax = structure as EndRegionDirectiveTriviaSyntax; //var startDirectives = regionSyntax // .GetRelatedDirectives() // .Where(x => x is RegionDirectiveTriviaSyntax); //if (startDirectives.Count() != 1) { throw new NotImplementedException(); } //var startSyntax = startDirectives.Single(); //var startIDom = parent.DescendantsAndSelf // .Where(x => (x.RawItem as SyntaxNode) != null // && x.RawItem == startSyntax) // .OfType<IDetailBlockStart>() // .First(); //if (startIDom == null) throw new NotImplementedException(); //var newItem = new RDomDetailBlockEnd(parent, trivia, startIDom, regionSyntax); var newItem = new RDomDetailBlockEnd(parent, trivia, null, regionSyntax); if (trivia.Token.LeadingTrivia.Any()) { newItem.Whitespace2Set.Add(GetWhitespace(trivia.Token.LeadingTrivia.First())); } //var newParent = startIDom.Parent as IContainer; //newParent.AddOrMoveMember(newItem); //return null; return(newItem); }