diff --git a/src/main/java/me/laria/code/idea_caseconv/CamelCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/CamelCaseAction.java index 93ca85b..3a072ae 100644 --- a/src/main/java/me/laria/code/idea_caseconv/CamelCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/CamelCaseAction.java @@ -11,8 +11,12 @@ public static String ucfirst(String s) { return s.substring(0, 1).toUpperCase().concat(s.substring(1)); } + public static String replaceString(String s) { + return WordSplitConverter.convert(s, "", (i, part) -> Optional.of(i == 0 ? part.toLowerCase() : ucfirst(part))); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, "", (i, part) -> Optional.of(i == 0 ? part.toLowerCase() : ucfirst(part))); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/ConversionType.java b/src/main/java/me/laria/code/idea_caseconv/ConversionType.java new file mode 100644 index 0000000..e230712 --- /dev/null +++ b/src/main/java/me/laria/code/idea_caseconv/ConversionType.java @@ -0,0 +1,44 @@ +package me.laria.code.idea_caseconv; + +import java.util.HashMap; +import java.util.Map; + +public enum ConversionType { + CAMEL(0), + DASH(1), + DOT(2), + FLIP(3), + LOWER(4), + PASCAL(5), + SCREAMING_SNAKE(6), + SENTENCE(7), + SEPARATE_WORDS(8), + SNAKE(9), + TITLE(10), + UPPER(11), + ; + + + private static final Map BY_VALUE = new HashMap<>(); + + static { + for (ConversionType e : values()) { + BY_VALUE.put(e.value, e); + } + } + + private final int value; + + ConversionType(int value) { + this.value = value; + } + + public static ConversionType fromValue(int value) { + return BY_VALUE.get(value); + } + + private int toValue() { + return value; + } +} + diff --git a/src/main/java/me/laria/code/idea_caseconv/CycleAllCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/CycleAllCaseAction.java new file mode 100644 index 0000000..e2eebc9 --- /dev/null +++ b/src/main/java/me/laria/code/idea_caseconv/CycleAllCaseAction.java @@ -0,0 +1,48 @@ +package me.laria.code.idea_caseconv; + +public class CycleAllCaseAction extends SelectionReplacerAction { + + private static int counter = 0; + + private static String replaceString(final String s) { + switch (ConversionType.fromValue(counter)) { + + case CAMEL: + return CamelCaseAction.replaceString(s); + case DASH: + return DashCaseAction.replaceString(s); + case DOT: + return DotCaseAction.replaceString(s); + case FLIP: + return FlipCaseAction.replaceString(s); + case LOWER: + return LowerCaseAction.replaceString(s); + case PASCAL: + return PascalCaseAction.replaceString(s); + case SCREAMING_SNAKE: + return ScreamingSnakeCaseAction.replaceString(s); + case SENTENCE: + return SentenceCaseAction.replaceString(s); + case SEPARATE_WORDS: + return SeparateWordsAction.replaceString(s); + case SNAKE: + return SnakeCaseAction.replaceString(s); + case TITLE: + return TitleCaseAction.replaceString(s); + case UPPER: + return UpperCaseAction.replaceString(s); + } + + return null; + } + + private static void updateCounter() { + counter = (counter + 1) % ConversionType.values().length; + } + + @Override + protected String replace(String s) { + updateCounter(); + return replaceString(s); + } +} diff --git a/src/main/java/me/laria/code/idea_caseconv/DashCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/DashCaseAction.java index 5e030ab..f5ebd6d 100644 --- a/src/main/java/me/laria/code/idea_caseconv/DashCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/DashCaseAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class DashCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, "-", (i, s1) -> Optional.of(s1.toLowerCase())); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, "-", (i, s1) -> Optional.of(s1.toLowerCase())); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/DotCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/DotCaseAction.java index e49c42b..c9aaab7 100644 --- a/src/main/java/me/laria/code/idea_caseconv/DotCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/DotCaseAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class DotCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, ".", (i, part) -> Optional.of(part.toLowerCase())); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, ".", (i, part) -> Optional.of(part.toLowerCase())); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/FlipCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/FlipCaseAction.java index 22df45a..24a6d3f 100644 --- a/src/main/java/me/laria/code/idea_caseconv/FlipCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/FlipCaseAction.java @@ -1,12 +1,17 @@ package me.laria.code.idea_caseconv; public class FlipCaseAction extends SelectionReplacerAction { - @Override - protected String replace(String s) { + + public static String replaceString(String s) { StringBuilder builder = new StringBuilder(); s.codePoints().forEach(c -> builder.appendCodePoint(Character.isLowerCase(c) ? Character.toUpperCase(c) : Character.toLowerCase(c))); return builder.toString(); } + + @Override + protected String replace(String s) { + return replaceString(s); + } } diff --git a/src/main/java/me/laria/code/idea_caseconv/LowerCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/LowerCaseAction.java index d32507e..e90715a 100644 --- a/src/main/java/me/laria/code/idea_caseconv/LowerCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/LowerCaseAction.java @@ -1,8 +1,13 @@ package me.laria.code.idea_caseconv; public class LowerCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return s.toLowerCase(); + } + @Override protected String replace(String s) { - return s.toLowerCase(); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/PascalCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/PascalCaseAction.java index fb13265..147bb51 100644 --- a/src/main/java/me/laria/code/idea_caseconv/PascalCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/PascalCaseAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class PascalCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, "", (i, part) -> Optional.of(CamelCaseAction.ucfirst(part))); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, "", (i, part) -> Optional.of(CamelCaseAction.ucfirst(part))); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/ScreamingSnakeCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/ScreamingSnakeCaseAction.java index c77bbfe..a26be65 100644 --- a/src/main/java/me/laria/code/idea_caseconv/ScreamingSnakeCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/ScreamingSnakeCaseAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class ScreamingSnakeCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, "_", (i, part) -> Optional.of(part.toUpperCase())); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, "_", (i, part) -> Optional.of(part.toUpperCase())); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/SentenceCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/SentenceCaseAction.java index 8dace53..bf53312 100644 --- a/src/main/java/me/laria/code/idea_caseconv/SentenceCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/SentenceCaseAction.java @@ -3,8 +3,8 @@ import java.util.Optional; public class SentenceCaseAction extends SelectionReplacerAction { - @Override - protected String replace(String s) { + + public static String replaceString(String s) { return WordSplitConverter.convert( s, " ", @@ -14,4 +14,9 @@ protected String replace(String s) { ) ); } + + @Override + protected String replace(String s) { + return replaceString(s); + } } diff --git a/src/main/java/me/laria/code/idea_caseconv/SeparateWordsAction.java b/src/main/java/me/laria/code/idea_caseconv/SeparateWordsAction.java index 6f3f4fe..e086e66 100644 --- a/src/main/java/me/laria/code/idea_caseconv/SeparateWordsAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/SeparateWordsAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class SeparateWordsAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, " ", (i, part) -> Optional.of(part.toLowerCase())); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, " ", (i, part) -> Optional.of(part.toLowerCase())); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/SnakeCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/SnakeCaseAction.java index 9853676..3eb1f53 100644 --- a/src/main/java/me/laria/code/idea_caseconv/SnakeCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/SnakeCaseAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class SnakeCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, "_", (i, part) -> Optional.of(part.toLowerCase())); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, "_", (i, part) -> Optional.of(part.toLowerCase())); + return replaceString(s); } } \ No newline at end of file diff --git a/src/main/java/me/laria/code/idea_caseconv/TitleCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/TitleCaseAction.java index 70024c3..b2b695f 100644 --- a/src/main/java/me/laria/code/idea_caseconv/TitleCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/TitleCaseAction.java @@ -3,8 +3,13 @@ import java.util.Optional; public class TitleCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return WordSplitConverter.convert(s, " ", (i, part) -> Optional.of(CamelCaseAction.ucfirst(part))); + } + @Override protected String replace(String s) { - return WordSplitConverter.convert(s, " ", (i, part) -> Optional.of(CamelCaseAction.ucfirst(part))); + return replaceString(s); } } diff --git a/src/main/java/me/laria/code/idea_caseconv/UpperCaseAction.java b/src/main/java/me/laria/code/idea_caseconv/UpperCaseAction.java index 8478f4f..1cc37e2 100644 --- a/src/main/java/me/laria/code/idea_caseconv/UpperCaseAction.java +++ b/src/main/java/me/laria/code/idea_caseconv/UpperCaseAction.java @@ -1,8 +1,13 @@ package me.laria.code.idea_caseconv; public class UpperCaseAction extends SelectionReplacerAction { + + public static String replaceString(String s) { + return s.toUpperCase(); + } + @Override protected String replace(String s) { - return s.toUpperCase(); + return replaceString(s); } } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 5ce044e..5dd5d9c 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -116,6 +116,10 @@ + + +