This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/SLING-10652-type-conversions
in repository https://gitbox.apache.org/repos/asf/sling-site.git

commit 79327c16235c37b6eb8d0f44993b1df0fed2c774
Author: Konrad Windszus <[email protected]>
AuthorDate: Fri Jul 23 12:39:35 2021 +0200

    SLING-10652 add table for HTL type conversions
    
    WIP
---
 .../bundles/scripting/scripting-htl.md             | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git 
a/src/main/jbake/content/documentation/bundles/scripting/scripting-htl.md 
b/src/main/jbake/content/documentation/bundles/scripting/scripting-htl.md
index 5574432..9dc720c 100644
--- a/src/main/jbake/content/documentation/bundles/scripting/scripting-htl.md
+++ b/src/main/jbake/content/documentation/bundles/scripting/scripting-htl.md
@@ -56,6 +56,29 @@ The [HTML Template Language 
Specification](https://github.com/Adobe-Marketing-Cl
 
 The HTL implementation from Sling provides the basic POJO support through the 
[`org.apache.sling.scripting.sightly.pojo.Use`](https://github.com/apache/sling-org-apache-sling-scripting-sightly-compiler-java/blob/master/src/main/java/org/apache/sling/scripting/sightly/pojo/Use.java)
 interface and the 
[`JavaUseProvider`](https://github.com/apache/sling-org-apache-sling-scripting-sightly/blob/master/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.j
 [...]
 
+# Type conversions
+
+The HTL Specification talks about the following types which are supported to 
be used with native Java types. The conversion rules are outlined in the table 
below.
+
+HTL Type | Conversion from Java Type | Code Link
+--- | --- | --- 
+`Boolean` | `java.lang.Boolean` (no conversion necessary). In addition it 
returns `true` for every other Java object except for `null`, 
`java.lang.Number` having value `0`, empty String, array, Collection, Map, 
Iterator or Iterable's iterator  | 
[`ObjectModel.toBoolean(Object)`](https://github.com/apache/sling-org-apache-sling-scripting-sightly-runtime/blob/6cbd676a8875af756e6e43b38c39ba9e4784dc4e/src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java#L151)
+`String` | Almost every type via `Object.toString()`
+`Date` | `java.util.Date`, `java.util.Calendar`
+`Number` | `java.lang.Number`, every other type first converted to 
`java.lang.String` and then converted to Number via 
[`NumberUtils.createNumber(String)`](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#createNumber-java.lang.String-).
 | 
[`ObjectModel.toNumber(Object)`](https://github.com/apache/sling-org-apache-sling-scripting-sightly-runtime/blob/6cbd676a8875af756e6e43b38c39ba9e4784dc4e/src/main/java/org/apache/sling/scripting/sigh
 [...]
+`Collection` | Empty list for everything except for <br/>arrays, Collections, 
Iterators and Iterables (converted to List) and `java.lang.String` or 
`java.lang.Number` (a list containing a single item). For `java.util.Map` the 
key set is used.  | 
[`ObjectModel.toCollection(Object)`](https://github.com/apache/sling-org-apache-sling-scripting-sightly-runtime/blob/6cbd676a8875af756e6e43b38c39ba9e4784dc4e/src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java#L277)
+`Map` |
+`Enum` |
+
+## Support for Optional
+
+...
+
+## JavaScript
+
+As the HTL Engine in Sling is a Java implementation even the objects provided 
by the JS Use Provider are first converted into native Java types. The type 
conversion from JS to Java is done with 
[Rhino](https://github.com/mozilla/rhino), afterwards the semantics from the 
table above are used.
+
+
 # Extensions of the HTL Specification
 
 The Sling HTL Scripting engine fully complies with the [HTML Template Language 
Specification 
1.4](https://github.com/adobe/htl-spec/blob/1.4/SPECIFICATION.md). In addition 
it adds some extensions which are not part of the specification. 

Reply via email to