replaced with StringUtil.trimStart/trimEnd
authorAlexey Kudravtsev <cdr@intellij.com>
Tue, 8 Dec 2015 12:29:20 +0000 (15:29 +0300)
committerAlexey Kudravtsev <cdr@intellij.com>
Tue, 8 Dec 2015 14:06:17 +0000 (17:06 +0300)
76 files changed:
.idea/inspectionProfiles/idea_default.xml
RegExpSupport/src/org/intellij/lang/regexp/DefaultRegExpPropertiesProvider.java
java/compiler/impl/src/com/intellij/compiler/ant/ModuleChunkClasspath.java
java/java-impl/src/com/intellij/internal/UsedIconsListingAction.java
java/java-impl/src/com/intellij/unscramble/UnscrambleListener.java
java/java-tests/testSrc/com/intellij/psi/formatter/java/IndentTest.java
java/java-tests/testSrc/com/intellij/psi/formatter/java/TabIndentingTest.java
java/java-tests/testSrc/com/intellij/psi/formatter/java/WrapperTest.java
java/testFramework/src/com/intellij/codeInsight/CodeInsightTestCase.java
java/testFramework/src/com/siyeh/ig/LightInspectionTestCase.java
platform/analysis-api/src/com/intellij/psi/search/scope/packageSet/NamedPackageSetReference.java
platform/built-in-server/src/org/jetbrains/ide/AboutHttpService.java
platform/core-api/src/com/intellij/openapi/vfs/VfsUtilCore.java
platform/indexing-api/src/com/intellij/psi/search/IndexPattern.java
platform/lang-api/src/com/intellij/ide/actions/CreateElementActionBase.java
platform/lang-impl/src/com/intellij/execution/impl/BeforeRunStepsPanel.java
platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/UrlUtil.java
platform/platform-api/src/com/intellij/execution/process/ColoredOutputTypeRegistry.java
platform/platform-api/src/com/intellij/openapi/roots/ui/LightFilePointer.java
platform/platform-impl/src/com/intellij/application/options/pathMacros/PathMacroTable.java
platform/platform-impl/src/com/intellij/ide/actions/CreateLauncherScriptAction.java
platform/platform-impl/src/com/intellij/openapi/project/impl/JBProtocolOpenProjectCommand.java
platform/platform-impl/src/com/intellij/openapi/vfs/impl/local/LocalFileSystemBase.java
platform/platform-impl/src/com/intellij/platform/LocationNameFieldsBinding.java
platform/projectModel-api/src/com/intellij/openapi/project/ProjectUtilCore.java
platform/projectModel-impl/src/com/intellij/openapi/projectRoots/impl/SimpleProjectRoot.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/ui/TestsPresentationUtil.java
platform/util/src/com/intellij/openapi/util/io/UniqueNameBuilder.java
platform/util/src/com/intellij/ui/ColorUtil.java
platform/util/src/com/intellij/util/lang/ClasspathCache.java
platform/util/src/com/intellij/util/lang/FileLoader.java
platform/util/src/com/intellij/util/lang/UrlClassLoader.java
platform/vcs-api/vcs-api-core/src/com/intellij/openapi/diff/impl/patch/UnifiedDiffWriter.java
platform/vcs-impl/src/com/intellij/openapi/vcs/checkin/CodeAnalysisBeforeCheckinHandler.java
platform/vcs-impl/src/com/intellij/openapi/vcs/checkin/TodoCheckinHandler.java
plugins/IntentionPowerPak/src/com/siyeh/ipp/integer/ConvertToScientificNotationPredicate.java
plugins/ant/src/com/intellij/lang/ant/config/execution/AntBuildMessageView.java
plugins/coverage/src/com/intellij/coverage/PackageAnnotator.java
plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/CvsUtil.java
plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/changeBrowser/LogInformationWrapper.java
plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/config/CvsApplicationLevelConfiguration.java
plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/ui/FormUtils.java
plugins/cvs/javacvs-src/org/netbeans/lib/cvsclient/command/status/StatusMessageParser.java
plugins/devkit/src/dom/generator/Util.java
plugins/devkit/src/inspections/internal/UseJBColorInspection.java
plugins/devkit/src/inspections/quickfix/AbstractRegisterFix.java
plugins/devkit/src/testAssistant/TestDataGuessByExistingFilesUtil.java
plugins/eclipse/src/org/jetbrains/idea/eclipse/util/PathUtil.java
plugins/git4idea/src/git4idea/push/GitPushSpecParser.java
plugins/git4idea/tests/git4idea/test/RefParser.java
plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertGStringToStringIntention.java
plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunTargetDialog.java
plugins/java-i18n/src/com/intellij/lang/properties/PrefixBasedPropertyReference.java
plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenClassSearcher.java
plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java
plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java
plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java
plugins/properties/src/com/intellij/lang/properties/editor/PropertiesCopyHandler.java
plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/jql/psi/impl/JqlElementImpl.java
plugins/tasks/tasks-core/src/com/intellij/tasks/bugzilla/BugzillaTask.java
python/ide/src/com/jetbrains/python/newProject/actions/ProjectSpecificSettingsStep.java
python/openapi/src/com/jetbrains/python/packaging/PyRequirement.java
python/psi-api/src/com/jetbrains/python/PythonStringUtil.java
python/pydevSrc/com/jetbrains/python/console/pydev/AbstractPyCodeCompletion.java
python/src/com/jetbrains/python/PythonHelpersLocator.java
python/src/com/jetbrains/python/buildout/BuildoutFacet.java
python/src/com/jetbrains/python/documentation/docstrings/DocStringTypeReference.java
python/src/com/jetbrains/python/psi/impl/PyBaseElementImpl.java
python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java
python/src/com/jetbrains/python/refactoring/NameSuggesterUtil.java
python/src/com/jetbrains/python/remote/PyRemoteSourceItem.java
python/src/com/jetbrains/python/testing/AbstractPythonTestRunConfiguration.java
xml/dom-openapi/src/com/intellij/util/xml/ui/BasicDomElementComponent.java
xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionData.java
xml/impl/src/com/intellij/xml/util/documentation/XmlDocumentationProvider.java

index c883baebc48cf03dfbb20418c35332c04a303803..aabceb3d9fed5072b57fbeb64174a1410f03f4fe 100644 (file)
       <replaceConfiguration name="StringUtil.stripQuotesAroundValue" text="com.intellij.openapi.util.text.StringUtil.stripQuotesAroundValue($Parameter$)" recursive="false" caseInsensitive="false" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="com.intellij.openapi.util.text.StringUtil.unquoteString($Parameter$)">
         <constraint name="Parameter" within="" contains="" />
       </replaceConfiguration>
+      <replaceConfiguration name="can use StringUtil.trimStart" text="if ($s$.startsWith($e$)) {&#10;  $s$ = $s$.substring($e$.length());&#10;}" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="$s$ = com.intellij.openapi.util.text.StringUtil.trimStart($s$, $e$);&#10;">
+        <constraint name="s" within="" contains="" />
+        <constraint name="e" within="" contains="" />
+        <constraint name="__context__" script="&quot;import com.intellij.psi.*&#10;import com.intellij.psi.search.GlobalSearchScope&#10;import com.intellij.psi.util.PsiUtil&#10;&#10;def stringUtil = JavaPsiFacade.getInstance(e.getProject()).findClass(&quot;com.intellij.openapi.util.text.StringUtil&quot;, GlobalSearchScope.allScope(e.getProject()));&#10;def strVirtualFile = PsiUtil.getVirtualFile(stringUtil);&#10;&#10;e.getParent().getParent().getParent() instanceof PsiIfStatement &amp;&amp;&#10;((PsiIfStatement)e.getParent().getParent().getParent()).getElseBranch() == null &amp;&amp;&#10;strVirtualFile != null &amp;&amp;  &#10;e.getContainingFile().getResolveScope().contains(strVirtualFile)&#10;&quot;" target="true" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="can use StringUtil.trimEnd" text="if ($s$.endsWith($e$)) {&#10;  $s$ = $s$.substring(0, $s$.length() - $e$.length());&#10;}" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="$s$ = com.intellij.openapi.util.text.StringUtil.trimEnd($s$, $e$);&#10;">
+        <constraint name="s" within="" contains="" />
+        <constraint name="e" within="" contains="" />
+        <constraint name="__context__" script="&quot;import com.intellij.psi.*&#10;import com.intellij.psi.search.GlobalSearchScope&#10;import com.intellij.psi.util.PsiUtil&#10;&#10;def stringUtil = JavaPsiFacade.getInstance(e.getProject()).findClass(&quot;com.intellij.openapi.util.text.StringUtil&quot;, GlobalSearchScope.allScope(e.getProject()));&#10;def strVirtualFile = PsiUtil.getVirtualFile(stringUtil);&#10;&#10;e instanceof PsiLiteralExpression &amp;&amp;&#10;e.getParent().getParent().getParent() instanceof PsiIfStatement &amp;&amp;&#10;((PsiIfStatement)e.getParent().getParent().getParent()).getElseBranch() == null &amp;&amp;&#10;strVirtualFile != null &amp;&amp;  &#10;e.getResolveScope().contains(strVirtualFile)&#10;&#10;&quot;" target="true" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="can use StringUtil.trimStart() with constant" text="if ($s$.startsWith(&quot;$e$&quot;)) {&#10;  $s$ = $s$.substring($n$);&#10;}" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="$s$ = com.intellij.openapi.util.text.StringUtil.trimStart($s$, &quot;$e$&quot;);&#10;">
+        <constraint name="s" within="" contains="" />
+        <constraint name="e" within="" contains="" />
+        <constraint name="n" within="" contains="" />
+        <constraint name="__context__" script="&quot;import com.intellij.psi.*&#10;import com.intellij.psi.search.GlobalSearchScope&#10;import com.intellij.psi.util.PsiUtil&#10;&#10;def stringUtil = JavaPsiFacade.getInstance(e.getProject()).findClass(&quot;com.intellij.openapi.util.text.StringUtil&quot;, GlobalSearchScope.allScope(e.getProject()));&#10;def strVirtualFile = PsiUtil.getVirtualFile(stringUtil);&#10;&#10;e instanceof PsiLiteralExpression &amp;&amp;&#10;n instanceof PsiLiteralExpression &amp;&amp;&#10;((PsiLiteralExpression)e).getValue() instanceof String &amp;&amp;&#10;((PsiLiteralExpression)n).getValue() instanceof Integer &amp;&amp;&#10;((String)((PsiLiteralExpression)e).getValue()).length() ==&#10;((Integer)((PsiLiteralExpression)n).getValue()).intValue() &amp;&amp;&#10;e.getParent().getParent().getParent() instanceof PsiIfStatement &amp;&amp;&#10;((PsiIfStatement)e.getParent().getParent().getParent()).getElseBranch() == null &amp;&amp;  &#10;strVirtualFile != null &amp;&amp;  &#10;e.getResolveScope().contains(strVirtualFile)&quot;" target="true" within="" contains="" />
+      </replaceConfiguration>
+      <replaceConfiguration name="can use StringUtil.trimEnd() with constant" text="if ($s$.endsWith(&quot;$e$&quot;)) {&#10;  $s$ = $s$.substring(0,$s$.length()-$n$);&#10;}" recursive="false" caseInsensitive="true" type="JAVA" reformatAccordingToStyle="true" shortenFQN="true" replacement="$s$ = com.intellij.openapi.util.text.StringUtil.trimEnd($s$, &quot;$e$&quot;);&#10;">
+        <constraint name="s" within="" contains="" />
+        <constraint name="e" within="" contains="" />
+        <constraint name="n" within="" contains="" />
+        <constraint name="__context__" script="&quot;import com.intellij.psi.*&#10;import com.intellij.psi.search.GlobalSearchScope&#10;import com.intellij.psi.util.PsiUtil&#10;&#10;def stringUtil = JavaPsiFacade.getInstance(e.getProject()).findClass(&quot;com.intellij.openapi.util.text.StringUtil&quot;, GlobalSearchScope.allScope(e.getProject()));&#10;def strVirtualFile = PsiUtil.getVirtualFile(stringUtil);&#10;&#10;e instanceof PsiLiteralExpression &amp;&amp;&#10;n instanceof PsiLiteralExpression &amp;&amp;&#10;((PsiLiteralExpression)e).getValue() instanceof String &amp;&amp;&#10;((PsiLiteralExpression)n).getValue() instanceof Integer &amp;&amp;&#10;((String)((PsiLiteralExpression)e).getValue()).length() ==&#10;((Integer)((PsiLiteralExpression)n).getValue()).intValue() &amp;&amp;&#10;e.getParent().getParent().getParent() instanceof PsiIfStatement &amp;&amp;&#10;((PsiIfStatement)e.getParent().getParent().getParent()).getElseBranch() == null &amp;&amp;  &#10;strVirtualFile != null &amp;&amp;  &#10;e.getResolveScope().contains(strVirtualFile)&quot;" target="true" within="" contains="" />
+      </replaceConfiguration>
     </inspection_tool>
     <inspection_tool class="SeamAnnotationIncorrectSignatureInspection" enabled="false" level="ERROR" enabled_by_default="false" />
     <inspection_tool class="SeamAnnotationsInconsistencyInspection" enabled="false" level="ERROR" enabled_by_default="false" />
