mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add camelCase and spaceSeparated live template macros (IDEA-145479, IDEA-135255)
This commit is contained in:
+15
-4
@@ -39,17 +39,28 @@ class NamingConventionMacrosTest extends TestCase {
|
||||
assert "_foo_bar_" == snakeCase("-FOO-BAR-")
|
||||
assert "a_b_c_d_e_f_g" == snakeCase("a-b.c/d|e*f+g")
|
||||
assert "a_b" == snakeCase("a--b")
|
||||
assert "foo_bar" == snakeCase("FOO BAR")
|
||||
}
|
||||
|
||||
public void "test lowercase and dash"() {
|
||||
assert "foo-bar" == new SplitWordsMacro.LowercaseAndDash().convertString("FOO_BAR")
|
||||
}
|
||||
|
||||
public void "test dashes to camel case"() {
|
||||
assert "fooBar" == new ConvertToCamelCaseMacro.ReplaceDashesToCamelCaseMacro().convertString("foo-bar")?.toString()
|
||||
assert "fooBar" == new ConvertToCamelCaseMacro.ReplaceDashesToCamelCaseMacro().convertString("FOO-BAR")?.toString()
|
||||
public void "test to camel case"() {
|
||||
assert "fooBar" == new ConvertToCamelCaseMacro().convertString("foo-bar")?.toString()
|
||||
assert "fooBar" == new ConvertToCamelCaseMacro().convertString("FOO-BAR")?.toString()
|
||||
assert "fooBar" == new ConvertToCamelCaseMacro().convertString("foo bar")?.toString()
|
||||
}
|
||||
|
||||
|
||||
public void "test space separated"() {
|
||||
assert "foo Bar" == new SplitWordsMacro.SpaceSeparated().convertString("fooBar")
|
||||
assert "foo bar" == new SplitWordsMacro.SpaceSeparated().convertString("foo-bar")
|
||||
}
|
||||
|
||||
public void "test underscoresToCamelCase"() {
|
||||
assert "fooBar-goo" == new ConvertToCamelCaseMacro.ReplaceUnderscoresToCamelCaseMacro().convertString("foo_bar-goo")?.toString()
|
||||
}
|
||||
|
||||
private static def snakeCase(String s) {
|
||||
return new SplitWordsMacro.SnakeCaseMacro().convertString(s)
|
||||
}
|
||||
|
||||
+25
-16
@@ -22,21 +22,21 @@ import com.intellij.codeInsight.template.ExpressionContext;
|
||||
import com.intellij.codeInsight.template.Result;
|
||||
import com.intellij.codeInsight.template.TextResult;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.codeStyle.NameUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Konstantin Bulenkov
|
||||
*/
|
||||
public abstract class ConvertToCamelCaseMacro extends MacroBase {
|
||||
public class ConvertToCamelCaseMacro extends MacroBase {
|
||||
|
||||
private final String mySeparator;
|
||||
public ConvertToCamelCaseMacro() {
|
||||
super("camelCase", "camelCase(String)");
|
||||
}
|
||||
|
||||
private ConvertToCamelCaseMacro(String name, String description, String separator) {
|
||||
private ConvertToCamelCaseMacro(String name, String description) {
|
||||
super(name, description);
|
||||
mySeparator = separator;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -53,26 +53,35 @@ public abstract class ConvertToCamelCaseMacro extends MacroBase {
|
||||
@Nullable
|
||||
@VisibleForTesting
|
||||
public Result convertString(String text) {
|
||||
final List<String> strings = StringUtil.split(text, mySeparator);
|
||||
if (strings.size() > 0) {
|
||||
final String[] strings = splitWords(text);
|
||||
if (strings.length > 0) {
|
||||
final StringBuilder buf = new StringBuilder();
|
||||
buf.append(strings.get(0).toLowerCase());
|
||||
for (int i = 1; i < strings.size(); i++) {
|
||||
buf.append(StringUtil.capitalize(strings.get(i).toLowerCase()));
|
||||
buf.append(strings[0].toLowerCase());
|
||||
for (int i = 1; i < strings.length; i++) {
|
||||
String string = strings[i];
|
||||
if (Character.isLetterOrDigit(string.charAt(0))) {
|
||||
buf.append(StringUtil.capitalize(string.toLowerCase()));
|
||||
}
|
||||
}
|
||||
return new TextResult(buf.toString());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected String[] splitWords(String text) {
|
||||
return NameUtil.nameToWords(text);
|
||||
}
|
||||
|
||||
public static class ReplaceUnderscoresToCamelCaseMacro extends ConvertToCamelCaseMacro {
|
||||
public ReplaceUnderscoresToCamelCaseMacro() {
|
||||
super("underscoresToCamelCase", CodeInsightBundle.message("macro.undescoresToCamelCase.string"), "_");
|
||||
super("underscoresToCamelCase", CodeInsightBundle.message("macro.undescoresToCamelCase.string"));
|
||||
}
|
||||
}
|
||||
public static class ReplaceDashesToCamelCaseMacro extends ConvertToCamelCaseMacro {
|
||||
public ReplaceDashesToCamelCaseMacro() {
|
||||
super("dashesToCamelCase", "dashesToCamelCase(String)", "-");
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected String[] splitWords(String text) {
|
||||
return text.split("_");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,4 +105,17 @@ public abstract class SplitWordsMacro extends MacroBase {
|
||||
return word.toLowerCase();
|
||||
}
|
||||
}
|
||||
|
||||
public static class SpaceSeparated extends SplitWordsMacro {
|
||||
public SpaceSeparated() {
|
||||
super("spaceSeparated", "spaceSeparated(String)", ' ');
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
protected String convertCase(@NotNull String word) {
|
||||
//noinspection StringToUpperCaseOrToLowerCaseWithoutLocale
|
||||
return word;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -471,10 +471,11 @@
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.FileNameMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.FileNameWithoutExtensionMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.ConvertToCamelCaseMacro$ReplaceUnderscoresToCamelCaseMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.ConvertToCamelCaseMacro$ReplaceDashesToCamelCaseMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.ConvertToCamelCaseMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.SplitWordsMacro$CapitalizeAndUnderscoreMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.SplitWordsMacro$SnakeCaseMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.SplitWordsMacro$LowercaseAndDash"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.SplitWordsMacro$SpaceSeparated"/>
|
||||
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.CompleteMacro"/>
|
||||
<liveTemplateMacro implementation="com.intellij.codeInsight.template.macro.CompleteSmartMacro"/>
|
||||
|
||||
Reference in New Issue
Block a user