public ReplaceRegion getTokenReplaceRegion(String changedText, ReplaceRegion replaceRegion) { int lengthDelta = replaceRegion.getText().length() - replaceRegion.getLength(); ITextRegion tokenRegion = getTokenRegion(changedText, new TextRegion(replaceRegion.getOffset(), replaceRegion .getText().length())); if (tokenRegion.getOffset() == replaceRegion.getOffset() && tokenRegion.getLength() == replaceRegion.getText().length()) return replaceRegion; else return new ReplaceRegion(tokenRegion.getOffset(), tokenRegion.getLength() - lengthDelta, changedText.substring(tokenRegion.getOffset(), tokenRegion.getOffset() + tokenRegion.getLength())); }
private boolean isNullEdit(INode oldRootNode, ReplaceRegion replaceRegion) { if (replaceRegion.getLength() == replaceRegion.getText().length()) { String replacedText = oldRootNode.getText().substring(replaceRegion.getOffset(), replaceRegion.getEndOffset()); if (replaceRegion.getText().equals(replacedText)) { return true; } } return false; }
protected String applyDelta(String data, int offset, int len, String change) { StringBuilder builder = new StringBuilder(data); new ReplaceRegion(offset, len, change).applyTo(builder); String result = builder.toString(); return result; }
@Test public void testSkipNodesInBetweenWithoutResourceSet() throws Exception { for (String string : getSmokeTestModels()) { LazyLinkingResource resource = createResource(string); if (resource != null) { ICompositeNode rootNode = resource.getParseResult().getRootNode(); ReplaceRegion replaceRegion = null; for (INode node : rootNode.getAsTreeIterable()) { int offset = node.getTotalOffset(); int length = node.getTotalLength(); if (replaceRegion == null || replaceRegion.getOffset() != offset || replaceRegion.getLength() != length) { replaceRegion = new ReplaceRegion(offset, length, ""); StringBuilder builder = new StringBuilder(string); replaceRegion.applyTo(builder); processModelWithoutResourceSet(builder.toString()); } } } } }
protected List<TextEdit> getObjectEdits() { final Collection<EObject> modifiedObjects = getModifiedObjects(); Collection<EObject> topLevelObjects = EcoreUtil.filterDescendants(modifiedObjects); Iterable<EObject> containedModifiedObjects = Iterables.filter(topLevelObjects, new Predicate<EObject>() { public boolean apply(EObject input) { return input.eResource() == resource; } }); List<TextEdit> edits = Lists.newArrayListWithExpectedSize(Iterables.size(containedModifiedObjects)); for (EObject modifiedObject : containedModifiedObjects) { ReplaceRegion replaceRegion = serializer.serializeReplacement(modifiedObject, getSaveOptions()); TextEdit edit = new ReplaceEdit(replaceRegion.getOffset(), replaceRegion.getLength(), replaceRegion.getText()); edits.add(edit); } return edits; }
@Override public void processInput(String input, DeltaScenarioProcessor tester) throws Exception { XtextResource resource = tester.get(XtextResource.class); resource.setURI(URI.createURI("dummy.uri")); try { resource.load(new StringInputStream(input, "UTF-8"), Collections.singletonMap(XtextResource.OPTION_ENCODING, "UTF-8")); } catch (Exception e) { Assert.fail(e.getMessage()); } ICompositeNode rootNode = resource.getParseResult().getRootNode(); ReplaceRegion region = null; for(INode node: rootNode.getAsTreeIterable()) { int offset = node.getTotalOffset(); int length = node.getTotalLength(); if (length != 0) { if (region == null || region.getOffset() != offset || region.getLength() != length) { region = new ReplaceRegion(offset, length, ""); if (Iterables.size(node.getLeafNodes()) > 1 && length > 1 && length != 3) { tester.processFile(input, input, offset, length, ""); } } } } } },
public ReplaceRegion shiftBy(int offset) { if (offset == 0) return this; return new ReplaceRegion(this.offset + offset, length, text); }
protected void removeNullEdits(XtextResource resource, List<ReplaceRegion> changes) { Iterator<ReplaceRegion> iterator = changes.iterator(); String document = resource.getParseResult().getRootNode().getText(); while(iterator.hasNext()) { ReplaceRegion region = iterator.next(); if (region.getText().equals(document.substring(region.getOffset(), region.getEndOffset()))) { iterator.remove(); } } }
public void applyTo(StringBuilder builder) { builder.replace(offset, getEndOffset(), text); }
for (final ReplaceRegion region : _computeTypeRefRegions) { final String text = region.getText(); if (((text != null) && (text.length() > 0))) { final QualifiedName fqn = this.qualifiedNameConverter.toQualifiedName(text);
public final IParseResult reparse(IParseResult previousResult, ReplaceRegion replaceRegion) { if (!isReparseSupported()) { final StringBuilder builder = new StringBuilder(previousResult.getRootNode().getText()); replaceRegion.applyTo(builder); return doParse(builder); } return doReparse(previousResult, replaceRegion); }
@Test public void testSkipNodesInBetween() throws Exception { for (String string : getSmokeTestModels()) { LazyLinkingResource resource = createResource(string); if (resource != null) { ICompositeNode rootNode = resource.getParseResult().getRootNode(); ReplaceRegion replaceRegion = null; for (INode node : rootNode.getAsTreeIterable()) { int offset = node.getTotalOffset(); int length = node.getTotalLength(); if (replaceRegion == null || replaceRegion.getOffset() != offset || replaceRegion.getLength() != length) { replaceRegion = new ReplaceRegion(offset, length, ""); StringBuilder builder = new StringBuilder(string); replaceRegion.applyTo(builder); processModel(builder.toString()); } } } } }
@Check public void checkJavaDocRefs(XtendMember member){ if(isIgnored(IssueCodes.JAVA_DOC_LINKING_DIAGNOSTIC)) return; List<INode> documentationNodes = ((IEObjectDocumentationProviderExtension) documentationProvider).getDocumentationNodes(member); for(INode node : documentationNodes){ for(ReplaceRegion region : javaDocTypeReferenceProvider.computeTypeRefRegions(node)){ String typeRefString = region.getText(); if(typeRefString != null && typeRefString.length() > 0){ IScope scope = scopeProvider.getScope(member, TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE); IEObjectDescription candidate = scope.getSingleElement(qualifiedNameConverter.toQualifiedName(typeRefString)); if(candidate == null){ Severity severity = getIssueSeverities(getContext(), getCurrentObject()).getSeverity(IssueCodes.JAVA_DOC_LINKING_DIAGNOSTIC); if (severity != null) getChain().add(createDiagnostic(severity, "javaDoc: " + typeRefString + " cannot be resolved to a type", member, region.getOffset(), region.getLength(), IssueCodes.JAVA_DOC_LINKING_DIAGNOSTIC)); } } } } }
public ReplaceRegion shiftBy(int offset) { if (offset == 0) return this; return new ReplaceRegion(this.offset + offset, length, text); }
public void applyTo(StringBuilder builder) { builder.replace(offset, getEndOffset(), text); }
int _offset = region.getOffset(); int _length = doc.getContents().length(); boolean _greaterThan = (_offset > _length); int _line = docEnd.getLine(); int _character = docEnd.getCharacter(); int _length_1 = region.getLength(); int _plus = (_character + _length_1); _xblockexpression_1 = new Position(_line, _plus); _xifexpression = doc.getPosition(region.getOffset()); int _endOffset = region.getEndOffset(); int _length_1 = doc.getContents().length(); boolean _greaterThan_1 = (_endOffset > _length_1); int _line = start.getLine(); int _character = start.getCharacter(); int _length_2 = region.getLength(); int _plus = (_character + _length_2); _xifexpression_1 = new Position(_line, _plus); } else { _xifexpression_1 = doc.getPosition(region.getEndOffset()); String _text = region.getText(); _xblockexpression = new TextEdit(_range, _text);
@Test public void testSkipNodesInBetweenWithoutResourceSet() throws Exception { for (String string : getSmokeTestModels()) { LazyLinkingResource resource = createResource(string); if (resource != null) { ICompositeNode rootNode = resource.getParseResult().getRootNode(); ReplaceRegion replaceRegion = null; for (INode node : rootNode.getAsTreeIterable()) { int offset = node.getTotalOffset(); int length = node.getTotalLength(); if (replaceRegion == null || replaceRegion.getOffset() != offset || replaceRegion.getLength() != length) { replaceRegion = new ReplaceRegion(offset, length, ""); StringBuilder builder = new StringBuilder(string); replaceRegion.applyTo(builder); processModelWithoutResourceSet(builder.toString()); } } } } }
for (final ReplaceRegion docTypeReference : _computeTypeRefRegions) { int _offset = docTypeReference.getOffset(); int _length = docTypeReference.getLength(); final TextRegion referenceRange = new TextRegion(_offset, _length); boolean _contains = selectedRegion.contains(referenceRange); if (_contains) { String docTypeText = docTypeReference.getText(); final EObject element = NodeModelUtils.findActualSemanticObjectFor(documentationNode); IScope scope = this.scopeProvider.getScope(element,