diff --git a/python/psi-api/src/com/jetbrains/python/psi/StructuredDocString.java b/python/psi-api/src/com/jetbrains/python/psi/StructuredDocString.java index eb367d6d0aa7..aec4cebb3e2b 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/StructuredDocString.java +++ b/python/psi-api/src/com/jetbrains/python/psi/StructuredDocString.java @@ -77,19 +77,6 @@ public interface StructuredDocString { // Tags related methods - @Nullable - Substring getTagValue(String... tagNames); - - @Nullable - Substring getTagValue(String tagName, @NotNull String argName); - - @Nullable - Substring getTagValue(String[] tagNames, @NotNull String argName); - - List getTagArguments(String... tagNames); - @Nullable Substring getParamByNameAndKind(@NotNull String name, String kind); - - List getAdditionalTags(); } diff --git a/python/src/com/jetbrains/python/documentation/DocStringReferenceProvider.java b/python/src/com/jetbrains/python/documentation/DocStringReferenceProvider.java index 98c467da448e..577534e54a03 100644 --- a/python/src/com/jetbrains/python/documentation/DocStringReferenceProvider.java +++ b/python/src/com/jetbrains/python/documentation/DocStringReferenceProvider.java @@ -58,24 +58,25 @@ public class DocStringReferenceProvider extends PsiReferenceProvider { final int offset = ranges.get(0).getStartOffset(); // XXX: It does not work with multielement docstrings StructuredDocString docString = DocStringUtil.parse(text); - if (docString != null) { + if (docString instanceof StructuredDocStringBase) { + final StructuredDocStringBase taggedDocString = (StructuredDocStringBase)docString; result.addAll(referencesFromNames(expr, offset, docString, - docString.getTagArguments(StructuredDocStringBase.PARAM_TAGS), + taggedDocString.getTagArguments(StructuredDocStringBase.PARAM_TAGS), StructuredDocStringBase.ReferenceType.PARAMETER)); result.addAll(referencesFromNames(expr, offset, docString, - docString.getTagArguments(StructuredDocStringBase.PARAM_TYPE_TAGS), + taggedDocString.getTagArguments(StructuredDocStringBase.PARAM_TYPE_TAGS), StructuredDocStringBase.ReferenceType.PARAMETER_TYPE)); result.addAll(referencesFromNames(expr, offset, docString, docString.getKeywordArgumentSubstrings(), StructuredDocStringBase.ReferenceType.KEYWORD)); result.addAll(referencesFromNames(expr, offset, docString, - docString.getTagArguments("var"), + taggedDocString.getTagArguments("var"), StructuredDocStringBase.ReferenceType.VARIABLE)); result.addAll(referencesFromNames(expr, offset, docString, - docString.getTagArguments("cvar"), + taggedDocString.getTagArguments("cvar"), StructuredDocStringBase.ReferenceType.CLASS_VARIABLE)); result.addAll(referencesFromNames(expr, offset, docString, - docString.getTagArguments("ivar"), + taggedDocString.getTagArguments("ivar"), StructuredDocStringBase.ReferenceType.INSTANCE_VARIABLE)); result.addAll(returnTypes(element, docString, offset)); } diff --git a/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java b/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java index f74be9bdaf9d..eb1e7c79d875 100644 --- a/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java +++ b/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java @@ -160,19 +160,22 @@ public class PyStructuredDocstringFormatter { } } - final List additionalTags = docString.getAdditionalTags(); - if (!additionalTags.isEmpty()) { - result.append("

Additional:
"); - result.append(""); - for (String tagName : additionalTags) { - final List args = docString.getTagArguments(tagName); - for (Substring arg : args) { - final String s = arg.toString(); - result.append(""); + if (docString instanceof StructuredDocStringBase) { + final StructuredDocStringBase taggedDocString = (StructuredDocStringBase)docString; + final List additionalTags = taggedDocString.getAdditionalTags(); + if (!additionalTags.isEmpty()) { + result.append("

Additional:
"); + result.append("
").append(tagName); - result.append(" ").append(s).append(":"); - result.append("").append(docString.getTagValue(tagName, s)).append("
"); + for (String tagName : additionalTags) { + final List args = taggedDocString.getTagArguments(tagName); + for (Substring arg : args) { + final String s = arg.toString(); + result.append(""); + } + result.append("
").append(tagName); + result.append(" ").append(s).append(":"); + result.append("").append(taggedDocString.getTagValue(tagName, s)).append("
"); } - result.append(""); } } return result.toString(); diff --git a/python/src/com/jetbrains/python/documentation/SectionBasedDocString.java b/python/src/com/jetbrains/python/documentation/SectionBasedDocString.java index f8c04e753371..1042674b5d32 100644 --- a/python/src/com/jetbrains/python/documentation/SectionBasedDocString.java +++ b/python/src/com/jetbrains/python/documentation/SectionBasedDocString.java @@ -365,40 +365,12 @@ public abstract class SectionBasedDocString implements StructuredDocString { return null; } - @Nullable - @Override - public Substring getTagValue(String... tagNames) { - return null; - } - - @Nullable - @Override - public Substring getTagValue(String tagName, @NotNull String argName) { - return null; - } - - @Nullable - @Override - public Substring getTagValue(String[] tagNames, @NotNull String argName) { - return null; - } - - @Override - public List getTagArguments(String... tagNames) { - return null; - } - @Nullable @Override public Substring getParamByNameAndKind(@NotNull String name, String kind) { return null; } - @Override - public List getAdditionalTags() { - return null; - } - public static class Section { private final String myTitle; private final List myFields; @@ -502,10 +474,4 @@ public abstract class SectionBasedDocString implements StructuredDocString { return result; } } - - // MethodsSection - // AttributesSection - // YieldsSection - // RaisesSection - // ReturnsSection } diff --git a/python/src/com/jetbrains/python/documentation/StructuredDocStringBase.java b/python/src/com/jetbrains/python/documentation/StructuredDocStringBase.java index c566639f2772..76cb50c641bc 100644 --- a/python/src/com/jetbrains/python/documentation/StructuredDocStringBase.java +++ b/python/src/com/jetbrains/python/documentation/StructuredDocStringBase.java @@ -76,6 +76,8 @@ public abstract class StructuredDocStringBase implements StructuredDocString { myDescription = builder.toString(); } + public abstract List getAdditionalTags(); + @Override @NotNull public String createParameterType(@NotNull final String name, @NotNull final String type) { @@ -174,7 +176,6 @@ public abstract class StructuredDocStringBase implements StructuredDocString { return result; } - @Override @Nullable public Substring getTagValue(String... tagNames) { for (String tagName : tagNames) { @@ -186,14 +187,12 @@ public abstract class StructuredDocStringBase implements StructuredDocString { return null; } - @Override @Nullable public Substring getTagValue(String tagName, @NotNull String argName) { final Map argValues = myArgTagValues.get(tagName); return argValues != null ? argValues.get(new Substring(argName)) : null; } - @Override @Nullable public Substring getTagValue(String[] tagNames, @NotNull String argName) { for (String tagName : tagNames) { @@ -205,7 +204,6 @@ public abstract class StructuredDocStringBase implements StructuredDocString { return null; } - @Override public List getTagArguments(String... tagNames) { for (String tagName : tagNames) { final Map map = myArgTagValues.get(tagName);