index 520d9542668e273f13eb14b4571b9f8821079bea..1b94fc0c97c4f5de2654abdf241ff4e9184ce567 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2015 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 org.intellij.lang.regexp;
 
 import com.intellij.openapi.util.text.StringUtil;
@@ -134,22 +149,21 @@ public final class DefaultRegExpPropertiesProvider {
   }
 
   public boolean isValidCategory(@NotNull String category) {
-      if (category.startsWith("In")) {
-          try {
-              return Character.UnicodeBlock.forName(category.substring(2)) != null;
-          } catch (IllegalArgumentException e) {
-              return false;
-          }
+    if (category.startsWith("In")) {
+      try {
+        return Character.UnicodeBlock.forName(category.substring(2)) != null;
       }
-      if (category.startsWith("Is")) {
-          category = category.substring(2);
+      catch (IllegalArgumentException e) {
+        return false;
       }
-      for (String[] name : myPropertyNames) {
-          if (name[0].equals(category)) {
-              return true;
-          }
+    }
+    category = StringUtil.trimStart(category, "Is");
+    for (String[] name : myPropertyNames) {
+      if (name[0].equals(category)) {
+        return true;
       }
-      return false;
+    }
+    return false;
   }
 
   @Nullable
index 0883913855ae876d58e7c9f560dc3400d65abc31..926fc39375fb73f239d72bf9ce385756c2c1e9b3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -21,6 +21,7 @@ import com.intellij.compiler.ant.taskdefs.PathRef;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.project.ex.ProjectEx;
 import com.intellij.openapi.roots.*;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.JarFileSystem;
 import com.intellij.openapi.vfs.VirtualFileManager;
 import com.intellij.util.ArrayUtil;
@@ -163,9 +164,7 @@ public class ModuleChunkClasspath extends Path {
                 // Module source entry?
                 for (String url : getCompilationClasses(module, ((GenerationOptionsImpl)genOptions), generateRuntimeClasspath,
                                                         generateTestClasspath, dependencyLevel == 0)) {
-                  if (url.endsWith(JarFileSystem.JAR_SEPARATOR)) {
-                    url = url.substring(0, url.length() - JarFileSystem.JAR_SEPARATOR.length());
-                  }
+                  url = StringUtil.trimEnd(url, JarFileSystem.JAR_SEPARATOR);
                   final String propertyRef = genOptions.getPropertyRefForUrl(url);
                   if (propertyRef != null) {
                     pathItems.add(new PathElementItem(propertyRef));
index 293819bf63be28755268be9d4b16058a18ab2594..65eb2d2c54bc128e851357169adfd7f4e26b1fe1 100644 (file)
@@ -29,6 +29,7 @@ import com.intellij.openapi.command.WriteCommandAction;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.roots.ProjectFileIndex;
 import com.intellij.openapi.roots.ProjectRootManager;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.*;
 import com.intellij.psi.codeStyle.JavaCodeStyleManager;
@@ -89,9 +90,7 @@ public class UsedIconsListingAction extends AnAction {
           String str = (String)value;
           if (str.startsWith("\"")) {
             str = str.substring(0);
-            if (str.endsWith("\"")) {
-              str = str.substring(0, str.length() - 1);
-            }
+            str = StringUtil.trimEnd(str, "\"");
           }
 
           if (!str.startsWith("/")) {
index 156fe4c2eda349e233f27dccec481ed3f19ab467..f0e279528494f79cd5fdf6b9f595aac724629a9b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -20,6 +20,7 @@ import com.intellij.openapi.application.ApplicationActivationListener;
 import com.intellij.openapi.project.DumbService;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.wm.IdeFrame;
 import com.intellij.util.Alarm;
 
@@ -77,9 +78,7 @@ public class UnscrambleListener extends ApplicationActivationListener.Adapter {
     for (String line : stacktrace.split("\n")) {
       line = line.trim();
       if (line.length() == 0) continue;
-      if (line.endsWith("\r")) {
-        line = line.substring(0, line.length() - 1);
-      }
+      line = StringUtil.trimEnd(line, "\r");
       if (STACKTRACE_LINE.matcher(line).matches()) {
         linesCount++;
       }
index beed9ac5521a7852ec131031e44d36fce06d5a23..f5266d02c9bfb7255dc1f7ac6f1749649225596f 100644 (file)
@@ -149,17 +149,13 @@ public class IndentTest extends LightIdeaTestCase {
         });
       }
     }, null, null);
-    
+
 
     String textAfter = loadFile(fileNameAfter);
     String fileText = file.getText();
-    if (textAfter.startsWith("\n")) {
-      textAfter = textAfter.substring(1);
-    }
-    if (fileText.startsWith("\n")) {
-      fileText = fileText.substring(1);
-    }
-    
+    textAfter = StringUtil.trimStart(textAfter, "\n");
+    fileText = StringUtil.trimStart(fileText, "\n");
+
     assertEquals(textAfter, fileText);
   }
 
index 7644c9dcbc2a229a729b1fe8e51e4bdbe46b06e7..03ea132fa4ee717f94ee5a2a5e39bf7ce4c5812b 100644 (file)
@@ -128,7 +128,7 @@ public class TabIndentingTest extends LightIdeaTestCase {
     doTest("SCR6197.java", "SCR6197_after.java");
   }
 
-  private void doTest(String fileNameBefore, String fileNameAfter) throws Exception{
+  private void doTest(String fileNameBefore, String fileNameAfter) throws Exception {
     String text = loadFile(fileNameBefore);
     final PsiFile file = createFile(fileNameBefore, text);
     CommandProcessor.getInstance().executeCommand(getProject(), new Runnable() {
@@ -147,18 +147,14 @@ public class TabIndentingTest extends LightIdeaTestCase {
         });
       }
     }, null, null);
-    
+
 
     String textAfter = loadFile(fileNameAfter);
     String fileText = file.getText();
 
-    if (textAfter.startsWith("\n")) {
-      textAfter = textAfter.substring(1);
-    }
-    if (fileText.startsWith("\n")) {
-      fileText = fileText.substring(1);
-    }
-    
+    textAfter = StringUtil.trimStart(textAfter, "\n");
+    fileText = StringUtil.trimStart(fileText, "\n");
+
     if (!textAfter.equals(fileText)) {
       System.err.println("Expected:");
       System.err.println(textAfter);
index 5a0508f8944779c877684d1155bcd41130ecfe61..fa747d2720c447b72658890751a2f49a1d112aa1 100644 (file)
@@ -17,6 +17,7 @@ package com.intellij.psi.formatter.java;
 
 import com.intellij.lang.java.JavaLanguage;
 import com.intellij.openapi.fileTypes.StdFileTypes;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
 
 public class WrapperTest extends JavaFormatterTestCase {
@@ -28,9 +29,7 @@ public class WrapperTest extends JavaFormatterTestCase {
   @Override
   protected String prepareText(final String text) {
     String result = text;
-    if (result.startsWith("\n")) {
-      result = result.substring(1);
-    }
+    result = StringUtil.trimStart(result, "\n");
     return result;
   }
 
index f429d0ede37081777839e88a3e360469a22f5839..0afd2d66a48d06ba4a256184acfe75089cc0fe64 100644 (file)
@@ -308,9 +308,7 @@ public abstract class CodeInsightTestCase extends PsiTestCase {
     List<OutputStream> streamsToClose = new ArrayList<OutputStream>();
 
     for (String relativePath : relativePaths) {
-      if (relativePath.startsWith("/")) {
-        relativePath = relativePath.substring(1);
-      }
+      relativePath = StringUtil.trimStart(relativePath, "/");
       final VirtualFile fromFile = fromDir.findFileByRelativePath(relativePath);
       assertNotNull(fromDir.getPath() + "/" + relativePath, fromFile);
       VirtualFile toFile = toDir.findFileByRelativePath(relativePath);
index fa85710f0c14b994131f8705ee8f3b9477658bc8..3a1d6f8cddc8c5d562f026867d1af0ed21c2b1ec 100644 (file)
@@ -16,6 +16,7 @@
 package com.siyeh.ig;
 
 import com.intellij.codeInspection.InspectionProfileEntry;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
 import com.intellij.util.ArrayUtil;
 import org.intellij.lang.annotations.Language;
@@ -107,9 +108,7 @@ public abstract class LightInspectionTestCase extends LightCodeInsightFixtureTes
       basePath.append(word).append('/');
     }
     String lastWord = words[lastWordIndex];
-    if (lastWord.endsWith("Inspection")) {
-      lastWord = lastWord.substring(0, lastWord.length() - 10);
-    }
+    lastWord = StringUtil.trimEnd(lastWord, "Inspection");
     final int length = lastWord.length();
     boolean upperCase = false;
     for (int i = 0; i < length; i++) {
index d851e2da635d3805cec0266666fdc0d620a8e0c3..fb42e0f95e80fc83776acddb745b10617ef701e7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -15,6 +15,7 @@
  */
 package com.intellij.psi.search.scope.packageSet;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 
@@ -22,7 +23,7 @@ public class NamedPackageSetReference extends PackageSetBase {
   private final String myName;
 
   public NamedPackageSetReference(String name) {
-    myName = name.startsWith("$") ? name.substring(1) : name;
+    myName = StringUtil.trimStart(name, "$");
   }
 
   @Override
index 11c05002b9fd70f49a1435395781ddf20b1b9de5..f45c6f309ede5079fa5f9e8ce98e7373cfaeafe2 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.openapi.fileTypes.FileType;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
 import com.intellij.openapi.util.BuildNumber;
 import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.PlatformUtils;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.handler.codec.http.FullHttpRequest;
@@ -83,9 +84,7 @@ class AboutHttpService extends RestService {
     if (!PlatformUtils.isIdeaUltimate()) {
       String productName = ApplicationNamesInfo.getInstance().getProductName();
       appName = appName.replace(productName + " (" + productName + ")", productName);
-      if (appName.startsWith("JetBrains ")) {
-        appName = appName.substring("JetBrains ".length());
-      }
+      appName = StringUtil.trimStart(appName, "JetBrains ");
     }
 
     writer.name("name").value(appName);
index 25895bce107792177cb239e5215a1aa121f61a20..ef6a0c962725d05dfdc48d5bdae5d2352c029549 100644 (file)
@@ -550,9 +550,7 @@ public class VfsUtilCore {
       uri = uri.substring("file:/".length());
       if (!SystemInfo.isWindows) uri = "/" + uri;
     }
-    else if (uri.startsWith("file:")) {
-      uri = uri.substring("file:".length());
-    }
+    else uri = StringUtil.trimStart(uri, "file:");
 
     VirtualFile file = null;
 
index 0066c260f1b35ac1b3281e19aa62ab837ba9c888..c88d45c1160b0589f3eb7711f52a3c8f296b1579 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -15,6 +15,7 @@
  */
 package com.intellij.psi.search;
 
+import com.intellij.openapi.util.text.StringUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -81,9 +82,7 @@ public class IndexPattern {
       }
       myPattern = Pattern.compile(myPatternString, flags);
       String optimizedPattern = myPatternString;
-      if (optimizedPattern.startsWith(".*")) {
-        optimizedPattern = optimizedPattern.substring(".*".length());
-      }
+      optimizedPattern = StringUtil.trimStart(optimizedPattern, ".*");
       myOptimizedIndexingPattern = Pattern.compile(optimizedPattern, flags);
     }
     catch(PatternSyntaxException e){
index cfee9818c139e86893e04da9012741840941ea19..b2a54ff7ff6391b46f3e9b71409765a796f7d4f8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -21,6 +21,7 @@ import com.intellij.openapi.actionSystem.*;
 import com.intellij.openapi.project.DumbService;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.ui.InputValidator;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiDirectory;
 import com.intellij.psi.PsiElement;
 import org.jetbrains.annotations.NonNls;
@@ -115,9 +116,7 @@ public abstract class CreateElementActionBase extends AnAction {
   public static String filterMessage(String message) {
     if (message == null) return null;
     @NonNls final String ioExceptionPrefix = "java.io.IOException:";
-    if (message.startsWith(ioExceptionPrefix)) {
-      message = message.substring(ioExceptionPrefix.length());
-    }
+    message = StringUtil.trimStart(message, ioExceptionPrefix);
     return message;
   }
 
index 60d3819df9e257276161df3296cf06c046b5a7a9..8e1ebeb998ee6ac4ddd9714e56f168a387ee9411 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -32,6 +32,7 @@ import com.intellij.openapi.util.Conditions;
 import com.intellij.openapi.util.Key;
 import com.intellij.openapi.util.Pair;
 import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.ui.*;
 import com.intellij.ui.components.JBList;
 import com.intellij.util.containers.hash.HashSet;
@@ -211,9 +212,7 @@ class BeforeRunStepsPanel extends JPanel {
         Map.Entry<BeforeRunTaskProvider, Integer> entry = iterator.next();
         BeforeRunTaskProvider provider = entry.getKey();
         String name = provider.getName();
-        if (name.startsWith("Run ")) {
-          name = name.substring(4);
-        }
+        name = StringUtil.trimStart(name, "Run ");
         if (sb.length() > 0) {
           sb.append(", ");
         }
index 141db44b637d17c8b1b0e662c48cf6de121bf21b..9f7e41f69394fa151854625c992836bce0424d5b 100644 (file)
@@ -1330,9 +1330,7 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
     }
     hit = hit.replace("  ", " "); //avoid extra spaces from mnemonics and xml conversion
     String text = hit.trim();
-    if (text.endsWith(":")) {
-      text = text.substring(0, text.length() - 1);
-    }
+    text = StringUtil.trimEnd(text, ":");
     return text;
   }
 
index 7eb88034c6e35ffbd71400d3d667bfd7b2e50a01..db26d1a35bcd83c7ab15b0cb91a97cda89601fce 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -17,6 +17,7 @@ package com.intellij.ide.fileTemplates.impl;
 
 import com.intellij.ide.fileTemplates.FileTemplate;
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.io.URLUtil;
 
 import java.io.BufferedInputStream;
@@ -87,9 +88,7 @@ public class UrlUtil {
   private static List<String> getChildPathsFromJar(URL root) throws IOException {
     final List<String> paths = new ArrayList<String>();
     String file = root.getFile();
-    if (file.startsWith(FILE_PROTOCOL_PREFIX)) {
-      file = file.substring(FILE_PROTOCOL_PREFIX.length());
-    }
+    file = StringUtil.trimStart(file, FILE_PROTOCOL_PREFIX);
     final int jarSeparatorIndex = file.indexOf(JAR_SEPARATOR);
     assert jarSeparatorIndex > 0;
 
index 896068aac412ae718444ed861fb885b1148d4cf0..6e84402ae9e2225055b8e0fdec41c496dcf8db1e 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2000-2015 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.intellij.execution.process;
 
 import com.intellij.execution.ui.ConsoleViewContentType;
@@ -7,6 +22,7 @@ import com.intellij.openapi.editor.colors.TextAttributesKey;
 import com.intellij.openapi.editor.markup.EffectType;
 import com.intellij.openapi.editor.markup.TextAttributes;
 import com.intellij.openapi.util.Key;
+import com.intellij.openapi.util.text.StringUtil;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
 
@@ -76,12 +92,8 @@ public class ColoredOutputTypeRegistry {
     if (attribute.startsWith("\u001B[")) {
       attribute = attribute.substring(2);
     }
-    else if (attribute.startsWith("[")) {
-      attribute = attribute.substring(1);
-    }
-    if (attribute.endsWith("m")) {
-      attribute = attribute.substring(0, attribute.length() - 1);
-    }
+    else attribute = StringUtil.trimStart(attribute, "[");
+    attribute = StringUtil.trimEnd(attribute, "m");
     if (attribute.equals("0")) {
       return ProcessOutputTypes.STDOUT;
     }
index c124ad10856c970334cc927ca4bed3f0a8cc5dc2..ab1b543a829b574a55dbe76988c61d8c24669d37 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -15,6 +15,7 @@
  */
 package com.intellij.openapi.roots.ui;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.JarFileSystem;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.openapi.vfs.VirtualFileManager;
@@ -70,9 +71,7 @@ public class LightFilePointer implements VirtualFilePointer {
 
   public static String toPresentableUrl(String url) {
     String path = VirtualFileManager.extractPath(url);
-    if (path.endsWith(JarFileSystem.JAR_SEPARATOR)) {
-      path = path.substring(0, path.length() - JarFileSystem.JAR_SEPARATOR.length());
-    }
+    path = StringUtil.trimEnd(path, JarFileSystem.JAR_SEPARATOR);
     return path.replace('/', File.separatorChar);
   }
 
index 9950186c194ad58860da4c7dccd1a801577570a4..0669e0b717cf7528e2540500eba025f92cd9557e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -21,6 +21,7 @@ import com.intellij.openapi.application.PathMacros;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.util.Couple;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.ui.JBColor;
 import com.intellij.util.ui.Table;
 
@@ -128,7 +129,7 @@ public class PathMacroTable extends Table {
       final String value = pair.getSecond();
       if (value != null && value.trim().length() > 0) {
         String path = value.replace(File.separatorChar, '/');
-        if (path.endsWith("/")) path = path.substring(0, path.length() - 1);
+        path = StringUtil.trimEnd(path, "/");
         myPathMacros.setMacro(pair.getFirst(), path);
       }
     }
index 38daf69a2601ea65a707650904f1a44e994f4549..b624510b6cb26461967c452750a93e2c99be5bcc 100644 (file)
@@ -149,7 +149,7 @@ public class CreateLauncherScriptAction extends DumbAwareAction {
     String runPath = PathManager.getHomePath();
     String productName = ApplicationNamesInfo.getInstance().getProductName().toLowerCase(Locale.US);
     if (!SystemInfo.isMac) runPath += "/bin/" + productName + ".sh";
-    else if (runPath.endsWith(CONTENTS)) runPath = runPath.substring(0, runPath.length() - CONTENTS.length());
+    else runPath = StringUtil.trimEnd(runPath, CONTENTS);
 
     ClassLoader loader = CreateLauncherScriptAction.class.getClassLoader();
     assert loader != null;
index 0c846dd9963b3dc72a09cc3b4856580633c69513..b41460cb2144d860739a02e894207981dcc5e091 100644 (file)
@@ -17,6 +17,7 @@ package com.intellij.openapi.project.impl;
 
 import com.intellij.ide.impl.ProjectUtil;
 import com.intellij.openapi.application.JBProtocolCommand;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.LocalFileSystem;
 import org.jetbrains.annotations.NotNull;
 
@@ -36,9 +37,7 @@ public class JBProtocolOpenProjectCommand extends JBProtocolCommand {
   @Override
   public void perform(String target, Map<String, String> parameters) {
     String path = URLDecoder.decode(target);
-    if (path.startsWith(LocalFileSystem.PROTOCOL_PREFIX)) {
-      path = path.substring(LocalFileSystem.PROTOCOL_PREFIX.length());
-    }
+    path = StringUtil.trimStart(path, LocalFileSystem.PROTOCOL_PREFIX);
     ProjectUtil.openProject(path, null, true);
   }
 }
index 962c15f317ebf708d91403f84dea736a43d63e6f..65a45613ec47fd8aadf7a5bd288f3902cb5d9a12 100644 (file)
@@ -158,9 +158,7 @@ public abstract class LocalFileSystemBase extends LocalFileSystem {
         final String[] names = new String[roots.length];
         for (int i = 0; i < names.length; i++) {
           String name = roots[i].getPath();
-          if (name.endsWith(File.separator)) {
-            name = name.substring(0, name.length() - File.separator.length());
-          }
+          name = StringUtil.trimEnd(name, File.separator);
           names[i] = name;
         }
         return names;
index f4b719465ddcef578eec8846f5cf661c26f7ab9f..6c0cd917cf89f750d0fb2abb31033b3ae413a3cc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -23,6 +23,7 @@ import com.intellij.openapi.ui.TextComponentAccessor;
 import com.intellij.openapi.ui.TextFieldWithBrowseButton;
 import com.intellij.openapi.util.SystemInfo;
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.ui.DocumentAdapter;
 import org.jetbrains.annotations.NotNull;
@@ -88,9 +89,7 @@ public class LocationNameFieldsBinding {
         }
         myModifyingLocation = true;
         String path = locationField.getText().trim();
-        if (path.endsWith(File.separator)) {
-          path = path.substring(0, path.length() - File.separator.length());
-        }
+        path = StringUtil.trimEnd(path, File.separator);
         int ind = path.lastIndexOf(File.separator);
         if (ind != -1) {
           String projectName = path.substring(ind + 1, path.length());
index 120605d9329223893cc1c87aa65f56c42f85ab98..b4a97c938b61ca96c8b93f6e6597726ee01fc488 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -83,9 +83,7 @@ public class ProjectUtilCore {
     }
 
     String projectName = FileUtil.toSystemIndependentName(location);
-    if (projectName.endsWith("/")) {
-      projectName = projectName.substring(0, projectName.length() - 1);
-    }
+    projectName = StringUtil.trimEnd(projectName, "/");
 
     final int lastSlash = projectName.lastIndexOf('/');
     if (lastSlash >= 0 && lastSlash + 1 < projectName.length()) {
index c2ed28929c2d940bcac168096468f390a975fcb3..be2d7a654feb04a7031efd7081dd20c9c6a8212a 100644 (file)
@@ -17,6 +17,7 @@
 package com.intellij.openapi.projectRoots.impl;
 
 import com.intellij.openapi.projectRoots.ex.ProjectRoot;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VfsUtilCore;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.openapi.vfs.VirtualFileManager;
@@ -58,9 +59,7 @@ public class SimpleProjectRoot implements ProjectRoot {
   @NotNull
   public String getPresentableString() {
     String path = VirtualFileManager.extractPath(myUrl);
-    if (path.endsWith(URLUtil.JAR_SEPARATOR)) {
-      path = path.substring(0, path.length() - URLUtil.JAR_SEPARATOR.length());
-    }
+    path = StringUtil.trimEnd(path, URLUtil.JAR_SEPARATOR);
     return path.replace('/', File.separatorChar);
   }
 
index 44ff3ddc45b9e92c9f0bc0e4493de58498dfcb5c..acd78a94cb74aa371415d96f201873336fb304d8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -237,11 +237,9 @@ public class TestsPresentationUtil {
         }
         if (parentStartsWith) {
           presentationCandidate = name.substring(parentName.length());
-  
+
           // remove "." separator
-          if (presentationCandidate.startsWith(".")) {
-            presentationCandidate = presentationCandidate.substring(1);
-          }
+          presentationCandidate = StringUtil.trimStart(presentationCandidate, ".");
         }
       }
     }
index 7ebbc1b788afe15a40e601782fc7b910b7769260..c7d2237dd2730c4ac28474e7dd841072b8173f00 100644 (file)
@@ -1,9 +1,25 @@
+/*
+ * Copyright 2000-2015 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.intellij.openapi.util.io;
 
+import com.intellij.openapi.util.text.StringUtil;
 import gnu.trove.THashMap;
 import gnu.trove.TIntObjectHashMap;
 
-import java.util.*;
+import java.util.Map;
 
 /**
  * @author yole
@@ -40,12 +56,12 @@ public class UniqueNameBuilder<T> {
   private final Node myRootNode = new Node('\0', null);
 
   public void addPath(T key, String value) {
-    if (value.startsWith(myRoot)) value = value.substring(myRoot.length());
+    value = StringUtil.trimStart(value, myRoot);
     myPaths.put(key, value);
 
     Node current = myRootNode;
 
-    for(int i = value.length() - 1; i >=0; --i) {
+    for (int i = value.length() - 1; i >= 0; --i) {
       char ch = value.charAt(i);
       Node node = current.myChildren.get(ch);
       if (node == null) current.myChildren.put(ch, node = new Node(ch, current));
index 965e2b22ab9bc51fc9661b298f58d3bfe9fa939b..9eb0dc278b83054d1d0d088fa276bd5d1cdbb731 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2012 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -19,6 +19,7 @@
  */
 package com.intellij.ui;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.ui.UIUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -108,9 +109,7 @@ public class ColorUtil {
    * @return Color object
    */
   public static Color fromHex(String str) {
-    if (str.startsWith("#")) {
-      str = str.substring(1);
-    }
+    str = StringUtil.trimStart(str, "#");
     if (str.length() == 3) {
       return new Color(
         17 * Integer.valueOf(String.valueOf(str.charAt(0)), 16).intValue(),
index 19f31630c89454fdc6361c1f82ed0b7030f40cdb..82f180d52d29119e1ae3413f08d531a69f18a031 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -201,9 +201,7 @@ public class ClasspathCache {
   }
 
   static String transformName(String name) {
-    if (name.endsWith("/")) {
-      name = name.substring(0, name.length() - 1);
-    }
+    name = StringUtil.trimEnd(name, "/");
     name = name.substring(name.lastIndexOf('/') + 1);
 
     if (name.endsWith(UrlClassLoader.CLASS_EXTENSION)) {
index 8d36b2462d6c368ee3686d84ec696a411365270a..080cdc57d8381c3bdb7159444ecff6f9b0331667 100644 (file)
@@ -16,6 +16,7 @@
 package com.intellij.util.lang;
 
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.text.StringUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -69,7 +70,7 @@ class FileLoader extends Loader {
   private String getRelativeResourcePath(final String absFilePath) {
     String relativePath = absFilePath.substring(myRootDirAbsolutePath.length());
     relativePath = relativePath.replace(File.separatorChar, '/');
-    if (relativePath.startsWith("/")) relativePath = relativePath.substring(1);
+    relativePath = StringUtil.trimStart(relativePath, "/");
     return relativePath;
   }
 
index 62f57f9cb2c9dcd7bc35c91b5926a32378e7dc6b..c9ae43d9f0a7472c2e63de119d48bad9bd70593c 100644 (file)
@@ -20,6 +20,7 @@ import com.intellij.openapi.application.PathManager;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.util.SystemInfo;
 import com.intellij.openapi.util.io.win32.IdeaWin32;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.Function;
 import com.intellij.util.containers.ContainerUtil;
 import com.intellij.util.containers.WeakStringInterner;
@@ -273,7 +274,7 @@ public class UrlClassLoader extends ClassLoader {
   @Nullable
   private Resource _getResource(final String name) {
     String n = name;
-    if (n.startsWith("/")) n = n.substring(1);
+    n = StringUtil.trimStart(n, "/");
     return getClassPath().getResource(n, true);
   }
 
index 56997f1ea61f987e3fa44c617c1e300088879825..59910be0b100c1d542d2a6b50987eab03a52bcc9 100644 (file)
@@ -73,15 +73,19 @@ public class UnifiedDiffWriter {
                        lineSeparator);
         for(PatchLine line: hunk.getLines()) {
           char prefixChar = ' ';
-          switch(line.getType()) {
-            case ADD: prefixChar = '+'; break;
-            case REMOVE: prefixChar = '-'; break;
-            case CONTEXT: prefixChar = ' '; break;
+          switch (line.getType()) {
+            case ADD:
+              prefixChar = '+';
+              break;
+            case REMOVE:
+              prefixChar = '-';
+              break;
+            case CONTEXT:
+              prefixChar = ' ';
+              break;
           }
           String text = line.getText();
-          if (text.endsWith("\n")) {
-            text = text.substring(0, text.length()-1);
-          }
+          text = StringUtil.trimEnd(text, "\n");
           writeLine(writer, text, prefixChar);
           if (line.isSuppressNewLine()) {
             writer.write(lineSeparator + NO_NEWLINE_SIGNATURE + lineSeparator);
index d3630fb638d4d49c9d1517448b24408fc7d522aa..bcecf9e8d28f1260d0d17cabe8093e82b4a5ba44 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -25,6 +25,7 @@ import com.intellij.openapi.progress.ProcessCanceledException;
 import com.intellij.openapi.project.DumbService;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vcs.CheckinProjectPanel;
 import com.intellij.openapi.vcs.CodeSmellDetector;
 import com.intellij.openapi.vcs.VcsBundle;
@@ -33,13 +34,11 @@ import com.intellij.openapi.vcs.changes.CommitExecutor;
 import com.intellij.openapi.vcs.ui.RefreshableOnComponent;
 import com.intellij.ui.NonFocusableCheckBox;
 import com.intellij.util.PairConsumer;
-import com.intellij.util.PlatformUtils;
 import com.intellij.util.ui.UIUtil;
 import org.jetbrains.annotations.Nullable;
 
 import javax.swing.*;
 import java.awt.*;
-import java.text.MessageFormat;
 import java.util.List;
 
 /**
@@ -97,14 +96,14 @@ public class CodeAnalysisBeforeCheckinHandler extends CheckinHandler {
     int errorCount = collectErrors(codeSmells);
     int warningCount = codeSmells.size() - errorCount;
     String commitButtonText = executor != null ? executor.getActionText() : myCheckinPanel.getCommitActionName();
-    if (commitButtonText.endsWith("...")) {
-      commitButtonText = commitButtonText.substring(0, commitButtonText.length()-3);
-    }
+    commitButtonText = StringUtil.trimEnd(commitButtonText, "...");
 
     final int answer = Messages.showYesNoCancelDialog(myProject,
-      VcsBundle.message("before.commit.files.contain.code.smells.edit.them.confirm.text", errorCount, warningCount),
-      VcsBundle.message("code.smells.error.messages.tab.name"), VcsBundle.message("code.smells.review.button"),
-      commitButtonText, CommonBundle.getCancelButtonText(), UIUtil.getWarningIcon());
+                                                      VcsBundle.message("before.commit.files.contain.code.smells.edit.them.confirm.text",
+                                                                        errorCount, warningCount),
+                                                      VcsBundle.message("code.smells.error.messages.tab.name"),
+                                                      VcsBundle.message("code.smells.review.button"),
+                                                      commitButtonText, CommonBundle.getCancelButtonText(), UIUtil.getWarningIcon());
     if (answer == Messages.YES) {
       CodeSmellDetector.getInstance(myProject).showCodeSmellErrors(codeSmells);
       return ReturnResult.CLOSE_WINDOW;
index 61180a2b2415f3a3e9fed1a0c732393377f070b5..bc67fe200a38dba54b07920369f973801e79caf6 100644 (file)
@@ -33,6 +33,7 @@ import com.intellij.openapi.project.DumbService;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.util.Ref;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vcs.CheckinProjectPanel;
 import com.intellij.openapi.vcs.VcsBundle;
 import com.intellij.openapi.vcs.VcsConfiguration;
@@ -174,9 +175,7 @@ public class TodoCheckinHandler extends CheckinHandler {
 
   private ReturnResult showResults(final TodoCheckinHandlerWorker worker, CommitExecutor executor) {
     String commitButtonText = executor != null ? executor.getActionText() : myCheckinProjectPanel.getCommitActionName();
-    if (commitButtonText.endsWith("...")) {
-      commitButtonText = commitButtonText.substring(0, commitButtonText.length()-3);
-    }
+    commitButtonText = StringUtil.trimEnd(commitButtonText, "...");
 
     final String text = createMessage(worker);
     final String[] buttons;
index 7c3fe43999a58336f051807a7c5db6adee4b9bc0..515542549ad1fb74bd690e779451e96e87002f60 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2010 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -15,6 +15,7 @@
  */
 package com.siyeh.ipp.integer;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiLiteralExpression;
 import com.intellij.psi.PsiType;
@@ -39,9 +40,7 @@ class ConvertToScientificNotationPredicate implements PsiElementPredicate {
       return false;
     }
     text = text.toLowerCase();
-    if (text.startsWith("-")) {
-      text = text.substring(1);
-    }
+    text = StringUtil.trimStart(text, "-");
     if (!text.contains(".") && text.startsWith("0")) {
       return false; //Octal integer
     }
index 9aa64f1508ea372a3c5caa764d435542f5cc4da8..82a2addbc7bf1cd96b9f089c06b3ef9111495499 100644 (file)
@@ -44,6 +44,7 @@ import com.intellij.openapi.util.Clock;
 import com.intellij.openapi.util.Computable;
 import com.intellij.openapi.util.Disposer;
 import com.intellij.openapi.util.Key;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.LocalFileSystem;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.openapi.vfs.VirtualFileManager;
@@ -468,9 +469,7 @@ public final class AntBuildMessageView extends JPanel implements DataProvider, O
   }
 
   private static AntMessage createErrorMessage(int priority, String text) {
-    if (text.startsWith(FILE_PREFIX)) {
-      text = text.substring(FILE_PREFIX.length());
-    }
+    text = StringUtil.trimStart(text, FILE_PREFIX);
 
     int afterLineNumberIndex = text.indexOf(": "); // end of file_name_and_line_number sequence
     if (afterLineNumberIndex != -1) {
index 46b34ceff9943f3d14e68c4cf0c0775b706b26f8..51cf693534721f07fe381c7edb6e163915653c3f 100644 (file)
@@ -30,7 +30,10 @@ import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VfsUtil;
 import com.intellij.openapi.vfs.VfsUtilCore;
 import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.psi.*;
+import com.intellij.psi.JavaPsiFacade;
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiManager;
+import com.intellij.psi.PsiPackage;
 import com.intellij.psi.search.GlobalSearchScope;
 import com.intellij.rt.coverage.data.ClassData;
 import com.intellij.rt.coverage.data.LineCoverage;
@@ -523,7 +526,7 @@ public class PackageAnnotator {
   private static String getSourceToplevelFQName(String classFQVMName) {
     final int index = classFQVMName.indexOf('$');
     if (index > 0) classFQVMName = classFQVMName.substring(0, index);
-    if (classFQVMName.startsWith("/")) classFQVMName = classFQVMName.substring(1);
+    classFQVMName = StringUtil.trimStart(classFQVMName, "/");
     return classFQVMName.replaceAll("/", ".");
   }
 
index 5c47e2a97e6d83b404d1494246ff8053e23fd933..1e9249acd0336f5cd6f1349fe315bf47f0e52056 100644 (file)
@@ -660,22 +660,17 @@ public class CvsUtil {
 
   }
 
-  public static String getRelativeRepositoryPath(String repository, String serverRoot) {    
+  public static String getRelativeRepositoryPath(String repository, String serverRoot) {
     repository = repository.replace(File.separatorChar, '/');
     serverRoot = serverRoot.replace(File.separatorChar, '/');
 
     if (repository.startsWith(serverRoot)) {
       repository = repository.substring(serverRoot.length());
 
-      if (repository.startsWith("/")) {
-        repository = repository.substring(1);
-      }
-
+      repository = StringUtil.trimStart(repository, "/");
     }
 
-    if (repository.startsWith("./")) {
-      repository = repository.substring(2);
-    }
+    repository = StringUtil.trimStart(repository, "./");
 
     return repository;
   }
index 50538024438b25ad5e7af4a1fa4255072cf8018c..2f7ae5c24c7bafaa1abe40e87f88d6786401366a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2011 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -16,6 +16,7 @@
 package com.intellij.cvsSupport2.changeBrowser;
 
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.text.StringUtil;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.Nullable;
 import org.netbeans.lib.cvsclient.command.log.LogInformation;
@@ -66,12 +67,8 @@ public class LogInformationWrapper {
 
   private static LogInformationWrapper buildWrapper(LogInformation log, String rcsFileName, int length) {
     String relativePath = rcsFileName.substring(length);
-    if (relativePath.startsWith("/")) {
-      relativePath = relativePath.substring(1);
-    }
-    if (relativePath.endsWith(CVS_REPOSITORY_FILE_POSTFIX)) {
-      relativePath = relativePath.substring(0, relativePath.length() - CVS_REPOSITORY_FILE_POSTFIX.length());
-    }
+    relativePath = StringUtil.trimStart(relativePath, "/");
+    relativePath = StringUtil.trimEnd(relativePath, CVS_REPOSITORY_FILE_POSTFIX);
     return new LogInformationWrapper(relativePath, log.getRevisionList(), log.getAllSymbolicNames());
   }
 }
index 23cbefd47cb60c159f7e6171cdba11d33263990e..dc2f13a18c211709a5c792f99503c19c2ae7a81e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2011 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -189,9 +189,7 @@ public class CvsApplicationLevelConfiguration implements NamedComponent, JDOMExt
       try {
         String line;
         while ((line = reader.readLine()) != null) {
-          if (line.startsWith("/1 ")) {
-            line = line.substring(3);
-          }
+          line = StringUtil.trimStart(line, "/1 ");
           final int sepPosition = line.indexOf(' ');
           if (sepPosition > 0) {
             final String cvsRoot = line.substring(0, sepPosition);
index 865524ede23ce45ea3b1810f058c7ab1412776bb..7a79aaf5a519e2e9abbadcef1cbc5b174d878679 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -18,6 +18,7 @@ package com.intellij.cvsSupport2.ui;
 import com.intellij.CvsBundle;
 import com.intellij.openapi.ui.InputException;
 import com.intellij.openapi.ui.TextFieldWithBrowseButton;
+import com.intellij.openapi.util.text.StringUtil;
 
 import javax.swing.*;
 
@@ -44,9 +45,7 @@ public class FormUtils {
   private static String getLabelText(JComponent field) {
     final JLabel label = (JLabel)field.getClientProperty("labeledBy");
     String text = label.getText();
-    if (text.endsWith(":")) {
-      text = text.substring(0, text.length() - 1);
-    }
+    text = StringUtil.trimEnd(text, ":");
     return text;
   }
 
index d095cbea62411ff731eb28c20e1f69138ced1835..b1b765d0ac6efe8a9d9bf58ab0691ee09d099c48 100644 (file)
@@ -12,6 +12,8 @@
  */
 package org.netbeans.lib.cvsclient.command.status;
 
+import com.intellij.openapi.util.text.StringUtil;
+import org.jetbrains.annotations.NonNls;
 import org.netbeans.lib.cvsclient.command.AbstractMessageParser;
 import org.netbeans.lib.cvsclient.event.IEventSender;
 import org.netbeans.lib.cvsclient.file.AbstractFileObject;
@@ -19,7 +21,6 @@ import org.netbeans.lib.cvsclient.file.FileObject;
 import org.netbeans.lib.cvsclient.file.FileStatus;
 import org.netbeans.lib.cvsclient.file.ICvsFileSystem;
 import org.netbeans.lib.cvsclient.util.BugLog;
-import org.jetbrains.annotations.NonNls;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -135,9 +136,7 @@ final class StatusMessageParser extends AbstractMessageParser {
                                final String statusString = line.substring(statusIndex + STATUS.length());
                                final FileStatus status = FileStatus.getStatusForString(statusString);
                                String fileName = line.substring(FILE.length(), statusIndex).trim();
-                               if (fileName.startsWith(NO_FILE)) {
-                                       fileName = fileName.substring(NO_FILE.length());
-                               }
+                               fileName = StringUtil.trimStart(fileName, NO_FILE);
 
                                outputDone();
 
index a393bb143602ae3d25f54166c2e157720b2554ca..4e87510ae81349d2fcad29025cd1e80b1208eb7e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2010 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -22,6 +22,7 @@
  */
 package org.jetbrains.idea.devkit.dom.generator;
 
+import com.intellij.openapi.util.text.StringUtil;
 import org.apache.xerces.xs.XSObject;
 
 import java.util.HashMap;
@@ -150,7 +151,7 @@ public class Util {
 
   public static String toDefXmlTagName(String tname) {
     String xmlName = tname;
-    if (xmlName.endsWith(TYPE_SUFFIX)) xmlName = xmlName.substring(0, xmlName.length() - TYPE_SUFFIX.length());
+    xmlName = StringUtil.trimEnd(xmlName, TYPE_SUFFIX);
     return xmlName;
   }
 
index 17f3405abfa35aa62852ad57aee3a7bd718aa70b..6c378d56ba26473fe27339cac00047b7eb2dd184 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -20,6 +20,7 @@ import com.intellij.codeInspection.ProblemDescriptor;
 import com.intellij.codeInspection.ProblemHighlightType;
 import com.intellij.codeInspection.ProblemsHolder;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.search.GlobalSearchScope;
 import com.intellij.ui.JBColor;
@@ -63,16 +64,16 @@ public class UseJBColorInspection extends InternalInspection {
             if (text.contains(".")) {
               text = text.substring(text.lastIndexOf('.'));
             }
-            if (text.startsWith(".")) {
-              text = text.substring(1);
-            }
+            text = StringUtil.trimStart(text, ".");
             if (text.equalsIgnoreCase("lightGray")) {
               text = "LIGHT_GRAY";
-            } else if (text.equalsIgnoreCase("darkGray")) {
+            }
+            else if (text.equalsIgnoreCase("darkGray")) {
               text = "DARK_GRAY";
             }
             final ProblemDescriptor descriptor = holder.getManager()
-              .createProblemDescriptor(expression, "Change to JBColor." + text.toUpperCase(), new ConvertToJBColorConstantQuickFix(text.toUpperCase()),
+              .createProblemDescriptor(expression, "Change to JBColor." + text.toUpperCase(),
+                                       new ConvertToJBColorConstantQuickFix(text.toUpperCase()),
                                        ProblemHighlightType.GENERIC_ERROR_OR_WARNING, isOnTheFly);
             holder.registerProblem(descriptor);
           }
index 294332acec5dca64deabd783363a7c2b532cdc96..7a3be851ce222d5967149a255bccc7688cebaad8 100644 (file)
@@ -24,6 +24,7 @@ import com.intellij.openapi.module.Module;
 import com.intellij.openapi.module.ModuleUtil;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.ui.Messages;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiClass;
 import com.intellij.psi.PsiFile;
 import com.intellij.psi.SmartPsiElementPointer;
@@ -62,9 +63,7 @@ abstract class AbstractRegisterFix implements LocalQuickFix, DescriptorUtil.Patc
   protected static String filterMessage(String message) {
     if (message == null) return null;
     @NonNls String ioExceptionPrefix = "java.io.IOException:";
-    if (message.startsWith(ioExceptionPrefix)) {
-      message = message.substring(ioExceptionPrefix.length());
-    }
+    message = StringUtil.trimStart(message, ioExceptionPrefix);
     return message;
   }
 
index fde03a6cd073a5e48365b229b73bc60cbcb7d884..993ef3671e9533858efc9cfcc03d4c39dc33528b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -241,9 +241,7 @@ public class TestDataGuessByExistingFilesUtil {
     if (result == null) {
       return null;
     }
-    if (result.endsWith("Test")) {
-      result = result.substring(0, result.length() - "Test".length());
-    }
+    result = StringUtil.trimEnd(result, "Test");
     int i = result.lastIndexOf('.');
     if (i >= 0) {
       result = result.substring(i + 1);
index d99e9874419eedd6f7e04aa44012744eb523f4fa..aa6b7ce7b8b07785c805527d7d219d7d2334a094 100644 (file)
 package org.jetbrains.idea.eclipse.util;
 
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.text.StringUtil;
 
 public class PathUtil {
   public static String normalize(String path) {
     path = FileUtil.toSystemIndependentName(path);
-    if (path.endsWith("/")) {
-      path = path.substring(0, path.length() - 1);
-    }
+    path = StringUtil.trimEnd(path, "/");
     while (path.contains("/./")) {
       path = path.replace("/./", "/");
     }
-    if (path.startsWith("./")) {
-      path = path.substring(2);
-    }
-    if (path.endsWith("/.")) {
-      path = path.substring(0, path.length() - 2);
-    }
+    path = StringUtil.trimStart(path, "./");
+    path = StringUtil.trimEnd(path, "/.");
 
-    while ( true ) {
+    while (true) {
       int index = path.indexOf("/..");
-      if ( index < 0 ) break;
-      int slashIndex = path.substring(0,index).lastIndexOf("/");
-      if ( slashIndex < 0 ) break;
-      path = path.substring(0, slashIndex ) + path.substring(index+3);
+      if (index < 0) break;
+      int slashIndex = path.substring(0, index).lastIndexOf("/");
+      if (slashIndex < 0) break;
+      path = path.substring(0, slashIndex) + path.substring(index + 3);
     }
 
     return path;
index 813e591eb6d81171a47a1f5000bca480d1ab08dd..ea124720a840de3c63e8e7e2749f7330f452dc8b 100644 (file)
@@ -16,6 +16,7 @@
 package git4idea.push;
 
 import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.util.text.StringUtil;
 import git4idea.branch.GitBranchUtil;
 import git4idea.repo.GitRepository;
 import org.jetbrains.annotations.NotNull;
@@ -51,9 +52,7 @@ class GitPushSpecParser {
     }
     String source = parts[0].trim();
     String target = parts[1].trim();
-    if (source.startsWith("+")) {
-      source = source.substring(1);
-    }
+    source = StringUtil.trimStart(source, "+");
 
     if (!isStarPositionValid(source, target)) {
       return null;
index 31150e18c4ca87c5fba48d2ac1abcf0a49b12061..7f6ce6685a406d74938a4d78aad417812aa0406f 100644 (file)
@@ -1,5 +1,21 @@
+/*
+ * Copyright 2000-2015 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 git4idea.test;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.vcs.log.Hash;
 import com.intellij.vcs.log.VcsLogObjectsFactory;
@@ -46,9 +62,7 @@ class RefParser {
   @NotNull
   private static String getRefName(@NotNull String longRefPath) {
     String tagPrefix = "tag: ";
-    if (longRefPath.startsWith(tagPrefix)) {
-      longRefPath = longRefPath.substring(tagPrefix.length());
-    }
+    longRefPath = StringUtil.trimStart(longRefPath, tagPrefix);
     return longRefPath;
   }
 
index 7ca2adc881930a8426923285ca94e8387342a17d..224cb0b76ae29e22676225709e41fba01fc65dc5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -17,6 +17,7 @@ package org.jetbrains.plugins.groovy.intentions.conversions.strings;
 
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.CommonClassNames;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiType;
@@ -138,17 +139,13 @@ public class ConvertGStringToStringIntention extends Intention {
       if (text.startsWith("\"\"\"")) {
         text = text.substring(3);
       }
-      else if (text.startsWith("\"")) {
-        text = text.substring(1);
-      }
+      else text = StringUtil.trimStart(text, "\"");
     }
     if (isLast) {
       if (text.endsWith("\"\"\"")) {
         text = text.substring(0, text.length() - 3);
       }
-      else if (text.endsWith("\"")) {
-        text = text.substring(0, text.length() - 1);
-      }
+      else text = StringUtil.trimEnd(text, "\"");
     }
     if (isBeforeInjection) {
       text = text.substring(0, text.length() - 1);
index c56cee1583a903a4617794245adb5ef821d55bdb..2c4b98371cb6aa2af9ec626219126fb8a0a4b088 100644 (file)
@@ -159,9 +159,7 @@ public class MvcRunTargetDialog extends DialogWrapper {
     String text = getSelectedText();
 
     text = text.trim();
-    if (text.startsWith(GRAILS_PREFIX)) {
-      text = text.substring(GRAILS_PREFIX.length());
-    }
+    text = StringUtil.trimStart(text, GRAILS_PREFIX);
 
     return text;
   }
index 0638aa0497e2810864990efc3fd359f66b9310a2..cc0afcc4428f67d959eb55d96c1fd75d5f865353 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
  */
 package com.intellij.lang.properties;
 
+import com.intellij.lang.properties.references.PropertyReference;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.util.PsiTreeUtil;
 import com.intellij.psi.xml.XmlAttributeValue;
 import com.intellij.psi.xml.XmlTag;
 import com.intellij.util.IncorrectOperationException;
 import com.intellij.xml.util.XmlUtil;
-import com.intellij.lang.properties.references.PropertyReference;
-import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 
 import java.util.Arrays;
 import java.util.Set;
index 4544de91a647d7f5764832e54e812fc3dc51b705..5f7f1275bfa65d83f2b3f5c8bc2ca81b224a82ed 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -94,7 +94,7 @@ public class MavenClassSearcher extends MavenSearcher<MavenClassSearchResult> {
       while (matcher.find()) {
         String classFQName = matcher.group(1);
         classFQName = classFQName.replace("/", ".");
-        if (classFQName.startsWith(".")) classFQName = classFQName.substring(1);
+        classFQName = StringUtil.trimStart(classFQName, ".");
 
         String key = makeKey(classFQName, each);
 
index 2ee3ba6b34ae12c7e8321b8daaeee6bd473d1187..a1fb331f3fb1f7c6d05e9eb7378f703b32a0018f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2013 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -462,11 +462,9 @@ public class MavenProject {
 
     Element compilerArguments = compilerConfig.getChild("compilerArguments");
     if (compilerArguments != null) {
-      for (Element e : compilerArguments.getChildren()){
+      for (Element e : compilerArguments.getChildren()) {
         String name = e.getName();
-        if (name.startsWith("-")) {
-          name = name.substring(1);
-        }
+        name = StringUtil.trimStart(name, "-");
 
         if (name.length() > 1 && name.charAt(0) == 'A') {
           res.put(name.substring(1), e.getTextTrim());
index 8a986fc780ca45513860e5274eb788068daa700d..5f24e0a80e2cc6b1faaec6020d05ee60b3a6db76 100644 (file)
@@ -330,7 +330,7 @@ public class MavenUtil {
         if (!Comparing.equal(modulePath.getParent(), parentModulePath)) {
           String relativePath = VfsUtil.getPath(file, parentModulePath, '/');
           if (relativePath != null) {
-            if (relativePath.endsWith("/")) relativePath = relativePath.substring(0, relativePath.length() - 1);
+            relativePath = StringUtil.trimEnd(relativePath, "/");
 
             conditions.setProperty("HAS_RELATIVE_PATH", "true");
             properties.setProperty("PARENT_RELATIVE_PATH", relativePath);
index 4aea5a7795b3ab1727bb6c304850fe608548cdde..c1d4a901c0e58aa4fc165aac3e138ed81f2408e7 100644 (file)
@@ -26,6 +26,7 @@ import com.intellij.openapi.roots.libraries.Library;
 import com.intellij.openapi.roots.libraries.LibraryTable;
 import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
 import com.intellij.openapi.util.io.FileUtil;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.idea.maven.MavenCustomRepositoryHelper;
@@ -1042,7 +1043,7 @@ public class DependenciesImportingTest extends MavenImportingTestCase {
 
   public void testDependencyWithEnvironmentENVProperty() throws Exception {
     String envDir = FileUtil.toSystemIndependentName(System.getenv(getEnvVar()));
-    if (envDir.endsWith("/")) envDir = envDir.substring(0, envDir.length() - 1);
+    envDir = StringUtil.trimEnd(envDir, "/");
 
     importProject("<groupId>test</groupId>" +
                   "<artifactId>project</artifactId>" +
index 7ab109527f724f183dc0db947ea17abadaf6bbc7..41a0386e67268aa90ca7daf84b42aa000a400a0e 100644 (file)
@@ -38,7 +38,10 @@ import com.intellij.openapi.util.Condition;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.psi.*;
+import com.intellij.psi.PsiDirectory;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiFileSystemItem;
+import com.intellij.psi.PsiManager;
 import com.intellij.psi.impl.SyntheticFileSystemItem;
 import com.intellij.psi.search.PsiElementProcessor;
 import com.intellij.refactoring.copy.CopyHandlerDelegateBase;
@@ -60,7 +63,6 @@ import java.awt.*;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.util.*;
-import java.util.HashSet;
 import java.util.List;
 
 /**
@@ -194,9 +196,7 @@ public class PropertiesCopyHandler extends CopyHandlerDelegateBase {
   @NotNull
   private static String getPropertiesFileSuffix(PropertiesFile searchFile, String baseName) {
     String suffix = FileUtil.getNameWithoutExtension(searchFile.getContainingFile().getName());
-    if (suffix.startsWith(baseName)) {
-      suffix = suffix.substring(baseName.length());
-    }
+    suffix = StringUtil.trimStart(suffix, baseName);
     return suffix;
   }
 
index cfa99296a24c8dcc2176d875c4d2ce8743347013..b2247101467bab00dc2e7c14302e4d97ce7701c2 100644 (file)
@@ -1,7 +1,23 @@
+/*
+ * Copyright 2000-2015 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.intellij.tasks.jira.jql.psi.impl;
 
 import com.intellij.extapi.psi.ASTWrapperPsiElement;
 import com.intellij.lang.ASTNode;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiElementVisitor;
 import com.intellij.tasks.jira.jql.psi.JqlElement;
 import com.intellij.tasks.jira.jql.psi.JqlElementVisitor;
@@ -18,9 +34,7 @@ public abstract class JqlElementImpl extends ASTWrapperPsiElement implements Jql
   @Override
   public String toString() {
     String className = getClass().getSimpleName();
-    if (className.endsWith("Impl")) {
-      className = className.substring(0, className.length() - 4);
-    }
+    className = StringUtil.trimEnd(className, "Impl");
     return String.format("%s(%s)", className, getText());
   }
 
index 3b1fe97062924b1fd9b319ed80b827ba5f0b5aeb..eb8a9db31ca158c886ffa635990d3b8bc2180f61 100644 (file)
@@ -1,5 +1,21 @@
+/*
+ * Copyright 2000-2015 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.intellij.tasks.bugzilla;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.tasks.*;
 import icons.TasksIcons;
 import org.jetbrains.annotations.NotNull;
@@ -104,9 +120,7 @@ public class BugzillaTask extends Task {
   @Override
   public String getIssueUrl() {
     String repositoryUrl = myRepository.getUrl();
-    if (repositoryUrl.endsWith("xmlrpc.cgi")) {
-      repositoryUrl = repositoryUrl.substring(0, repositoryUrl.length() - "xmlrpc.cgi".length());
-    }
+    repositoryUrl = StringUtil.trimEnd(repositoryUrl, "xmlrpc.cgi");
     return repositoryUrl + "/show_bug.cgi?id=" + getId();
   }
 
index 832c6cb62ac9df31a8a8409c076c543ceef1c5c5..430a7fc0aefa8b9facaf3f841027155f24d5cf74 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -26,6 +26,7 @@ import com.intellij.openapi.projectRoots.Sdk;
 import com.intellij.openapi.ui.LabeledComponent;
 import com.intellij.openapi.ui.VerticalFlowLayout;
 import com.intellij.openapi.util.Condition;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.platform.DirectoryProjectGenerator;
 import com.intellij.ui.DocumentAdapter;
 import com.intellij.ui.HideableDecorator;
@@ -255,9 +256,7 @@ public class ProjectSpecificSettingsStep extends ProjectSettingsStepBase impleme
       protected void textChanged(DocumentEvent e) {
         if (myProjectGenerator instanceof PythonProjectGenerator) {
           String path = myLocationField.getText().trim();
-          if (path.endsWith(File.separator)) {
-            path = path.substring(0, path.length() - File.separator.length());
-          }
+          path = StringUtil.trimEnd(path, File.separator);
           int ind = path.lastIndexOf(File.separator);
           if (ind != -1) {
             String projectName = path.substring(ind + 1, path.length());
index 19f90a586570f6b320a668d9d424bf40da5338b3..07493ac7a044628673975d56ca4a089e2fdf1a1f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -384,9 +384,7 @@ public class PyRequirement {
             }
             egg = vcsPathMatcher.group(1);
             final String gitSuffix = ".git";
-            if (egg.endsWith(gitSuffix)) {
-              egg = egg.substring(0, egg.length() - gitSuffix.length());
-            }
+            egg = StringUtil.trimEnd(egg, gitSuffix);
           }
         }
       }
index 7020f605e89d131de1b250826cb8c543ede3c5c2..9d39aceee2b47a4f3ac4047fb8b9ab79e06092cd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -22,11 +22,11 @@ import com.intellij.openapi.util.TextRange;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiElement;
+import com.intellij.psi.util.QualifiedName;
 import com.intellij.util.ObjectUtils;
 import com.intellij.util.PathUtil;
 import com.jetbrains.python.psi.PyExpression;
 import com.jetbrains.python.psi.PyStringLiteralExpression;
-import com.intellij.psi.util.QualifiedName;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -315,9 +315,7 @@ public class PythonStringUtil {
 
   public static boolean isRawString(String text) {
     text = text.toLowerCase();
-    if (text.startsWith("u")) {
-      text = text.substring(1);
-    }
+    text = StringUtil.trimStart(text, "u");
     return isStringPrefixedBy(text.toLowerCase(), "r");
   }
 
index f367069b8009977a904ae25ff2f4e732a8a48948..3452a1700a039525574f4ddeb453e0781e8304d1 100644 (file)
@@ -1,9 +1,7 @@
 package com.jetbrains.python.console.pydev;
 
 
-
-import java.util.Iterator;
-import java.util.List;
+import com.intellij.openapi.util.text.StringUtil;
 
 public class AbstractPyCodeCompletion  {
     public static final int LOOKING_FOR_INSTANCE_UNDEFINED=0;
@@ -23,18 +21,18 @@ public class AbstractPyCodeCompletion  {
                                      lookingFor==LOOKING_FOR_INSTANCED_VARIABLE ||
                                      lookingFor==LOOKING_FOR_ASSIGN;
         String trimmed = argsReceived.trim();
-        if(trimmed.length() > 0){
+        if(trimmed.length() > 0) {
             FastStringBuffer buffer = new FastStringBuffer("(", 128);
 
 
             char c = trimmed.charAt(0);
-            if(c == '('){
+            if (c == '(') {
                 trimmed = trimmed.substring(1);
             }
-            if(trimmed.length() > 0){
-                c = trimmed.charAt(trimmed.length()-1);
-                if(c == ')'){
-                    trimmed = trimmed.substring(0, trimmed.length()-1);
+            if (trimmed.length() > 0) {
+                c = trimmed.charAt(trimmed.length() - 1);
+                if (c == ')') {
+                    trimmed = trimmed.substring(0, trimmed.length() - 1);
                 }
             }
             trimmed = trimmed.trim();
@@ -42,30 +40,29 @@ public class AbstractPyCodeCompletion  {
 
             //Now, if it starts with self or cls, we may have to remove it.
             String temp;
-            if(lookingForInstance && trimmed.startsWith("self")){
+            if (lookingForInstance && trimmed.startsWith("self")) {
                 temp = trimmed.substring(4);
-
-            }else if(trimmed.startsWith("cls")){
+            }
+            else if (trimmed.startsWith("cls")) {
                 temp = trimmed.substring(3);
-            }else{
+            }
+            else {
                 temp = trimmed;
             }
             temp = temp.trim();
-            if(temp.length()>0){
+            if (temp.length() > 0) {
                 //but only if it wasn't a self or cls followed by a valid identifier part.
-                if(!Character.isJavaIdentifierPart(temp.charAt(0))){
+                if (!Character.isJavaIdentifierPart(temp.charAt(0))) {
                     trimmed = temp;
                 }
-            }else{
+            }
+            else {
                 trimmed = temp;
             }
 
 
-
             trimmed = trimmed.trim();
-            if(trimmed.startsWith(",")){
-                trimmed = trimmed.substring(1);
-            }
+            trimmed = StringUtil.trimStart(trimmed, ",");
             trimmed = trimmed.trim();
             buffer.append(trimmed);
 
index ef81da6c944f719f5ee19d82d3b336ebe6692ba9..4ffb972655d0397e7c1f7df22c0ea745a49461ab 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -17,6 +17,7 @@ package com.jetbrains.python;
 
 import com.intellij.openapi.application.PathManager;
 import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.util.PathUtil;
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
@@ -43,9 +44,7 @@ public class PythonHelpersLocator {
       return new File(pluginBaseDir, "helpers");
     }
 
-    if (jarPath.endsWith(COMMUNITY_SUFFIX)) {
-      jarPath = jarPath.substring(0, jarPath.length() - COMMUNITY_SUFFIX.length());
-    }
+    jarPath = StringUtil.trimEnd(jarPath, COMMUNITY_SUFFIX);
 
     return new File(jarPath + "-helpers");
   }
index 5be81efe54ce73ad13cd37da5c03a0ae8e5174c2..3b2c98347e2618e8ddbb0c9d21bfea175ce8afcd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -258,9 +258,7 @@ public class BuildoutFacet extends Facet<BuildoutFacetConfiguration> implements
     index++;
     while (index < lines.length && !lines[index].trim().equals("]")) {
       String line = lines[index].trim();
-      if (line.endsWith(",")) {
-        line = line.substring(0, line.length() - 1);
-      }
+      line = StringUtil.trimEnd(line, ",");
       if (line.startsWith("'") && line.endsWith("'")) {
         result.add(StringUtil.unescapeStringCharacters(line.substring(1, line.length() - 1)));
       }
index 3b2096741016ba5e6a72f644c2d2fd791c2105f4..3823f97b63027159f9f1cee3abcd4f2d462c65a8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -18,6 +18,7 @@ package com.jetbrains.python.documentation.docstrings;
 import com.google.common.collect.Lists;
 import com.intellij.codeInsight.completion.CompletionUtil;
 import com.intellij.openapi.util.TextRange;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.util.QualifiedName;
 import com.intellij.util.ArrayUtil;
@@ -78,9 +79,7 @@ public class DocStringTypeReference extends PsiPolyVariantReferenceBase<PsiEleme
 
   @Override
   public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
-    if (newElementName.endsWith(PyNames.DOT_PY)) {
-      newElementName = newElementName.substring(0, newElementName.length() - PyNames.DOT_PY.length());
-    }
+    newElementName = StringUtil.trimEnd(newElementName, PyNames.DOT_PY);
     return super.handleElementRename(newElementName);
   }
 
index cb155cebd8f1445197938b5d07b0e205ccb63cbf..8be519d09224c78bb31c124c9543ea2410aca1a0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -18,6 +18,7 @@ package com.jetbrains.python.psi.impl;
 import com.intellij.extapi.psi.StubBasedPsiElementBase;
 import com.intellij.lang.ASTNode;
 import com.intellij.openapi.util.TextRange;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference;
 import com.intellij.psi.stubs.IStubElementType;
@@ -64,9 +65,7 @@ public class PyBaseElementImpl<T extends StubElement> extends StubBasedPsiElemen
     if (pos >= 0) {
       className = className.substring(pos + 1);
     }
-    if (className.endsWith("Impl")) {
-      className = className.substring(0, className.length() - 4);
-    }
+    className = StringUtil.trimEnd(className, "Impl");
     return className;
   }
 
index 2375662fafc0aaa8aeaaa9098db4dc9cb30baf39..bee30ef84990679aa0820c103601450c597e7a33 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -25,6 +25,7 @@ import com.intellij.openapi.extensions.Extensions;
 import com.intellij.openapi.util.Comparing;
 import com.intellij.openapi.util.Pair;
 import com.intellij.openapi.util.TextRange;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.*;
 import com.intellij.psi.impl.source.resolve.ResolveCache;
 import com.intellij.psi.util.PsiTreeUtil;
@@ -394,9 +395,7 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference
   @Override
   public PsiElement handleElementRename(String newElementName) throws IncorrectOperationException {
     ASTNode nameElement = myElement.getNameElement();
-    if (newElementName.endsWith(PyNames.DOT_PY)) {
-      newElementName = newElementName.substring(0, newElementName.length() - PyNames.DOT_PY.length());
-    }
+    newElementName = StringUtil.trimEnd(newElementName, PyNames.DOT_PY);
     if (nameElement != null && PyNames.isIdentifier(newElementName)) {
       final ASTNode newNameElement = PyUtil.createNewName(myElement, newElementName);
       myElement.getNode().replaceChild(nameElement, newNameElement);
index 5931c7ee2b10f974a6292177e44ab5747fec9814..4b03e43778c02ce555c87c9fd4c2dc69b6837f73 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -44,9 +44,7 @@ public class NameSuggesterUtil {
     if (name.startsWith("get")) {
       name = name.substring(3);
     }
-    else if (name.startsWith("is")) {
-      name = name.substring(2);
-    }
+    else name = StringUtil.trimStart(name, "is");
     while (name.startsWith("_")) {
       name = name.substring(1);
     }
index c7e5c478bd78b4b9cc5b323a5747b3e691bb4d80..200f78a5c35e57c05b6afe93802f76f888b4f53f 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.jetbrains.python.remote;
 
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.remote.RemoteFile;
 import com.intellij.util.PathMappingSettings;
 import com.intellij.util.PathUtil;
@@ -81,9 +82,7 @@ public class PyRemoteSourceItem {
   }
 
   public void setLocalPrefix(String localPrefix) {
-    if (localPrefix.endsWith("/")) {
-      localPrefix = localPrefix.substring(0, localPrefix.length() - 1);
-    }
+    localPrefix = StringUtil.trimEnd(localPrefix, "/");
     myLocalPrefix = localPrefix;
   }
 
index 175567e2e009fb8a21b5f212db210b00b031934f..f79fbb400adbfdf898b015c9530f32e058f69258 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -241,9 +241,7 @@ public abstract class AbstractPythonTestRunConfiguration extends AbstractPythonR
         return getTitle() + " " + myClassName + "." + myMethodName;
       case TEST_SCRIPT:
         String name = new File(getScriptName()).getName();
-        if (name.endsWith(".py")) {
-          name = name.substring(0, name.length() - 3);
-        }
+        name = StringUtil.trimEnd(name, ".py");
         return getPluralTitle() + " in " + name;
       case TEST_FOLDER:
         String folderName = new File(myFolderName).getName();
index d2a17dd553c55a24baaaeff83a99e0cd281346ab..4acfbb48d93665d9db559c64b8620992dd65b65e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
 
 package com.intellij.util.xml.ui;
 
+import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.Factory;
 import com.intellij.openapi.util.text.StringUtil;
-import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.util.xml.DomElement;
 import com.intellij.util.xml.DomFileElement;
 import com.intellij.util.xml.DomUtil;
 import com.intellij.util.xml.GenericDomValue;
 import com.intellij.util.xml.highlighting.DomElementAnnotationsManager;
+import com.intellij.util.xml.reflect.AbstractDomChildrenDescription;
 import com.intellij.util.xml.reflect.DomChildrenDescription;
 import com.intellij.util.xml.reflect.DomCollectionChildDescription;
 import com.intellij.util.xml.reflect.DomFixedChildDescription;
-import com.intellij.util.xml.reflect.AbstractDomChildrenDescription;
 import org.jetbrains.annotations.NotNull;
 
 import javax.swing.*;
@@ -128,7 +128,7 @@ public abstract class BasicDomElementComponent<T extends DomElement> extends Abs
   }
 
   private String convertFieldName(String propertyName, final DomChildrenDescription description) {
-    if (propertyName.startsWith("my")) propertyName = propertyName.substring(2);
+    propertyName = StringUtil.trimStart(propertyName, "my");
 
     String convertedName = description.getDomNameStrategy(getDomElement()).convertName(propertyName);
 
index 4cb738387e6e8da0e09759036a887cca5f3f6a83..e1aa30f4a426c34d64f887158fc7f651008c12bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -22,6 +22,7 @@ import com.intellij.lang.ASTNode;
 import com.intellij.openapi.editor.CaretModel;
 import com.intellij.openapi.fileTypes.FileType;
 import com.intellij.openapi.fileTypes.StdFileTypes;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.filters.*;
 import com.intellij.psi.filters.getters.XmlAttributeValueGetter;
@@ -184,9 +185,7 @@ public class XmlCompletionData extends CompletionData {
           final int i = valueText.indexOf('#');
           if (i > 0) {
             String s = valueText.substring(i + 1);
-            if (s.endsWith(";")) {
-              s = s.substring(0, s.length() - 1);
-            }
+            s = StringUtil.trimEnd(s, ";");
 
             try {
               final int unicodeChar = Integer.valueOf(s).intValue();
index f224a68955fc5ea5c16c6aaba350593608fcf1ca..cd97e6ea7f05f82e0250f8bcba484808a68e6c5a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 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.
@@ -508,9 +508,7 @@ public class XmlDocumentationProvider implements DocumentationProvider {
           withCData = true;
         }
 
-        if (result.endsWith(CDATA_SUFFIX)) {
-          result = result.substring(0, result.length() - CDATA_SUFFIX.length());
-        }
+        result = StringUtil.trimEnd(result, CDATA_SUFFIX);
         result = result.trim();
 
         if (withCData) {