From 78fca0e1c3a0fb266131d1560fdc17c9f7b7526b Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 14 Mar 2023 00:56:18 -0700 Subject: [PATCH] Added EncodeBase64 and EncodeUnicode --- .idea/misc.xml | 2 + README.md | 6 +++ .../main/java/rife2/render/EncodeBase64.java | 52 +++++++++++++++++++ .../main/java/rife2/render/EncodeUnicode.java | 50 ++++++++++++++++++ 4 files changed, 110 insertions(+) create mode 100644 lib/src/main/java/rife2/render/EncodeBase64.java create mode 100644 lib/src/main/java/rife2/render/EncodeUnicode.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 6de4d32..1eb8d79 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -15,6 +15,8 @@ + + diff --git a/README.md b/README.md index 74209c7..1948916 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,18 @@ This project provides a set of template renderers. - **rife.render.Capitalize** - Capitalizes a template value. +- **rife.render.EncodeBase64** + - Encodes a template value to Base64. - **rife.render.EncodeHtml** - Encodes a template value to HTML. +- **rife.render.EncodeHtmlEntities** + - Encodes a template value to HTML decimal entities. - **rife.render.EncodeJson** - Encodes a template value to JSON. - **rife.render.EncodeQp** - Converts a template value to a quoted-printable string. +- **rife.render.EncodeUnicode** + - Encodes a template value to Unicode escape codes. - **rife.render.EncodeUrl** - URL-encodes a template value. - **rife.render.EncodeXml** diff --git a/lib/src/main/java/rife2/render/EncodeBase64.java b/lib/src/main/java/rife2/render/EncodeBase64.java new file mode 100644 index 0000000..ebaa745 --- /dev/null +++ b/lib/src/main/java/rife2/render/EncodeBase64.java @@ -0,0 +1,52 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package rife2.render; + +import rife.template.Template; +import rife.template.ValueRenderer; +import rife.tools.StringUtils; + +import java.nio.charset.StandardCharsets; + +/** + *

Encodes a template value to Base64.

+ * + *

Usage:

+ * + *
+ *   <!--v render:rife.render.EncodeBase64:valueId/-->
+ *   {{v render:rife.render.EncodeBase64:valueId}}
+ * 
+ * + * @author Erik C. Thauvin + * @see StringUtils#encodeBase64(byte[]) + * @since 1.0 + */ +public class EncodeBase64 implements ValueRenderer { + /** + * {@inheritDoc} + */ + @Override + public String render(Template template, String valueId, String differentiator) { + if (differentiator != null && !differentiator.isBlank() && template.hasValueId(differentiator)) { + return StringUtils.encodeBase64(template.getValue(differentiator).getBytes(StandardCharsets.UTF_8)); + } else { + return ""; + } + } +} diff --git a/lib/src/main/java/rife2/render/EncodeUnicode.java b/lib/src/main/java/rife2/render/EncodeUnicode.java new file mode 100644 index 0000000..b2a734e --- /dev/null +++ b/lib/src/main/java/rife2/render/EncodeUnicode.java @@ -0,0 +1,50 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package rife2.render; + +import rife.template.Template; +import rife.template.ValueRenderer; +import rife.tools.StringUtils; + +/** + *

Encodes a template value to Unicode escape codes.

+ * + *

Usage:

+ * + *
+ *   <!--v render:rife.render.EncodeUnicode:valueId/-->
+ *   {{v render:rife.render.EncodeUnicode:valueId}}
+ * 
+ * + * @author Erik C. Thauvin + * @see StringUtils#encodeUnicode(String) + * @since 1.0 + */ +public class EncodeUnicode implements ValueRenderer { + /** + * {@inheritDoc} + */ + @Override + public String render(Template template, String valueId, String differentiator) { + if (differentiator != null && !differentiator.isBlank() && template.hasValueId(differentiator)) { + return StringUtils.encodeUnicode(template.getValue(differentiator)); + } else { + return ""; + } + } +}