From f2320ff2af3606e9e75e6dde6106e222f065f523 Mon Sep 17 00:00:00 2001 From: Ruslan Penkrat Date: Tue, 14 Sep 2021 23:47:04 +0300 Subject: [PATCH] #2 trim strings --- stbf-demo/src/main/resources/flow.xml | 3 ++- .../stbf/templates/utils/StringUtils.java | 14 ++++++++++++++ .../xml/FlowScreenResolverDelegate.java | 16 ++++++++++++---- .../penkrat/stbf/templates/xml/ScreenItem.java | 3 +++ 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/stbf-demo/src/main/resources/flow.xml b/stbf-demo/src/main/resources/flow.xml index f62d0e0..894f0c6 100644 --- a/stbf-demo/src/main/resources/flow.xml +++ b/stbf-demo/src/main/resources/flow.xml @@ -68,7 +68,8 @@ - Inline Screen #2 + Inline Screen #2 + ================ diff --git a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/utils/StringUtils.java b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/utils/StringUtils.java index e138078..618ba8d 100644 --- a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/utils/StringUtils.java +++ b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/utils/StringUtils.java @@ -2,9 +2,14 @@ package ru.penkrat.stbf.templates.utils; import lombok.experimental.UtilityClass; +import java.util.stream.Collectors; +import java.util.stream.Stream; + @UtilityClass public class StringUtils { + public static final String NL_DELIMITER = "\n"; + public boolean isEmpty(String string) { return string == null || string.isEmpty(); } @@ -12,4 +17,13 @@ public class StringUtils { public boolean isNotEmpty(String string) { return !isEmpty(string); } + + public String ltrim(String text) { + if (text == null) { + return null; + } + return Stream.of(text.split(NL_DELIMITER)) + .map(string -> string.trim()) + .collect(Collectors.joining(NL_DELIMITER)); + } } diff --git a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java index 5730d1a..bb04053 100644 --- a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java +++ b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/FlowScreenResolverDelegate.java @@ -44,27 +44,35 @@ class FlowScreenResolverDelegate implements ScreenResolver { public Screen getScreen(String name) { ScreenItem item = resolver.get(name); + String text = item.getText(); + if (!item.isPreserve()) { + text = StringUtils.ltrim(text); + } if (StringUtils.isNotEmpty(item.getMediaRef())) { final Media media = mediaResolver.getMedia(item.getMediaRef()); - final MediaScreen mediaScreen = new MediaScreen(item.getText(), media, buildKeyboard(item.getKeyboard(), null)); + final MediaScreen mediaScreen = new MediaScreen(text, media, buildKeyboard(item.getKeyboard(), null)); return new RamFileIdStorageMediaScreen(mediaScreen); } - return new TextScreen(item.getText(), buildKeyboard(item.getKeyboard(), null)); + return new TextScreen(text, buildKeyboard(item.getKeyboard(), null)); } @Override public Screen getScreen(String name, Object context) { ScreenItem item = resolver.get(name); + String text = item.getText(); + if (!item.isPreserve()) { + text = StringUtils.ltrim(text); + } if (StringUtils.isNotEmpty(item.getMediaRef())) { final Media media = mediaResolver.getMedia(item.getMediaRef()); - final MediaScreen mediaScreen = new MediaScreen(templateRenderer.render(item.getText(), context), media, + final MediaScreen mediaScreen = new MediaScreen(templateRenderer.render(text, context), media, resolveKeyboard(item.getKeyboard(), context)); return new RamFileIdStorageMediaScreen(mediaScreen); } - return new TextScreen(templateRenderer.render(item.getText(), context), + return new TextScreen(templateRenderer.render(text, context), resolveKeyboard(item.getKeyboard(), context)); } diff --git a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/ScreenItem.java b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/ScreenItem.java index 23840af..dd69a1c 100644 --- a/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/ScreenItem.java +++ b/stbf-templates/src/main/java/ru/penkrat/stbf/templates/xml/ScreenItem.java @@ -15,4 +15,7 @@ class ScreenItem extends NamedItem { private KeyboardWrapper keyboard = new KeyboardWrapper(); + @JacksonXmlProperty(isAttribute = true) + private boolean preserve; + }