Browse Source

Fixed ast node script positions.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
3b4abcceb3
  1. 1
      ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs
  2. 17
      ICSharpCode.NRefactory.CSharp/Refactoring/NodeOutputAction.cs
  3. 3
      ICSharpCode.NRefactory.CSharp/Refactoring/Script.cs

1
ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs

@ -118,6 +118,7 @@ namespace ICSharpCode.NRefactory.CSharp
WriteSpecialsUpToNode (node); WriteSpecialsUpToNode (node);
containerStack.Push (node); containerStack.Push (node);
positionStack.Push (node.FirstChild); positionStack.Push (node.FirstChild);
formatter.WriteToken (""); // force indentation, if required
OnOutputStarted (new AstNodeEventArgs (node)); OnOutputStarted (new AstNodeEventArgs (node));
formatter.StartNode (node); formatter.StartNode (node);
} }

17
ICSharpCode.NRefactory.CSharp/Refactoring/NodeOutputAction.cs

@ -62,24 +62,29 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
{ {
public int Offset { public int Offset {
get; get;
set; internal set;
} }
public int Length { public int Length {
get { get;
return EndOffset - Offset; internal set;
}
} }
public int EndOffset { public int EndOffset {
get; get {
set; return Offset + Length;
}
} }
public Segment (int offset) public Segment (int offset)
{ {
this.Offset = offset; this.Offset = offset;
} }
public override string ToString ()
{
return string.Format ("[NodeOutput.Segment: Offset={0}, Length={1}, EndOffset={2}]", Offset, Length, EndOffset);
}
} }
} }

3
ICSharpCode.NRefactory.CSharp/Refactoring/Script.cs

@ -162,7 +162,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
result.NodeSegments [e.AstNode] = new NodeOutput.Segment (stringWriter.GetStringBuilder ().Length); result.NodeSegments [e.AstNode] = new NodeOutput.Segment (stringWriter.GetStringBuilder ().Length);
}; };
visitor.OutputFinished += (sender, e) => { visitor.OutputFinished += (sender, e) => {
result.NodeSegments [e.AstNode].EndOffset = stringWriter.GetStringBuilder ().Length; var nodeSegment = result.NodeSegments [e.AstNode];
nodeSegment.Length = stringWriter.GetStringBuilder ().Length - nodeSegment.Offset;
}; };
node.AcceptVisitor (visitor, null); node.AcceptVisitor (visitor, null);
result.Text = stringWriter.ToString ().TrimEnd (); result.Text = stringWriter.ToString ().TrimEnd ();

Loading…
Cancel
Save