package org.xpect.text; import java.util.List; import org.eclipse.xtext.util.Strings; import com.google.common.base.Function; import com.google.common.collect.Lists; public class WhitespaceTokenizer implements Function<String, List<String>> { public List<String> apply(String input) { List<String> result = Lists.newArrayList(); if (!Strings.isEmpty(input)) { int lastOffset = 0; boolean lastWs = Character.isWhitespace(input.charAt(0)); for (int offset = 1; offset < input.length(); offset++) { char c = input.charAt(offset); boolean ws = Character.isWhitespace(c); if (ws != lastWs) { String token = input.substring(lastOffset, offset); result.add(token); lastOffset = offset; lastWs = ws; } } String token = input.substring(lastOffset, input.length()); result.add(token); } return result; } }