下面列出了com.intellij.psi.templateLanguages.TemplateDataLanguageMappings#com.intellij.psi.templateLanguages.TemplateLanguage 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public FluidFileViewProvider(PsiManager manager, VirtualFile file, boolean physical) {
super(manager, file, physical);
Language dataLang = TemplateDataLanguageMappings.getInstance(manager.getProject()).getMapping(file);
if (dataLang == null) {
dataLang = StdFileTypes.HTML.getLanguage();
}
if (dataLang instanceof TemplateLanguage) {
myTemplateDataLanguage = PlainTextLanguage.INSTANCE;
} else {
// The substitutor signals, that a files content should be substituted
Language mySubstitutedLanguage = LanguageSubstitutors.INSTANCE.substituteLanguage(dataLang, file, manager.getProject());
if (mySubstitutedLanguage == FluidLanguage.INSTANCE) {
this.myTemplateDataLanguage = StdFileTypes.HTML.getLanguage();
} else {
this.myTemplateDataLanguage = mySubstitutedLanguage;
}
}
}
public static boolean isInjectableLanguage(@Nonnull Language language) {
if (language == Language.ANY) {
return false;
}
if (language.getID().startsWith("$")) {
return false;
}
if (language instanceof InjectableLanguage) {
return true;
}
if (language instanceof TemplateLanguage) {
return false;
}
if (LanguageParserDefinitions.INSTANCE.forLanguage(language) == null) {
return false;
}
return true;
}
public static boolean isInTemplateLanguageFile(@Nullable final PsiElement element) {
if (element == null) return false;
final PsiFile psiFile = element.getContainingFile();
if(psiFile == null) return false;
final Language language = psiFile.getViewProvider().getBaseLanguage();
return language instanceof TemplateLanguage;
}
private static int version(Object owner) {
if (owner instanceof IStubFileElementType) {
IStubFileElementType elementType = (IStubFileElementType)owner;
if (elementType.getLanguage() instanceof TemplateLanguage && elementType.getStubVersion() < IStubFileElementType.getTemplateStubVersion()) {
LOG.error(elementType.getLanguage() + " stub version should call super.getStubVersion()");
}
return elementType.getStubVersion();
}
else {
return ((BinaryFileStubBuilder)owner).getStubVersion();
}
}
private static int calcStubVersion() {
IElementType[] dataElementTypes = IElementType.enumerate((elementType) -> elementType instanceof IStubFileElementType && !(elementType.getLanguage() instanceof TemplateLanguage));
return Arrays.stream(dataElementTypes).mapToInt((e) -> ((IStubFileElementType)e).getStubVersion()).sum();
}
/**
* Stub structure version. Should be incremented each time when stub tree changes (e.g. elements added/removed,
* element serialization/deserialization changes).
* Make sure to invoke super method for {@link TemplateLanguage} to prevent stub serialization problems due to
* data language stub changes
*
* @return stub version
*/
public int getStubVersion() {
return getLanguage() instanceof TemplateLanguage ? getTemplateStubVersion() : 0;
}