Streamline API of PyDocStringGenerator - remove withDefaultParameters()
authorMikhail Golubev <mikhail.golubev@jetbrains.com>
Sun, 23 Aug 2015 21:20:58 +0000 (00:20 +0300)
committerMikhail Golubev <mikhail.golubev@jetbrains.com>
Wed, 2 Sep 2015 11:35:00 +0000 (14:35 +0300)
python/src/com/jetbrains/python/codeInsight/intentions/PyGenerateDocstringIntention.java
python/src/com/jetbrains/python/documentation/PyDocstringGenerator.java
python/src/com/jetbrains/python/editor/PythonEnterHandler.java

index 475b6f1107390e90232e403a6b2de61e67c5d890..d0cdeb8b370aac9910b621cc44977de5e5f974fb 100644 (file)
@@ -67,7 +67,7 @@ public class PyGenerateDocstringIntention extends BaseIntentionAction {
 
   private boolean isAvailableForFunction(PyFunction function) {
     if (function.getDocStringValue() != null) {
-      final PyDocstringGenerator docstringGenerator = new PyDocstringGenerator(function).withDefaultParameters();
+      final PyDocstringGenerator docstringGenerator = new PyDocstringGenerator(function);
       if (docstringGenerator.hasParametersToAdd()) {
         myText = PyBundle.message("INTN.add.parameters.to.docstring");
         return true;
@@ -106,7 +106,6 @@ public class PyGenerateDocstringIntention extends BaseIntentionAction {
       docstringGenerator
         .useTypesFromDebuggerSignature(true)
         .addReturn()
-        .withDefaultParameters()
         .addFirstEmptyLine();
 
       if (docStringOwner.getDocStringValue() == null) {
index dbfa0ed576cb2787184e2fe3b607b690532d5aa5..124d7753dcc2dc73e555a58dc4348948a28673e8 100644 (file)
@@ -45,15 +45,16 @@ import java.util.List;
 public class PyDocstringGenerator {
 
   private final List<DocstringParam> myParams = Lists.newArrayList();
-  private boolean myGenerateReturn;
-
   // Updated after buildAndInsert
   @NotNull
   private PyDocStringOwner myDocStringOwner;
-  private String myQuotes = "\"\"\"";
+
   private boolean myUseTypesFromDebuggerSignature = false;
-  private boolean myNewMode = false;
+  private boolean myNewMode = false; // true - generate new string, false - update existing
   private boolean myAddFirstEmptyLine = false;
+  private boolean myParametersPrepared = false;
+  private boolean myGenerateReturn;
+  private String myQuotes = "\"\"\"";
 
   public PyDocstringGenerator(@NotNull PyDocStringOwner docStringOwner) {
     myDocStringOwner = docStringOwner;
@@ -108,10 +109,9 @@ public class PyDocstringGenerator {
     return this;
   }
 
-  @NotNull
-  public PyDocstringGenerator withDefaultParameters() {
-    // Populate parameters lift if no one was specified explicitly
-    if (myParams.isEmpty()) {
+  private void prepareParameters() {
+    // Populate parameter list, if no one was specified explicitly
+    if (!myParametersPrepared && myParams.isEmpty()) {
       if (myDocStringOwner instanceof PyFunction) {
         PySignature signature = null;
         if (myUseTypesFromDebuggerSignature) {
@@ -149,12 +149,12 @@ public class PyDocstringGenerator {
           }
         }
       }
-
     }
-    return this;
+    myParametersPrepared = true;
   }
 
   public boolean hasParametersToAdd() {
+    prepareParameters();
     return !myParams.isEmpty();
   }
 
@@ -260,6 +260,7 @@ public class PyDocstringGenerator {
 
   @NotNull
   public String buildDocString() {
+    prepareParameters();
     if (isNewMode()) {
       return createDocString();
     }
index 6fe09413b01a9df28b2ccbe987dd993fbf73fd0f..0df65ab46730cac300486a964eb726587d3ec4ed 100644 (file)
@@ -264,7 +264,6 @@ public class PythonEnterHandler extends EnterHandlerDelegateAdapter {
       final String docString = new PyDocstringGenerator(docOwner)
         .addReturn()
         .useTypesFromDebuggerSignature(true)
-        .withDefaultParameters()
         .withQuotes(quotes)
         .forceNewMode()
         .buildDocString();