predicate, Task task) throws IOException {
- if (predicate.test(Handlebars.Utils.javaVersion)) {
- task.run();
- }
- }
}
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/JavaVersionTest.java b/handlebars/src/test/java/com/github/jknack/handlebars/JavaVersionTest.java
deleted file mode 100644
index 283c82a7..00000000
--- a/handlebars/src/test/java/com/github/jknack/handlebars/JavaVersionTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Handlebars.java: https://github.com/jknack/handlebars.java
- * Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
- * Copyright (c) 2012 Edgar Espina
- */
-package com.github.jknack.handlebars;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assumptions.assumeTrue;
-
-import org.junit.jupiter.api.Test;
-
-public class JavaVersionTest {
-
- @Test
- public void shouldCheckVersion8() {
- assumeTrue(Handlebars.Utils.javaVersion() == 8);
- assertEquals(8, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion9() {
- assumeTrue(Handlebars.Utils.javaVersion() == 9);
- assertEquals(9, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion10() {
- assumeTrue(Handlebars.Utils.javaVersion() == 10);
- assertEquals(10, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion11() {
- assumeTrue(Handlebars.Utils.javaVersion() == 11);
- assertEquals(11, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion12() {
- assumeTrue(Handlebars.Utils.javaVersion() == 12);
- assertEquals(12, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion13() {
- assumeTrue(Handlebars.Utils.javaVersion() == 13);
- assertEquals(13, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion14() {
- assumeTrue(Handlebars.Utils.javaVersion() == 14);
- assertEquals(14, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion15() {
- assumeTrue(Handlebars.Utils.javaVersion() == 15);
- assertEquals(15, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion16() {
- assumeTrue(Handlebars.Utils.javaVersion() == 16);
- assertEquals(16, Handlebars.Utils.javaVersion());
- }
-
- @Test
- public void shouldCheckVersion17() {
- assumeTrue(Handlebars.Utils.javaVersion() == 17);
- assertEquals(17, Handlebars.Utils.javaVersion());
- }
-}
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/NumberFormatTest.java b/handlebars/src/test/java/com/github/jknack/handlebars/NumberFormatTest.java
index 8b7476a4..435d3a4f 100644
--- a/handlebars/src/test/java/com/github/jknack/handlebars/NumberFormatTest.java
+++ b/handlebars/src/test/java/com/github/jknack/handlebars/NumberFormatTest.java
@@ -72,11 +72,27 @@ public void frLocale() throws IOException {
shouldCompileTo("{{numberFormat this \"" + pattern + "\" \"fr\"}}", number, expected);
}
- public static Date date(final int day, final int month, final int year) {
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DATE, day);
- calendar.set(Calendar.MONTH, month - 1);
- calendar.set(Calendar.YEAR, year);
- return calendar.getTime();
+ @Test
+ public void namedFormat() throws IOException {
+ final Number number = Math.PI;
+ final Locale defaultLocale = Locale.getDefault();
+ final String expected = NumberFormat
+ .getPercentInstance(defaultLocale)
+ .format(number);
+
+ shouldCompileTo("{{numberFormat this format=\"percent\"}}", number, expected);
+ }
+
+ @Test
+ public void namedBrLocale() throws IOException {
+ final Number number = Math.PI;
+ final String pattern = "currency";
+ final Locale portuguese = Locale.forLanguageTag("pt-BR");
+
+ final String expected = NumberFormat
+ .getCurrencyInstance(portuguese)
+ .format(number);
+
+ shouldCompileTo("{{numberFormat this \"" + pattern + "\" locale=\"pt-BR\"}}", number, expected);
}
}
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/ParsingErrorTest.java b/handlebars/src/test/java/com/github/jknack/handlebars/ParsingErrorTest.java
index 8d9c156a..ac4a449a 100644
--- a/handlebars/src/test/java/com/github/jknack/handlebars/ParsingErrorTest.java
+++ b/handlebars/src/test/java/com/github/jknack/handlebars/ParsingErrorTest.java
@@ -59,7 +59,9 @@ public class ParsingErrorTest extends AbstractTest {
"idx3",
"{{list.[]}}",
"idx4",
- "{{list.[}}");
+ "{{list.[}}",
+ "multipleElse",
+ "{{#if true}} b1 {{else}} b2 {{else}} b3 {{/if}}");
@Test
public void correctPath() throws IOException {
@@ -166,6 +168,11 @@ public void idx4() throws IOException {
assertThrows(HandlebarsException.class, () -> parse("idx4"));
}
+ @Test
+ public void multipleElse() throws IOException {
+ assertThrows(HandlebarsException.class, () -> parse("multipleElse"));
+ }
+
private void parse(final String candidate) throws IOException {
try {
String input = (String) source.get(candidate);
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/context/SetAccessibleValueResolverTest.java b/handlebars/src/test/java/com/github/jknack/handlebars/context/SetAccessibleValueResolverTest.java
deleted file mode 100644
index 325f6484..00000000
--- a/handlebars/src/test/java/com/github/jknack/handlebars/context/SetAccessibleValueResolverTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Handlebars.java: https://github.com/jknack/handlebars.java
- * Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
- * Copyright (c) 2012 Edgar Espina
- */
-package com.github.jknack.handlebars.context;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.fail;
-import static org.junit.jupiter.api.Assumptions.assumeTrue;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-
-import org.junit.jupiter.api.Test;
-
-import com.github.jknack.handlebars.Handlebars;
-import com.github.jknack.handlebars.ValueResolver;
-
-public class SetAccessibleValueResolverTest {
-
- /*
- * The following tests require JDK 9 or greater. To keep the tests from failing
- * we use junit assume.
- */
- @Test
- public void shouldPrintWarningAndNotThrowExceptionSetAccesibleOnOnJava9Or17() throws Exception {
- assumeTrue(Handlebars.Utils.javaVersion > 8 && Handlebars.Utils.javaVersion <= 14);
- MethodValueResolver mv =
- new MethodValueResolver() {
-
- @Override
- protected boolean isUseSetAccessible(Method m) {
- return true;
- }
- };
- Object result = mv.resolve(Collections.emptyMap(), "doesNotMatter");
- assertEquals(ValueResolver.UNRESOLVED, result);
- }
-
- @Test
- public void shouldNotPrintWarningAndNotThrowExceptionSetAccesibleOnOnJava9Or17()
- throws Exception {
- assumeTrue(Handlebars.Utils.javaVersion > 8 && Handlebars.Utils.javaVersion <= 17);
- MethodValueResolver mv = new MethodValueResolver();
- Object result = mv.resolve(Collections.emptyMap(), "isEmpty");
- assertEquals(Boolean.TRUE, result);
- }
-
- @Test
- public void shouldThrowExceptionOnJava17orHigher() throws Exception {
- assumeTrue(Handlebars.Utils.javaVersion >= 17);
- MethodValueResolver mv =
- new MethodValueResolver() {
-
- @Override
- protected boolean isUseSetAccessible(Method m) {
- return true;
- }
- };
- try {
- mv.resolve(Collections.emptyMap(), "doesNotMatter");
- fail("Expect InaccessibleObjectException");
- } catch (/* InaccessibleObjectException */ Exception e) {
- }
- }
-}
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/i1163/Issue1163.java b/handlebars/src/test/java/com/github/jknack/handlebars/i1163/Issue1163.java
new file mode 100644
index 00000000..7d836a99
--- /dev/null
+++ b/handlebars/src/test/java/com/github/jknack/handlebars/i1163/Issue1163.java
@@ -0,0 +1,23 @@
+/*
+ * Handlebars.java: https://github.com/jknack/handlebars.java
+ * Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
+ * Copyright (c) 2012 Edgar Espina
+ */
+package com.github.jknack.handlebars.i1163;
+
+import java.awt.*;
+import java.io.IOException;
+import java.util.List;
+
+import org.junit.jupiter.api.Test;
+
+import com.github.jknack.handlebars.AbstractTest;
+
+public class Issue1163 extends AbstractTest {
+
+ @Test
+ public void shouldNotFailOnEmptyList() throws IOException {
+ shouldCompileTo("{{@last}}", List.of(), "");
+ shouldCompileTo("{{@first}}", List.of(), "");
+ }
+}
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/i417/Issue417.java b/handlebars/src/test/java/com/github/jknack/handlebars/i417/Issue417.java
index 08895f61..a0a29111 100644
--- a/handlebars/src/test/java/com/github/jknack/handlebars/i417/Issue417.java
+++ b/handlebars/src/test/java/com/github/jknack/handlebars/i417/Issue417.java
@@ -39,7 +39,7 @@ public void v4_0_0() throws IOException {
+ " + \"!\";\n"
+ "},\"useData\":true}",
new Handlebars()
- .handlebarsJsFile("/handlebars-v4.7.8.js")
+ .handlebarsJsFile("/handlebars-v4.7.9.js")
.compileInline("Hi {{var}}!")
.toJavaScript());
}
diff --git a/handlebars/src/test/java/com/github/jknack/handlebars/issues/Issue550.java b/handlebars/src/test/java/com/github/jknack/handlebars/issues/Issue550.java
index a765c922..61b077eb 100644
--- a/handlebars/src/test/java/com/github/jknack/handlebars/issues/Issue550.java
+++ b/handlebars/src/test/java/com/github/jknack/handlebars/issues/Issue550.java
@@ -25,7 +25,7 @@ public void precompileAMDShouldNotAddSuffixToTemplatePartialHash() throws IOExce
"{{text}}
")),
"define('foo.hbs', ['handlebars'], function(Handlebars) {\n"
+ " var template ="
- + " Handlebars.template({\"1\":function(container,depth0,helpers,partials,data) {\n"
+ + " Handlebars.template({\"0\":function(container,depth0,helpers,partials,data) {\n"
+ " var stack1, lookupProperty = container.lookupProperty || function(parent,"
+ " propertyName) {\n"
+ " if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n"
@@ -52,7 +52,7 @@ public void precompileAMDShouldNotAddSuffixToTemplatePartialHash() throws IOExce
+ " return \"Some repeated pattern \"\n"
+ " + ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 :"
+ " (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"listItem\")"
- + " : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data,"
+ + " : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(0, data,"
+ " 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":27},\"end\":{\"line\":1,\"column\":65}}}))"
+ " != null ? stack1 : \"\")\n"
+ " + \"
\";\n"
diff --git a/pom.xml b/pom.xml
index 76de5f74..a1e7f825 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,9 +2,9 @@
4.0.0
- com.github.jknack
+ org.craftercms
handlebars.java
- 4.4.1-SNAPSHOT
+ 4.6.0-SNAPSHOT
pom
Handlebars.java
@@ -31,32 +31,42 @@
+
- jknack
- Edgar Espina
- https://github.com/jknack
+ sumerjabri
+ Sumer Jabri
+ sumer.jabri@craftercms.org
+
+
+ phuongnq
+ Phil Nguyen
+ phil.nguyen@craftercms.com
+
+
+ jmendeza
+ Jonathan Mendez
+ jonathan.mendez@craftercms.org
- scm:git:git@github.com:jknack/handlebars.java.git
- scm:git:git@github.com:jknack/handlebars.java.git
- scm:git:git@github.com:jknack/handlebars.java.git
- HEAD
+ scm:git:git://github.com/craftercms/handlebars.java
+ scm:git:git://github.com/craftercms/handlebars.java
+ scm:git:git://github.com/craftercms/handlebars.java
- ossrh
- Sonatype Nexus Snapshots
- https://oss.sonatype.org/content/repositories/snapshots/
+ central
+ Maven Central Snapshots
+ https://central.sonatype.com/repository/maven-snapshots/
- github
- GitHub Maven Packages
- https://maven.pkg.github.com/craftercms/craftercms
-
+ github
+ GitHub Maven Packages
+ https://maven.pkg.github.com/craftercms/craftercms
+
@@ -64,13 +74,13 @@
org.apache.commons
commons-lang3
- 3.17.0
+ 3.18.0
org.apache.commons
commons-text
- 1.13.0
+ 1.14.0
@@ -214,7 +224,7 @@
com.diffplug.spotless
spotless-maven-plugin
- 2.44.4
+ 2.46.1
true
@@ -290,7 +300,7 @@
org.codehaus.mojo
exec-maven-plugin
- 3.5.0
+ 3.5.1
initialize
@@ -411,16 +421,14 @@
-
- org.sonatype.plugins
- nexus-staging-maven-plugin
- 1.7.0
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.8.0
true
- ossrh
- https://oss.sonatype.org/
- true
+ central
+ true
@@ -494,11 +502,11 @@
UTF-8
- 2.18.3
- 6.2.5
- 0.8.13
- 4.13.2
- 5.17.0
+ 2.19.2
+ 6.2.9
+ 0.8.12
+ 4.13.1
+ 5.18.0
yyyy-MM-dd HH:mm:ssa
3.1.0
${maven.build.timestamp}
@@ -508,6 +516,6 @@
false
src${file.separator}etc${file.separator}formatter.sh
handlebars${file.separator}src${file.separator}test${file.separator}resources${file.separator}mustache
- 5.12.1
+ 5.13.4
diff --git a/tests/pom.xml b/tests/pom.xml
index 59d1589a..f444a709 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -3,9 +3,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- com.github.jknack
+ org.craftercms
handlebars.java
- 4.4.1-SNAPSHOT
+ 4.6.0-SNAPSHOT
4.0.0
@@ -13,19 +13,19 @@
- com.github.jknack
+ org.craftercms
handlebars-guava-cache
${project.version}
- com.github.jknack
+ org.craftercms
handlebars-helpers
${project.version}
- com.github.jknack
+ org.craftercms
handlebars-jackson
${project.version}
@@ -38,7 +38,7 @@
- com.github.jknack
+ org.craftercms
handlebars
${project.version}
test
diff --git a/tests/src/test/java/com/github/jknack/handlebars/helper/ext/JodaHelperTest.java b/tests/src/test/java/com/github/jknack/handlebars/helper/ext/JodaHelperTest.java
index 46dda35e..73449311 100644
--- a/tests/src/test/java/com/github/jknack/handlebars/helper/ext/JodaHelperTest.java
+++ b/tests/src/test/java/com/github/jknack/handlebars/helper/ext/JodaHelperTest.java
@@ -53,20 +53,6 @@ public void testBadPattern() throws IOException {
}
}
- @Test
- public void testStyle() throws IOException {
- DateTime dateTime = new DateTime().withDate(1995, 7, 4).withTime(14, 32, 12, 0);
- withJava(
- version -> version <= 8,
- () -> shouldCompileTo("{{jodaStyleHelper this \"SS\"}}", dateTime, "7/4/95 2:32 PM"));
- withJava(
- version -> version >= 9 && version <= 20,
- () -> shouldCompileTo("{{jodaStyleHelper this \"SS\"}}", dateTime, "7/4/95, 2:32 PM"));
- withJava(
- version -> version >= 21,
- () -> shouldCompileToNormalized("{{jodaStyleHelper this \"SS\"}}", dateTime, "7/4/95, 2:32 PM"));
- }
-
@Test
public void testBadStyle() throws IOException {
DateTime dateTime = new DateTime().withDate(1995, 7, 4).withTime(14, 32, 12, 0);
diff --git a/tests/src/test/java/com/github/jknack/handlebars/jackson/Issue996.java b/tests/src/test/java/com/github/jknack/handlebars/jackson/Issue996.java
new file mode 100644
index 00000000..9e9af5ac
--- /dev/null
+++ b/tests/src/test/java/com/github/jknack/handlebars/jackson/Issue996.java
@@ -0,0 +1,41 @@
+/*
+ * Handlebars.java: https://github.com/jknack/handlebars.java
+ * Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
+ * Copyright (c) 2012 Edgar Espina
+ */
+package com.github.jknack.handlebars.jackson;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.jknack.handlebars.AbstractTest;
+import com.github.jknack.handlebars.Context;
+import com.github.jknack.handlebars.context.MapValueResolver;
+
+public class Issue996 extends AbstractTest {
+
+ @Override
+ protected Object configureContext(final Object model) {
+ return Context.newBuilder(model)
+ .resolver(MapValueResolver.INSTANCE, JsonNodeValueResolver.INSTANCE)
+ .build();
+ }
+
+ @Test
+ public void shouldSupportIncludeZeroOptionIfHelper() throws IOException {
+ JsonNode tree = new ObjectMapper().readTree("[1, 2, 3]");
+ shouldCompileTo(
+ "{{#if 0}}true condition{{else}}false condition{{/if}}", tree, "false condition");
+ shouldCompileTo(
+ "{{#if 0 includeZero=true}}true condition{{else}}false condition{{/if}}",
+ tree,
+ "true condition");
+ shouldCompileTo(
+ "{{#if 0 includeZero=false}}true condition{{else}}false condition{{/if}}",
+ tree,
+ "false condition");
+ }
+}