Switched to generic properties parsing on more renderers

This commit is contained in:
Erik C. Thauvin 2023-03-25 20:49:30 -07:00
parent c1b0e7fcf5
commit 4bba966770
5 changed files with 16 additions and 63 deletions

View file

@ -20,10 +20,6 @@ package rife.render;
import rife.template.Template; import rife.template.Template;
import rife.template.ValueRenderer; import rife.template.ValueRenderer;
import java.io.IOException;
import java.io.StringReader;
import java.util.Properties;
/** /**
* <p>Abbreviate a template value with ellipses.</p> * <p>Abbreviate a template value with ellipses.</p>
* *
@ -48,14 +44,9 @@ public class Abbreviate implements ValueRenderer {
var max = -1; var max = -1;
var defaultValue = template.getDefaultValue(valueId); var defaultValue = template.getDefaultValue(valueId);
if (defaultValue != null) { if (defaultValue != null) {
var properties = new Properties(); var properties = RenderUtils.parsePropertiesString(defaultValue);
try { mark = properties.getProperty("mark", mark);
properties.load(new StringReader(defaultValue)); max = Integer.parseInt(properties.getProperty("max", String.valueOf(max)));
mark = properties.getProperty("mark", mark);
max = Integer.parseInt(properties.getProperty("max", String.valueOf(max)));
} catch (IOException | NumberFormatException ignore) {
// do nothing
}
} }
return template.getEncoder().encode( return template.getEncoder().encode(

View file

@ -20,11 +20,8 @@ package rife.render;
import rife.template.Template; import rife.template.Template;
import rife.template.ValueRenderer; import rife.template.ValueRenderer;
import java.io.IOException;
import java.io.StringReader;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.Properties;
/** /**
* <p>Return the current date and time in ISO 8601 format.</p> * <p>Return the current date and time in ISO 8601 format.</p>
@ -48,16 +45,11 @@ public class DateTimeIso implements ValueRenderer {
public String render(Template template, String valueId, String differentiator) { public String render(Template template, String valueId, String differentiator) {
var defaultValue = template.getDefaultValue(valueId); var defaultValue = template.getDefaultValue(valueId);
if (defaultValue != null) { if (defaultValue != null) {
var properties = new Properties(); var properties = RenderUtils.parsePropertiesString(template.getDefaultValue(valueId));
try { var tz = "tz";
var tz = "tz"; if (properties.containsKey(tz)) {
properties.load(new StringReader(defaultValue)); return ZonedDateTime.now().format(
if (properties.containsKey(tz)) { RenderUtils.ISO_8601_FORMATTER.withZone(ZoneId.of(properties.getProperty(tz))));
return ZonedDateTime.now().format(
RenderUtils.ISO_8601_FORMATTER.withZone(ZoneId.of(properties.getProperty(tz))));
}
} catch (IOException ignore) {
// do nothing
} }
} }

View file

@ -20,10 +20,6 @@ package rife.render;
import rife.template.Template; import rife.template.Template;
import rife.template.ValueRenderer; import rife.template.ValueRenderer;
import java.io.IOException;
import java.io.StringReader;
import java.util.Properties;
/** /**
* <p>Masks characters of a template value.</p> * <p>Masks characters of a template value.</p>
* *
@ -48,16 +44,15 @@ public class Mask implements ValueRenderer {
var unmasked = 0; var unmasked = 0;
var fromStart = false; var fromStart = false;
var defaultValue = template.getDefaultValue(valueId); var defaultValue = template.getDefaultValue(valueId);
if (defaultValue != null) { if (defaultValue != null && !defaultValue.isBlank()) {
var properties = new Properties(); var properties = RenderUtils.parsePropertiesString(defaultValue);
mask = properties.getProperty("mask", mask);
try { try {
properties.load(new StringReader(defaultValue));
mask = properties.getProperty("mask", mask);
unmasked = Integer.parseInt(properties.getProperty("unmasked", "0")); unmasked = Integer.parseInt(properties.getProperty("unmasked", "0"));
fromStart = "true".equalsIgnoreCase(properties.getProperty("fromStart", "false")); } catch (NumberFormatException ignore) {
} catch (IOException | NumberFormatException ignore) {
// do nothing // do nothing
} }
fromStart = "true".equalsIgnoreCase(properties.getProperty("fromStart", "false"));
} }
return template.getEncoder().encode( return template.getEncoder().encode(
RenderUtils.mask(template.getValueOrAttribute(differentiator), mask, unmasked, fromStart)); RenderUtils.mask(template.getValueOrAttribute(differentiator), mask, unmasked, fromStart));

View file

@ -20,10 +20,6 @@ package rife.render;
import rife.template.Template; import rife.template.Template;
import rife.template.ValueRenderer; import rife.template.ValueRenderer;
import java.io.IOException;
import java.io.StringReader;
import java.util.Properties;
/** /**
* <p>Generates an SVG QR Code for a template value using <a href="https://goqr.me/">goQR.me</a>.</p> * <p>Generates an SVG QR Code for a template value using <a href="https://goqr.me/">goQR.me</a>.</p>
* *
@ -44,17 +40,8 @@ public class QrCode implements ValueRenderer {
*/ */
@Override @Override
public String render(Template template, String valueId, String differentiator) { public String render(Template template, String valueId, String differentiator) {
var size = "150x150"; var properties = RenderUtils.parsePropertiesString(template.getDefaultValue(valueId));
var defaultValue = template.getDefaultValue(valueId); var size = properties.getProperty("size", "150x150");
if (defaultValue != null) {
var properties = new Properties();
try {
properties.load(new StringReader(defaultValue));
size = properties.getProperty("size", size);
} catch (IOException ignore) {
// do nothing
}
}
return RenderUtils.qrCode(template.getValueOrAttribute(differentiator), size); return RenderUtils.qrCode(template.getValueOrAttribute(differentiator), size);
} }
} }

View file

@ -20,10 +20,7 @@ package rife.render;
import rife.template.Template; import rife.template.Template;
import rife.template.ValueRenderer; import rife.template.ValueRenderer;
import java.io.IOException;
import java.io.StringReader;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.util.Properties;
/** /**
* Renders the server uptime. * Renders the server uptime.
@ -45,16 +42,7 @@ public class Uptime implements ValueRenderer {
*/ */
@Override @Override
public String render(Template template, String valueId, String differentiator) { public String render(Template template, String valueId, String differentiator) {
var properties = new Properties(); var properties = RenderUtils.parsePropertiesString(template.getDefaultValue(valueId));
var defaultValue = template.getDefaultValue(valueId);
if (defaultValue != null) {
try {
properties.load(new StringReader(defaultValue));
} catch (IOException ignore) {
// ignore
}
}
String uptime; String uptime;
if (template.hasAttribute(Uptime.class.getName())) { if (template.hasAttribute(Uptime.class.getName())) {
uptime = RenderUtils.uptime((long) template.getAttribute(Uptime.class.getName()), properties); uptime = RenderUtils.uptime((long) template.getAttribute(Uptime.class.getName()), properties);