diff options
author | Laria Carolin Chabowski <laria@laria.me> | 2018-08-02 17:05:57 +0200 |
---|---|---|
committer | Laria Carolin Chabowski <laria@laria.me> | 2018-08-02 17:05:57 +0200 |
commit | b8ee85038e1d42503a4359d6476595181b7afe38 (patch) | |
tree | d4846f481eafb20febc2ed594d9988ba7b748cbe /src/me/laria/code/idea_caseconv/WordSplitConverter.java | |
download | idea_caseconv-b8ee85038e1d42503a4359d6476595181b7afe38.tar.gz idea_caseconv-b8ee85038e1d42503a4359d6476595181b7afe38.tar.bz2 idea_caseconv-b8ee85038e1d42503a4359d6476595181b7afe38.zip |
Initial commit
Diffstat (limited to 'src/me/laria/code/idea_caseconv/WordSplitConverter.java')
-rw-r--r-- | src/me/laria/code/idea_caseconv/WordSplitConverter.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/me/laria/code/idea_caseconv/WordSplitConverter.java b/src/me/laria/code/idea_caseconv/WordSplitConverter.java new file mode 100644 index 0000000..9b87a25 --- /dev/null +++ b/src/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); + } +} |