Combine multiple docstring formatting helper scripts into one
[idea/community.git] / python / src / com / jetbrains / python / documentation / docstrings / DocStringFormat.java
1 /*
2  * Copyright 2000-2014 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.jetbrains.python.documentation.docstrings;
17
18 import com.intellij.psi.PsiElement;
19 import com.intellij.util.ObjectUtils;
20 import com.intellij.util.containers.ContainerUtil;
21 import org.jetbrains.annotations.NotNull;
22 import org.jetbrains.annotations.Nullable;
23
24 import java.util.Collections;
25 import java.util.List;
26
27 /**
28  * @author yole
29  */
30 public enum DocStringFormat {
31   /**
32    * @see DocStringUtil#ensureNotPlainDocstringFormat(PsiElement)
33    */
34   PLAIN("Plain", ""),
35   EPYTEXT("Epytext", "epytext"),
36   REST("reStructuredText", "rest"),
37   NUMPY("NumPy", "numpy"),
38   GOOGLE("Google", "google");
39
40   public static final List<String> ALL_NAMES = getAllNames();
41
42   @NotNull
43   private static List<String> getAllNames() {
44     return Collections.unmodifiableList(ContainerUtil.map(values(), format -> format.getName()));
45   }
46
47   public static final List<String> ALL_NAMES_BUT_PLAIN = getAllNamesButPlain();
48
49   @NotNull
50   private static List<String> getAllNamesButPlain() {
51     return Collections.unmodifiableList(ContainerUtil.mapNotNull(values(), format -> format == PLAIN ? null : format.getName()));
52   }
53
54   @Nullable
55   public static DocStringFormat fromName(@NotNull String name) {
56     for (DocStringFormat format : values()) {
57       if (format.getName().equalsIgnoreCase(name)) {
58         return format;
59       }
60     }
61     return null;
62   }
63
64   @NotNull
65   public static DocStringFormat fromNameOrPlain(@NotNull String name) {
66     return ObjectUtils.notNull(fromName(name), PLAIN);
67   }
68
69   private final String myName;
70   private final String myFormatterCommand;
71
72   DocStringFormat(@NotNull String name, @NotNull String formatterCommand) {
73     myName = name;
74     myFormatterCommand = formatterCommand;
75   }
76
77   @NotNull
78   public String getName() {
79     return myName;
80   }
81
82   @NotNull
83   public String getFormatterCommand() {
84     return myFormatterCommand;
85   }
86 }