mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-90193 Rename PyDocstring classes and references to PyDoctest for clarity and consistency
(cherry picked from commit 94b36487487d4d6660f44e15a9a7e0c98011cea4) IJ-MR-208617 GitOrigin-RevId: 2377cab55ffa6ac503d61dc28c482f9fc3ac3fa7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
da7d48a0e1
commit
9230c29d33
@@ -956,7 +956,7 @@
|
||||
<documentationLinkProvider implementation="com.jetbrains.python.numpy.codeInsight.SciPyDocumentationLinkProvider"/>
|
||||
|
||||
<!-- PyDocstring -->
|
||||
<visitorFilter language="Doctest" implementationClass="com.jetbrains.python.documentation.PyDocstringVisitorFilter"/>
|
||||
<visitorFilter language="Doctest" implementationClass="com.jetbrains.python.documentation.PyDoctestVisitorFilter"/>
|
||||
<visitorFilter language="Python" implementationClass="com.jetbrains.python.documentation.doctest.PyDocstringCodeBlockVisitorFilter"/>
|
||||
|
||||
<!-- Console -->
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@ import com.intellij.codeInsight.lookup.LookupElement
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder
|
||||
import com.intellij.lang.Language
|
||||
import com.jetbrains.python.PythonLanguage
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringLanguageDialect
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestLanguageDialect
|
||||
import org.intellij.plugins.markdown.injection.CodeFenceLanguageProvider
|
||||
import java.util.Locale
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.util.Locale
|
||||
internal class PyCodeFenceLanguageProvider : CodeFenceLanguageProvider {
|
||||
override fun getLanguageByInfoString(infoString: String): Language? =
|
||||
when (infoString.lowercase(Locale.getDefault())) {
|
||||
"pycon", "python-repl" -> PyDocstringLanguageDialect.getInstance()
|
||||
"pycon", "python-repl" -> PyDoctestLanguageDialect.getInstance()
|
||||
"py", "python3" -> PythonLanguage.INSTANCE
|
||||
else -> null
|
||||
}
|
||||
@@ -29,7 +29,7 @@ internal class PyCodeFenceLanguageProvider : CodeFenceLanguageProvider {
|
||||
return listOf(
|
||||
LookupElementBuilder
|
||||
.create("pycon")
|
||||
.withIcon(PyDocstringLanguageDialect.getInstance().associatedFileType?.icon)
|
||||
.withIcon(PyDoctestLanguageDialect.getInstance().associatedFileType?.icon)
|
||||
.withTypeText("Python console"),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
|
||||
<!-- PyDocstring -->
|
||||
<languageInjector implementation="com.jetbrains.python.documentation.doctest.PyDocstringLanguageInjector"/>
|
||||
<lang.parserDefinition language="Doctest" implementationClass="com.jetbrains.python.documentation.doctest.PyDocstringParserDefinition"/>
|
||||
<lang.parserDefinition language="Doctest" implementationClass="com.jetbrains.python.documentation.doctest.PyDoctestParserDefinition"/>
|
||||
<highlightErrorFilter implementation="com.jetbrains.python.documentation.doctest.PyDocstringErrorFilter"/>
|
||||
<lang.formatter language="Doctest" implementationClass="com.jetbrains.python.documentation.doctest.PyDocstringFormattingModelBuilder"/>
|
||||
|
||||
@@ -709,7 +709,7 @@
|
||||
|
||||
<!-- PyDocstring -->
|
||||
<typeProvider implementation="com.jetbrains.python.documentation.docstrings.PyDocStringTypeProvider" id="pythonDocstringTypeProvider"/>
|
||||
<dialectsTokenSetContributor implementation="com.jetbrains.python.documentation.doctest.PyDocstringTokenSetContributor"/>
|
||||
<dialectsTokenSetContributor implementation="com.jetbrains.python.documentation.doctest.PyDoctestTokenSetContributor"/>
|
||||
|
||||
<!-- PyTypeRepresentation -->
|
||||
<dialectsTokenSetContributor implementation="com.jetbrains.python.codeInsight.typeRepresentation.PyTypeRepresentationTokenSetContributor"/>
|
||||
|
||||
@@ -535,7 +535,7 @@ ACT.qualify.with.module=Qualify with an imported module
|
||||
ACT.from.some.module.import=Import from…
|
||||
|
||||
|
||||
filetype.python.docstring.description=Python docstring
|
||||
filetype.python.docstring.description=Python doctest
|
||||
filetype.python.function.type.annotation.description=Python PEP-484 function type comment
|
||||
filetype.python.type.representation.description=Type representation language
|
||||
filetype.python.type.hint.description=Python PEP-484 type hint
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ import com.jetbrains.python.codeInsight.controlflow.ScopeOwner;
|
||||
import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil;
|
||||
import com.jetbrains.python.codeInsight.mlcompletion.PyCompletionMlElementInfo;
|
||||
import com.jetbrains.python.codeInsight.mlcompletion.PyCompletionMlElementKind;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestFile;
|
||||
import com.jetbrains.python.inspections.PyLazyImportInspection;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyAnnotation;
|
||||
@@ -290,7 +290,7 @@ public final class PyKeywordCompletionContributor extends CompletionContributor
|
||||
|
||||
private static final PsiElementPattern.Capture<PsiElement> IN_STRING_LITERAL =
|
||||
psiElement().inside(PyStringLiteralExpression.class).andNot(
|
||||
psiElement().inFile(psiFile(PyDocstringFile.class)));
|
||||
psiElement().inFile(psiFile(PyDoctestFile.class)));
|
||||
|
||||
private static final ElementPattern<PsiElement> IN_FUNCTION_HEADER =
|
||||
psiElement().inside(PyFunction.class)
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.intellij.psi.tree.IElementType;
|
||||
import com.jetbrains.python.PyElementTypes;
|
||||
import com.jetbrains.python.PyParsingBundle;
|
||||
import com.jetbrains.python.PyTokenTypes;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringTokenTypes;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestTokenTypes;
|
||||
import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
@@ -40,7 +40,7 @@ public class PyFunctionTypeAnnotationParser extends PyParser {
|
||||
private final ExpressionParsing myExpressionParsing = new ExpressionParsing(this) {
|
||||
@Override
|
||||
protected IElementType getReferenceType() {
|
||||
return PyDocstringTokenTypes.DOC_REFERENCE;
|
||||
return PyDoctestTokenTypes.DOC_REFERENCE;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import com.jetbrains.python.codeInsight.imports.ImportLocationHelper.Companion.g
|
||||
import com.jetbrains.python.codeInsight.imports.PyNestedClassUtils.findTopLevelClass
|
||||
import com.jetbrains.python.codeInsight.imports.PyRelativeImportData.Companion.fromString
|
||||
import com.jetbrains.python.documentation.docstrings.DocStringUtil
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestFile
|
||||
import com.jetbrains.python.psi.LanguageLevel
|
||||
import com.jetbrains.python.psi.PyClass
|
||||
import com.jetbrains.python.psi.PyElement
|
||||
@@ -546,7 +546,7 @@ object AddImportHelper {
|
||||
val manager = InjectedLanguageManager.getInstance(file.project)
|
||||
val injectionHost = manager.getInjectionHost(file)
|
||||
val insideDoctest =
|
||||
file is PyDocstringFile && injectionHost != null && DocStringUtil.getParentDefinitionDocString(injectionHost) === injectionHost
|
||||
file is PyDoctestFile && injectionHost != null && DocStringUtil.getParentDefinitionDocString(injectionHost) === injectionHost
|
||||
|
||||
val insertParent: PsiElement
|
||||
if (insertBefore != null && insertBefore.parent != null) {
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.python.PyPsiBundle;
|
||||
import com.jetbrains.python.PythonUiService;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestFile;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyAnnotation;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
@@ -43,7 +43,7 @@ public final class PyAnnotateTypesIntention extends PyBaseIntentionAction {
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile psiFile) {
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDocstringFile) return false;
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDoctestFile) return false;
|
||||
|
||||
final PyFunction function = findSuitableFunction(editor, psiFile);
|
||||
if (function == null) return false;
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil;
|
||||
import com.jetbrains.python.codeInsight.intentions.PyTypeHintGenerationUtil.AnnotationInfo;
|
||||
import com.jetbrains.python.codeInsight.intentions.PyTypeHintGenerationUtil.Pep484IncompatibleTypeException;
|
||||
import com.jetbrains.python.documentation.PythonDocumentationProvider;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestFile;
|
||||
import com.jetbrains.python.psi.AccessDirection;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyAssignmentStatement;
|
||||
@@ -74,7 +74,7 @@ public final class PyAnnotateVariableTypeIntention extends PyBaseIntentionAction
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile psiFile) {
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDocstringFile) {
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDoctestFile) {
|
||||
return false;
|
||||
}
|
||||
final List<PyTargetExpression> resolved = findSuitableTargetsUnderCaret(project, editor, psiFile);
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import com.jetbrains.python.documentation.PyDocumentationSettings;
|
||||
import com.jetbrains.python.documentation.docstrings.DocStringFormat;
|
||||
import com.jetbrains.python.documentation.docstrings.DocStringParser;
|
||||
import com.jetbrains.python.documentation.docstrings.PyDocstringGenerator;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestFile;
|
||||
import com.jetbrains.python.inspections.quickfix.DocstringQuickFix;
|
||||
import com.jetbrains.python.psi.PyDocStringOwner;
|
||||
import com.jetbrains.python.psi.PyFile;
|
||||
@@ -41,7 +41,7 @@ public final class PyGenerateDocstringIntention extends PyBaseIntentionAction {
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile psiFile) {
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDocstringFile) return false;
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDoctestFile) return false;
|
||||
PsiElement elementAt = PyUtil.findNonWhitespaceAtOffset(psiFile, editor.getCaretModel().getOffset());
|
||||
if (elementAt == null) {
|
||||
return false;
|
||||
|
||||
+2
-2
@@ -11,7 +11,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringFile;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestFile;
|
||||
import com.jetbrains.python.psi.PyAssignmentStatement;
|
||||
import com.jetbrains.python.psi.PyCallExpression;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
@@ -40,7 +40,7 @@ public abstract class TypeIntention extends PyBaseIntentionAction {
|
||||
|
||||
@Override
|
||||
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile psiFile) {
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDocstringFile) return false;
|
||||
if (!(psiFile instanceof PyFile) || psiFile instanceof PyDoctestFile) return false;
|
||||
updateText(false);
|
||||
|
||||
if (findOnlySuitableParameter(editor, psiFile) != null) {
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@ package com.jetbrains.python.codeInsight.typeHints;
|
||||
|
||||
import com.intellij.lang.SyntaxTreeBuilder;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringTokenTypes;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestTokenTypes;
|
||||
import com.jetbrains.python.parsing.ExpressionParsing;
|
||||
import com.jetbrains.python.parsing.ParsingContext;
|
||||
import com.jetbrains.python.parsing.PyParser;
|
||||
@@ -20,14 +20,14 @@ class PyTypeHintParser extends PyParser {
|
||||
private final @NotNull StatementParsing myStatementParsing = new StatementParsing(this) {
|
||||
@Override
|
||||
protected @NotNull IElementType getReferenceType() {
|
||||
return PyDocstringTokenTypes.DOC_REFERENCE;
|
||||
return PyDoctestTokenTypes.DOC_REFERENCE;
|
||||
}
|
||||
};
|
||||
|
||||
private final @NotNull ExpressionParsing myExpressionParsing = new ExpressionParsing(this) {
|
||||
@Override
|
||||
protected @NotNull IElementType getReferenceType() {
|
||||
return PyDocstringTokenTypes.DOC_REFERENCE;
|
||||
return PyDoctestTokenTypes.DOC_REFERENCE;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import com.jetbrains.python.psi.PythonVisitorFilter
|
||||
|
||||
/**
|
||||
* Disables all inspections for plain Python code blocks injected inside docstrings
|
||||
* Doctest fragments ([PyDocstringLanguageDialect]) are handled separately by `PyDocstringVisitorFilter`.
|
||||
* Doctest fragments ([PyDoctestLanguageDialect]) are handled separately by `PyDocstringVisitorFilter`.
|
||||
*/
|
||||
internal class PyDocstringCodeBlockVisitorFilter : PythonVisitorFilter {
|
||||
override fun isSupported(visitorClass: Class<out PyElementVisitor?>, file: PsiFile): Boolean {
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ public final class PyDocstringErrorFilter extends HighlightErrorFilter {
|
||||
@Override
|
||||
public boolean shouldHighlightErrorElement(@NotNull PsiErrorElement element) {
|
||||
final PsiFile file = element.getContainingFile();
|
||||
if (file instanceof PyDocstringFile) return false;
|
||||
if (file instanceof PyDoctestFile) return false;
|
||||
|
||||
final InjectedLanguageManager manager = InjectedLanguageManager.getInstance(file.getProject());
|
||||
if (manager == null) return true;
|
||||
|
||||
+6
-28
@@ -15,36 +15,14 @@
|
||||
*/
|
||||
package com.jetbrains.python.documentation.doctest;
|
||||
|
||||
import com.intellij.lang.injection.InjectedLanguageManager;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.psi.FileViewProvider;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyExpressionCodeFragment;
|
||||
import com.jetbrains.python.psi.impl.PyFileImpl;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class PyDocstringFile extends PyFileImpl implements PyExpressionCodeFragment {
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link PyDoctestFile} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public class PyDocstringFile extends PyDoctestFile {
|
||||
public PyDocstringFile(FileViewProvider viewProvider) {
|
||||
super(viewProvider, PyDocstringLanguageDialect.getInstance());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FileType getFileType() {
|
||||
return PyDocstringFileType.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DocstringFile:" + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public LanguageLevel getLanguageLevel() {
|
||||
final InjectedLanguageManager languageManager = InjectedLanguageManager.getInstance(getProject());
|
||||
final PsiLanguageInjectionHost host = languageManager.getInjectionHost(this);
|
||||
if (host != null) return LanguageLevel.forElement(host.getContainingFile());
|
||||
return super.getLanguageLevel();
|
||||
super(viewProvider);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -11,7 +11,7 @@ import com.intellij.psi.formatter.common.AbstractBlock
|
||||
|
||||
class PyDocstringFormattingModelBuilder : CustomFormattingModelBuilder {
|
||||
override fun isEngagedToFormat(context: PsiElement): Boolean =
|
||||
context.containingFile?.language == PyDocstringLanguageDialect.getInstance()
|
||||
context.containingFile?.language == PyDoctestLanguageDialect.getInstance()
|
||||
|
||||
override fun createModel(formattingContext: FormattingContext): FormattingModel {
|
||||
return DocumentBasedFormattingModel(PyDocstringBlock(formattingContext),
|
||||
|
||||
+3
-3
@@ -85,13 +85,13 @@ public class PyDocstringLanguageInjector implements LanguageInjector {
|
||||
if (!trimmedString.startsWith(">>>") && !trimmedString.startsWith("...") && gotExample && start < end) {
|
||||
gotExample = false;
|
||||
if (!endsWithSlash) {
|
||||
injectionPlacesRegistrar.addPlace(PyDocstringLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
injectionPlacesRegistrar.addPlace(PyDoctestLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
}
|
||||
}
|
||||
|
||||
if (endsWithSlash && !trimmedString.endsWith("\\")) {
|
||||
endsWithSlash = false;
|
||||
injectionPlacesRegistrar.addPlace(PyDocstringLanguageDialect.getInstance(),
|
||||
injectionPlacesRegistrar.addPlace(PyDoctestLanguageDialect.getInstance(),
|
||||
TextRange.create(start, getEndOffset(currentPosition, string, maxPosition, closingQuote)), null,
|
||||
null);
|
||||
}
|
||||
@@ -125,7 +125,7 @@ public class PyDocstringLanguageInjector implements LanguageInjector {
|
||||
currentPosition += string.length();
|
||||
}
|
||||
if (gotExample && start < end) {
|
||||
injectionPlacesRegistrar.addPlace(PyDocstringLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
injectionPlacesRegistrar.addPlace(PyDoctestLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jetbrains.python.documentation.doctest
|
||||
|
||||
import com.intellij.lang.injection.InjectedLanguageManager
|
||||
import com.intellij.openapi.fileTypes.FileType
|
||||
import com.intellij.psi.FileViewProvider
|
||||
import com.jetbrains.python.psi.LanguageLevel
|
||||
import com.jetbrains.python.psi.PyExpressionCodeFragment
|
||||
import com.jetbrains.python.psi.impl.PyFileImpl
|
||||
|
||||
open class PyDoctestFile(viewProvider: FileViewProvider?) : PyFileImpl(viewProvider, PyDoctestLanguageDialect.getInstance()),
|
||||
PyExpressionCodeFragment {
|
||||
override fun getFileType(): FileType {
|
||||
return PyDoctestFileType.INSTANCE
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "DoctestFile:$name"
|
||||
}
|
||||
|
||||
override fun getLanguageLevel(): LanguageLevel? {
|
||||
val languageManager = InjectedLanguageManager.getInstance(project)
|
||||
val host = languageManager.getInjectionHost(this)
|
||||
if (host != null) return LanguageLevel.forElement(host.getContainingFile())
|
||||
return super<PyExpressionCodeFragment>.getLanguageLevel()
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -24,11 +24,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public class PyDocstringFileType extends PythonFileType {
|
||||
public static final PythonFileType INSTANCE = new PyDocstringFileType();
|
||||
public class PyDoctestFileType extends PythonFileType {
|
||||
public static final PythonFileType INSTANCE = new PyDoctestFileType();
|
||||
|
||||
private PyDocstringFileType() {
|
||||
super(new PyDocstringLanguageDialect());
|
||||
private PyDoctestFileType() {
|
||||
super(new PyDoctestLanguageDialect());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,6 +43,6 @@ public class PyDocstringFileType extends PythonFileType {
|
||||
|
||||
@Override
|
||||
public @NotNull String getDefaultExtension() {
|
||||
return "docstring";
|
||||
return "doctest";
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -25,13 +25,13 @@ import com.jetbrains.python.PythonLanguage;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public class PyDocstringLanguageDialect extends Language implements DependentLanguage, InjectableLanguage {
|
||||
public class PyDoctestLanguageDialect extends Language implements DependentLanguage, InjectableLanguage {
|
||||
|
||||
public static PyDocstringLanguageDialect getInstance() {
|
||||
return (PyDocstringLanguageDialect)PyDocstringFileType.INSTANCE.getLanguage();
|
||||
public static PyDoctestLanguageDialect getInstance() {
|
||||
return (PyDoctestLanguageDialect)PyDoctestFileType.INSTANCE.getLanguage();
|
||||
}
|
||||
|
||||
protected PyDocstringLanguageDialect() {
|
||||
protected PyDoctestLanguageDialect() {
|
||||
super(PythonLanguage.getInstance(), PyNames.PY_DOCSTRING_ID);
|
||||
putUserData(QuickEditActionKeys.EDIT_ACTION_AVAILABLE, false);
|
||||
}
|
||||
+1
-1
@@ -9,7 +9,7 @@ import com.jetbrains.python.lexer.PythonIndentingLexer;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public class PyDocstringLexer extends PythonIndentingLexer {
|
||||
public class PyDoctestLexer extends PythonIndentingLexer {
|
||||
@Override
|
||||
public void advance() {
|
||||
if (super.getTokenType() == PyTokenTypes.DOT) {
|
||||
+2
-2
@@ -23,9 +23,9 @@ import com.jetbrains.python.psi.LanguageLevel;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public class PyDocstringParser extends PyParser {
|
||||
public class PyDoctestParser extends PyParser {
|
||||
@Override
|
||||
protected ParsingContext createParsingContext(SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
return new PyDocstringParsingContext(builder, languageLevel);
|
||||
return new PyDoctestParsingContext(builder, languageLevel);
|
||||
}
|
||||
}
|
||||
+7
-7
@@ -14,33 +14,33 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public final class PyDocstringParserDefinition extends PythonParserDefinition {
|
||||
public static final IFileElementType PYTHON_DOCSTRING_FILE = new PyDocstringFileElementType(PyDocstringLanguageDialect
|
||||
public final class PyDoctestParserDefinition extends PythonParserDefinition {
|
||||
public static final IFileElementType PYTHON_DOCTEST_FILE = new PyDocstringFileElementType(PyDoctestLanguageDialect
|
||||
.getInstance());
|
||||
|
||||
@Override
|
||||
public @NotNull Lexer createLexer(Project project) {
|
||||
return new PyDocstringLexer();
|
||||
return new PyDoctestLexer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull PsiParser createParser(Project project) {
|
||||
return new PyDocstringParser();
|
||||
return new PyDoctestParser();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public @NotNull TokenSet getWhitespaceTokens() {
|
||||
return TokenSet.orSet(super.getWhitespaceTokens(), TokenSet.create(PyDocstringTokenTypes.DOTS));
|
||||
return TokenSet.orSet(super.getWhitespaceTokens(), TokenSet.create(PyDoctestTokenTypes.DOTS));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull IFileElementType getFileNodeType() {
|
||||
return PYTHON_DOCSTRING_FILE;
|
||||
return PYTHON_DOCTEST_FILE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull PsiFile createFile(@NotNull FileViewProvider viewProvider) {
|
||||
return new PyDocstringFile(viewProvider);
|
||||
return new PyDoctestFile(viewProvider);
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -28,11 +28,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public class PyDocstringParsingContext extends ParsingContext {
|
||||
public class PyDoctestParsingContext extends ParsingContext {
|
||||
private final StatementParsing myStatementParser;
|
||||
private final ExpressionParsing myExpressionParser;
|
||||
|
||||
public PyDocstringParsingContext(final SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
public PyDoctestParsingContext(final SyntaxTreeBuilder builder, LanguageLevel languageLevel) {
|
||||
super(builder, languageLevel);
|
||||
myStatementParser = new PyDocstringStatementParsing(this);
|
||||
myExpressionParser = new PyDocstringExpressionParsing(this);
|
||||
@@ -55,7 +55,7 @@ public class PyDocstringParsingContext extends ParsingContext {
|
||||
|
||||
@Override
|
||||
protected IElementType getReferenceType() {
|
||||
return PyDocstringTokenTypes.DOC_REFERENCE;
|
||||
return PyDoctestTokenTypes.DOC_REFERENCE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,13 +67,13 @@ public class PyDocstringParsingContext extends ParsingContext {
|
||||
|
||||
@Override
|
||||
protected IElementType getReferenceType() {
|
||||
return PyDocstringTokenTypes.DOC_REFERENCE;
|
||||
return PyDoctestTokenTypes.DOC_REFERENCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull IElementType filter(@NotNull IElementType source, int start, int end, @NotNull CharSequence text) {
|
||||
if (source == PyTokenTypes.DOT && CharArrayUtil.regionMatches(text, start, end, "..."))
|
||||
return PyDocstringTokenTypes.DOTS;
|
||||
return PyDoctestTokenTypes.DOTS;
|
||||
if (source == PyTokenTypes.GTGT && CharArrayUtil.regionMatches(text, start, end, ">>>"))
|
||||
return PyTokenTypes.SPACE;
|
||||
return super.filter(source, start, end, text);
|
||||
+4
-4
@@ -22,16 +22,16 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public final class PyDocstringTokenSetContributor extends PythonDialectsTokenSetContributorBase {
|
||||
public static final TokenSet DOCSTRING_REFERENCE_EXPRESSIONS = TokenSet.create(PyDocstringTokenTypes.DOC_REFERENCE);
|
||||
public final class PyDoctestTokenSetContributor extends PythonDialectsTokenSetContributorBase {
|
||||
public static final TokenSet DOCTEST_REFERENCE_EXPRESSIONS = TokenSet.create(PyDoctestTokenTypes.DOC_REFERENCE);
|
||||
|
||||
@Override
|
||||
public @NotNull TokenSet getExpressionTokens() {
|
||||
return DOCSTRING_REFERENCE_EXPRESSIONS;
|
||||
return DOCTEST_REFERENCE_EXPRESSIONS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull TokenSet getReferenceExpressionTokens() {
|
||||
return DOCSTRING_REFERENCE_EXPRESSIONS;
|
||||
return DOCTEST_REFERENCE_EXPRESSIONS;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -20,10 +20,10 @@ import com.jetbrains.python.psi.PyElementType;
|
||||
/**
|
||||
* User : ktisha
|
||||
*/
|
||||
public final class PyDocstringTokenTypes {
|
||||
public final class PyDoctestTokenTypes {
|
||||
public static final PyElementType DOC_REFERENCE = new PyElementType("DOC_REFERENCE", node -> new PyDocReferenceExpression(node));
|
||||
public static final PyElementType DOTS = new PyElementType("DOTS");
|
||||
|
||||
private PyDocstringTokenTypes() {
|
||||
private PyDoctestTokenTypes() {
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -7,7 +7,7 @@ import com.intellij.psi.InjectedLanguagePlaces;
|
||||
import com.intellij.psi.LanguageInjector;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import com.intellij.restructuredtext.psi.RestLine;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringLanguageDialect;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestLanguageDialect;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
@@ -30,11 +30,11 @@ public final class PyRestDocstringLanguageInjector implements LanguageInjector {
|
||||
if (!trimmedString.startsWith(">>>") && !trimmedString.startsWith("...") && gotExample && start < end) {
|
||||
gotExample = false;
|
||||
if (!endsWithSlash)
|
||||
injectionPlacesRegistrar.addPlace(PyDocstringLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
injectionPlacesRegistrar.addPlace(PyDoctestLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
}
|
||||
if (endsWithSlash) {
|
||||
endsWithSlash = false;
|
||||
injectionPlacesRegistrar.addPlace(PyDocstringLanguageDialect.getInstance(),
|
||||
injectionPlacesRegistrar.addPlace(PyDoctestLanguageDialect.getInstance(),
|
||||
TextRange.create(start, getEndOffset(currentPosition, string)), null, null);
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public final class PyRestDocstringLanguageInjector implements LanguageInjector {
|
||||
currentPosition += string.length();
|
||||
}
|
||||
if (gotExample && start < end)
|
||||
injectionPlacesRegistrar.addPlace(PyDocstringLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
injectionPlacesRegistrar.addPlace(PyDoctestLanguageDialect.getInstance(), TextRange.create(start, end), null, null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -29,9 +29,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* User : ktisha
|
||||
* <p>
|
||||
* filter out some python inspections and annotations if we're in docstring substitution
|
||||
* filter out some python inspections and annotations if we're in doctest substitution
|
||||
*/
|
||||
public final class PyDocstringVisitorFilter implements PythonVisitorFilter {
|
||||
public final class PyDoctestVisitorFilter implements PythonVisitorFilter {
|
||||
@Override
|
||||
public boolean isSupported(final @NotNull Class visitorClass, final @NotNull PsiFile file) {
|
||||
//inspections
|
||||
@@ -22,7 +22,7 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiLanguageInjectionHost;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringParserDefinition;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestParserDefinition;
|
||||
import com.jetbrains.python.fixtures.PyTestCase;
|
||||
|
||||
import java.util.List;
|
||||
@@ -96,7 +96,7 @@ public class PyDocstringTest extends PyTestCase {
|
||||
|
||||
|
||||
private void doTestLexer(final String text, String... expectedTokens) {
|
||||
Lexer lexer = new PyDocstringParserDefinition().createLexer(myFixture.getProject());
|
||||
Lexer lexer = new PyDoctestParserDefinition().createLexer(myFixture.getProject());
|
||||
lexer.start(text);
|
||||
int idx = 0;
|
||||
while (lexer.getTokenType() != null) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.jetbrains.python.codeInsight.functionTypeComments.PyFunctionTypeAnnot
|
||||
import com.jetbrains.python.codeInsight.functionTypeComments.PyFunctionTypeAnnotationParserDefinition;
|
||||
import com.jetbrains.python.codeInsight.functionTypeComments.psi.PyFunctionTypeAnnotation;
|
||||
import com.jetbrains.python.codeInsight.functionTypeComments.psi.PyFunctionTypeAnnotationFile;
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringTokenSetContributor;
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestTokenSetContributor;
|
||||
import com.jetbrains.python.psi.PyEllipsisLiteralExpression;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.psi.PythonVisitorFilter;
|
||||
@@ -32,7 +32,7 @@ public class PyFunctionTypeAnnotationParsingTest extends ParsingTestCase {
|
||||
getApplication().registerService(PyElementTypesFacade.class, PyElementTypesFacadeImpl.class);
|
||||
registerExtensionPoint(PythonDialectsTokenSetContributor.EP_NAME, PythonDialectsTokenSetContributor.class);
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, new PythonTokenSetContributor());
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, new PyDocstringTokenSetContributor());
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, new PyDoctestTokenSetContributor());
|
||||
addExplicitExtension(LanguageASTFactory.INSTANCE, PythonLanguage.getInstance(), new PythonASTFactory());
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.jetbrains.python.codeInsight.typeRepresentation.PyTypeRepresentationP
|
||||
import com.jetbrains.python.codeInsight.typeRepresentation.PyTypeRepresentationTokenSetContributor
|
||||
import com.jetbrains.python.codeInsight.typeRepresentation.psi.PyFunctionTypeRepresentation
|
||||
import com.jetbrains.python.codeInsight.typeRepresentation.psi.PyTypeRepresentationFile
|
||||
import com.jetbrains.python.documentation.doctest.PyDocstringTokenSetContributor
|
||||
import com.jetbrains.python.documentation.doctest.PyDoctestTokenSetContributor
|
||||
import com.jetbrains.python.psi.PyBinaryExpression
|
||||
import com.jetbrains.python.psi.PyEllipsisLiteralExpression
|
||||
import com.jetbrains.python.psi.PyExpression
|
||||
@@ -31,7 +31,7 @@ class PyTypeRepresentationParsingTest : ParsingTestCase("typeRepresentation/pars
|
||||
registerExtensionPoint(PythonDialectsTokenSetContributor.EP_NAME,
|
||||
PythonDialectsTokenSetContributor::class.java)
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, PythonTokenSetContributor())
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, PyDocstringTokenSetContributor())
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, PyDoctestTokenSetContributor())
|
||||
registerExtension(PythonDialectsTokenSetContributor.EP_NAME, PyTypeRepresentationTokenSetContributor())
|
||||
addExplicitExtension(LanguageASTFactory.INSTANCE, PythonLanguage.getInstance(), PythonASTFactory())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user