use of org.eclipse.xtext.formatting2.regionaccess.ITextSegmentDiff in project xtext-core by eclipse.
the class RegionDiffFormatter method mergeReplacements.
protected List<ITextReplacement> mergeReplacements(ITextRegionAccessDiff regions, List<ITextReplacement> rep) {
ITextRegionRewriter rewriter = regions.getOriginalTextRegionAccess().getRewriter();
List<ITextReplacement> result = Lists.newArrayList();
for (ITextSegmentDiff r : regions.getRegionDifferences()) {
ITextSegment original = r.getOriginalRegion();
ITextSegment modified = r.getModifiedRegion();
List<ITextReplacement> local = Lists.newArrayList();
for (ITextReplacement re : rep) {
if (modified.contains(re)) {
local.add(re);
}
}
String text;
if (local.isEmpty()) {
text = modified.getText();
} else {
text = regions.getRewriter().renderToString(modified, local);
}
ITextReplacement replacement = rewriter.createReplacement(original.getOffset(), original.getLength(), text);
result.add(replacement);
}
return result;
}
use of org.eclipse.xtext.formatting2.regionaccess.ITextSegmentDiff in project xtext-core by eclipse.
the class RegionDiffFormatter method collectRegionsToFormat.
protected Collection<ITextRegion> collectRegionsToFormat(ITextRegionAccessDiff regions) {
List<ITextRegion> result = Lists.newArrayList();
for (ITextSegmentDiff diff : regions.getRegionDifferences()) {
int offset = diff.getModifiedFirstRegion().getOffset();
int length = diff.getModifiedLastRegion().getEndOffset() - offset;
ITextSegment region = regions.regionForOffset(offset, length);
result.add(region);
}
return result;
}
use of org.eclipse.xtext.formatting2.regionaccess.ITextSegmentDiff in project xtext-core by eclipse.
the class RegionAccessTestHelper method assertDiffs.
public void assertDiffs(final ITextRegionAccessDiff regions) {
final ITextRegionRewriter rewriter = regions.getOriginalTextRegionAccess().getRewriter();
final ArrayList<ITextReplacement> result = Lists.<ITextReplacement>newArrayList();
List<ITextSegmentDiff> _regionDifferences = regions.getRegionDifferences();
for (final ITextSegmentDiff r : _regionDifferences) {
{
final ITextSegment originalRegion = r.getOriginalRegion();
final ITextSegment modifiedRegion = r.getModifiedRegion();
final ITextReplacement replacement = originalRegion.replaceWith(modifiedRegion.getText());
result.add(replacement);
}
}
final String actual = rewriter.renderToString(result);
final String expected = regions.regionForDocument().getText();
Assert.assertEquals(expected, actual);
}
Aggregations