Module aya.ij.parsing.core
Class TemplateDataElementType.RangeCollector
java.lang.Object
com.intellij.psi.templateLanguages.TemplateDataElementType.RangeCollector
- Direct Known Subclasses:
RangeCollectorImpl
- Enclosing class:
- TemplateDataElementType
This collector is used for storing ranges of outer elements and ranges of artificial elements, that should be stripped from the resulting tree
At the time of creating source code for the data language we need to memorize positions with template language elements.
For such positions we use
addOuterRange(com.intellij.openapi.util.TextRange)
Sometimes to build a correct tree we need to insert additional symbols into resulting source:
e.g. put an identifier instead of the base language fragment: something={% $var %} => something=dummyidentifier
that must be removed after building the tree.
For such additional symbols addRangeToRemove(com.intellij.openapi.util.TextRange) must be used- API Note:
- Please note that all start offsets for the ranges must be in terms of "original source code". So, outer ranges are ranges of outer elements in original source code. Ranges to remove don't correspond to any text range neither in original nor in modified text. But their start offset is the offset in original text, and length is the length of inserted dummy identifier.
- Implementation Note:
- Should be interface, but abstract class with empty method bodies for keeping binary compatibility with plugins.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddOuterRange(@NotNull TextRange newRange) Adds range corresponding to the outer element inside original source code.abstract voidaddOuterRange(@NotNull TextRange newRange, boolean isInsertion) Adds range corresponding to the outer element inside original source code.voidaddRangeToRemove(@NotNull TextRange rangeToRemove) Adds the fragment that must be removed from the tree on the stage inserting outer elements.
-
Constructor Details
-
RangeCollector
public RangeCollector()
-
-
Method Details
-
addOuterRange
Adds range corresponding to the outer element inside original source code. After building the data template tree these ranges will be used for inserting outer language elements. If it's known whether this template element adds some string to resulting text, consider usingaddOuterRange(TextRange, boolean). -
addOuterRange
Adds range corresponding to the outer element inside original source code. After building the data template tree these ranges will be used for inserting outer language elements.- Parameters:
isInsertion- true if element is expected to insert some text into template data fragment. For example, PHP's<?= $myVar ?>are insertions, while<?php foo() ?>are not.
-
addRangeToRemove
Adds the fragment that must be removed from the tree on the stage inserting outer elements. This method should be called after adding "fake" symbols inside the data language text for building syntax correct tree
-