diff options
author | Laria Carolin Chabowski <laria@laria.me> | 2019-06-25 23:05:59 +0200 |
---|---|---|
committer | Laria Carolin Chabowski <laria@laria.me> | 2019-06-27 07:55:09 +0200 |
commit | 904b2cbff1b49ba39f89be4e42a26d1f4b26c66a (patch) | |
tree | 4ce7ac8b9c6dcb018e737de822eddc6470f97e31 /src/main/java/me/laria/code/idea_caseconv/WordSplitConverter.java | |
parent | 88f205aab9167aeae720b657986bae5fe8b593e6 (diff) | |
download | idea_caseconv-904b2cbff1b49ba39f89be4e42a26d1f4b26c66a.tar.gz idea_caseconv-904b2cbff1b49ba39f89be4e42a26d1f4b26c66a.tar.bz2 idea_caseconv-904b2cbff1b49ba39f89be4e42a26d1f4b26c66a.zip |
Transform to gradle project
Diffstat (limited to 'src/main/java/me/laria/code/idea_caseconv/WordSplitConverter.java')
-rw-r--r-- | src/main/java/me/laria/code/idea_caseconv/WordSplitConverter.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main/java/me/laria/code/idea_caseconv/WordSplitConverter.java b/src/main/java/me/laria/code/idea_caseconv/WordSplitConverter.java new file mode 100644 index 0000000..9b87a25 --- /dev/null +++ b/src/main/java/me/laria/code/idea_caseconv/WordSplitConverter.java @@ -0,0 +1,36 @@ +package me.laria.code.idea_caseconv; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +class WordSplitConverter { + private static List<String> split(String s) { + Pattern decamelize = Pattern.compile("(?<![A-Z])[A-Z]"); + s = decamelize.matcher(s).replaceAll(" $0"); + + String[] all_parts = s.split("[\\s_-]"); + ArrayList<String> parts = new ArrayList<>(); + for (String p : all_parts) { + p = p.trim(); + if (!p.equals("")) { + parts.add(p.toLowerCase()); + } + } + + return parts; + } + + public static String convert(String in, String glue, WordTransformer transform) { + List<String> partsIn = split(in); + ArrayList<String> partsOut = new ArrayList<>(); + + int i = 0; + for (String part : partsIn) { + transform.transform(i, part).ifPresent(partsOut::add); + i++; + } + + return String.join(glue, partsOut); + } +} |