--- /dev/null
+package com.jetbrains.python.templateLanguages;
+
+import com.intellij.lang.Language;
+import com.intellij.openapi.module.Module;
+import com.intellij.psi.templateLanguages.TemplateLanguage;
+import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Python template language
+ * @author Ilya.Kazakevich
+ */
+public abstract class PythonTemplateLanguage extends Language implements TemplateLanguage {
+
+
+ protected PythonTemplateLanguage(@Nullable final Language baseLanguage,
+ @NotNull @NonNls final String ID,
+ @NotNull @NonNls final String... mimeTypes) {
+ super(baseLanguage, ID, mimeTypes);
+ }
+
+ protected PythonTemplateLanguage(@NotNull @NonNls final String id) {
+ super(id);
+ }
+
+ /**
+ * @return template language readable name
+ */
+ @NotNull
+ public abstract String getTemplateLanguageName();
+
+ /**
+ * Checks if text contains some chars that make us think this text uses appropriate template language and we should set
+ * this language as our project language
+ *
+ * @param text text with chars to check
+ * @return text contains some chars that make us think this text uses appropriate template language and we should set this language as our project language
+ */
+ public abstract boolean isFileLeadsToLanguageSelection(@NotNull String text);
+}
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.packaging.PyPackageManager;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import java.util.ArrayList;
import java.util.List;
/**
*/
public abstract class TemplatesService {
public static final String NONE = "None";
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
public static final String DJANGO = "Django";
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
public static final String MAKO = "Mako";
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
public static final String JINJA2 = "Jinja2";
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
public static final String WEB2PY = "Web2Py";
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
public static final String CHAMELEON = "Chameleon";
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
private static List<String> ALL_TEMPLATE_LANGUAGES = ContainerUtil.immutableList(NONE,
DJANGO,
MAKO,
public static List<String> ALL_TEMPLATE_BINDINGS = ContainerUtil.immutableList("django-mako", "django-jinja", "django-chameleon",
"flask-mako", "pyramid_jinja2");
+ @Nullable
public abstract Language getSelectedTemplateLanguage();
public static TemplatesService getInstance(Module module) {
return ModuleServiceManager.getService(module, TemplatesService.class);
}
+ /**
+ * @deprecated Use {@link #getKnownTemplateLanguages()}
+ * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()}
+ */
+ @Deprecated
public static List<String> getAllTemplateLanguages() {
return ALL_TEMPLATE_LANGUAGES;
}
+ public abstract List<PythonTemplateLanguage> getKnownTemplateLanguages();
+
public abstract void setTemplateLanguage(String templateLanguage);
@NotNull