1 package com
.intellij
.openapi
.paths
;
3 import com
.intellij
.psi
.PsiElement
;
4 import com
.intellij
.psi
.templateLanguages
.OuterLanguageElement
;
7 * @author Dmitry Avdeev
9 public class GenericDynamicContextProvider
implements DynamicContextProvider
{
11 public int getOffset(PsiElement element
, int offset
, String elementText
) {
12 final PsiElement
[] children
= element
.getChildren();
13 for (PsiElement child
: children
) {
14 if (isDynamic(child
)) {
15 final int i
= child
.getStartOffsetInParent();
16 if (i
== offset
) { // dynamic context?
17 final PsiElement next
= child
.getNextSibling();
18 if (next
== null || !next
.getText().startsWith("/")) {
21 offset
= next
.getStartOffsetInParent();
23 final int pos
= PathReferenceProviderBase
.getLastPosOfURL(offset
, elementText
);
24 if (pos
== -1 || pos
> i
) {
34 protected boolean isDynamic(PsiElement child
) {
35 return child
instanceof OuterLanguageElement
;