diff options
Diffstat (limited to 'support/texplate/source/main/java/org/islandoftex/texplate/model/handlers/CSVListHandler.java')
-rw-r--r-- | support/texplate/source/main/java/org/islandoftex/texplate/model/handlers/CSVListHandler.java | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/support/texplate/source/main/java/org/islandoftex/texplate/model/handlers/CSVListHandler.java b/support/texplate/source/main/java/org/islandoftex/texplate/model/handlers/CSVListHandler.java new file mode 100644 index 0000000000..4b3d0c2e69 --- /dev/null +++ b/support/texplate/source/main/java/org/islandoftex/texplate/model/handlers/CSVListHandler.java @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: BSD-3-Clause +package org.islandoftex.texplate.model.handlers; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * Implements a CSV list handler. + * + * @version 1.0 + * @since 1.0 + */ +public class CSVListHandler implements Handler { + + /** + * Applies the conversion to the string. + * + * @param string The string. + * @return A list. + */ + @Override + public Object apply(String string) { + return Arrays.stream(string.split(",(?=(?:[^\"]*\"" + + "[^\"]*\")*[^\"]*$)")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .collect(Collectors.toList()); + } + +} |