java.lang.Object
com.intellij.psi.templateLanguages.TemplateDataElementType
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceCustomizes template data language-specific parsing in templates.static classThis 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. -
Constructor Summary
ConstructorsConstructorDescriptionTemplateDataElementType(@NotNull ParserDefinition templateParserDefinition, @NotNull IElementType templateElementType, @NotNull IElementType outerElementType) -
Method Summary
Modifier and TypeMethodDescriptionprotected @NotNull TemplateDataModificationsappendCurrentTemplateToken(int tokenEndOffset, @NotNull CharSequence tokenText) Collects modifications for tokens havingmyTemplateElementTypetype.protected voidappendCurrentTemplateToken(@NotNull StringBuilder result, @NotNull CharSequence buf, @NotNull Lexer lexer, TemplateDataElementType.RangeCollector collector) Deprecated.buildTemplateDataLexemes(@NotNull CharSequence sourceCode, @NotNull Lexer lexer) protected @NotNull TemplateDataModificationscollectTemplateModifications(@NotNull CharSequence sourceCode, @NotNull Lexer baseLexer) Collects changes to apply to template source code for later parsing by underlying language.protected Lexerprotected CharSequencecreateTemplateFile(CharSequence sourceCode, TemplateDataElementType.RangeCollector rangeCollector) Creates psi tree without base language elements.protected CharSequencecreateTemplateText(@NotNull CharSequence sourceCode, @NotNull Lexer baseLexer, TemplateDataElementType.RangeCollector rangeCollector) Creates source code without template tokens.protected @NotNull TokenSetDeprecated, for removal: This API element is subject to removal in a future version.UseisInsertionToken(IElementType, CharSequence)instead.protected booleanisInsertionToken(@Nullable IElementType tokenType, @NotNull CharSequence tokenSequence) Returns true if a string is expected to be inserted into resulting file in place of a current token.parse(@NotNull CharSequence sourceCode, @NotNull ParserDefinition dataParserDefinition) static @NotNull ASTNodeparseWithOuterAndRemoveRangesApplied(@NotNull ASTNode chameleon, @NotNull Language language, @NotNull Function<? super @NotNull CharSequence, ? extends @NotNull ASTNode> parser)
-
Constructor Details
-
TemplateDataElementType
public TemplateDataElementType(@NotNull @NotNull ParserDefinition templateParserDefinition, @NotNull @NotNull IElementType templateElementType, @NotNull @NotNull IElementType outerElementType)
-
-
Method Details
-
createBaseLexer
-
parse
public MarkerPsiBuilder<Object> parse(@NotNull @NotNull CharSequence sourceCode, @NotNull @NotNull ParserDefinition dataParserDefinition) -
buildTemplateDataLexemes
public ArrayTokenSequence buildTemplateDataLexemes(@NotNull @NotNull CharSequence sourceCode, @NotNull @NotNull Lexer lexer) -
createTemplateFile
protected CharSequence createTemplateFile(CharSequence sourceCode, @NotNull TemplateDataElementType.RangeCollector rangeCollector) Creates psi tree without base language elements. The result PsiFile can contain additional elements. Ranges of the removed tokens/additional elements should be stored in the rangeCollector- Parameters:
sourceCode- source code: base language with template languagerangeCollector- collector for ranges with non-template/additional elements- Returns:
- template psiFile
-
createTemplateText
protected CharSequence createTemplateText(@NotNull @NotNull CharSequence sourceCode, @NotNull @NotNull Lexer baseLexer, @NotNull TemplateDataElementType.RangeCollector rangeCollector) Creates source code without template tokens. May add additional pieces of code. Ranges of such additions should be added in rangeCollector usingTemplateDataElementType.RangeCollector.addRangeToRemove(TextRange)for later removal from the resulting tree. Consider overridingcollectTemplateModifications(CharSequence, Lexer)instead.- Parameters:
sourceCode- source code with base and template languagesbaseLexer- base language lexerrangeCollector- collector for ranges with non-template/additional symbols- Returns:
- template source code
-
collectTemplateModifications
@NotNull protected @NotNull TemplateDataModifications collectTemplateModifications(@NotNull @NotNull CharSequence sourceCode, @NotNull @NotNull Lexer baseLexer) Collects changes to apply to template source code for later parsing by underlying language.- Parameters:
sourceCode- source code with base and template languagesbaseLexer- base language lexer
-
appendCurrentTemplateToken
@Deprecated protected void appendCurrentTemplateToken(@NotNull @NotNull StringBuilder result, @NotNull @NotNull CharSequence buf, @NotNull @NotNull Lexer lexer, @NotNull TemplateDataElementType.RangeCollector collector) Deprecated.OverrideappendCurrentTemplateToken(int, CharSequence)instead. -
appendCurrentTemplateToken
@NotNull protected @NotNull TemplateDataModifications appendCurrentTemplateToken(int tokenEndOffset, @NotNull @NotNull CharSequence tokenText) Collects modifications for tokens havingmyTemplateElementTypetype.- Returns:
- modifications need to be applied for the current token
-
getTemplateDataInsertionTokens
Deprecated, for removal: This API element is subject to removal in a future version.UseisInsertionToken(IElementType, CharSequence)instead. -
isInsertionToken
protected boolean isInsertionToken(@Nullable @Nullable IElementType tokenType, @NotNull @NotNull CharSequence tokenSequence) Returns true if a string is expected to be inserted into resulting file in place of a current token. If insertion range contains several tokens,truemay be returned only for the starting one. For example, if<?=$myVar?>has three tokens<?=,$myVarand?>, only<?=may be an insertion token. Override this method when overridingcollectTemplateModifications(CharSequence, Lexer)is not required. -
parseWithOuterAndRemoveRangesApplied
-
appendCurrentTemplateToken(int, CharSequence)instead.