summaryrefslogtreecommitdiff
path: root/support/texplate/source/main/java/org/islandoftex/texplate/model/handlers/CSVListHandler.java
diff options
context:
space:
mode:
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.java30
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());
+ }
+
+}