Hi Thiago,

Am 30.11.2017 um 17:19 schrieb Thiago H. de Paula Figueiredo:
Just one question: since 5.5 requires Java 8, couldn't we use its embedded
JavaScript support (Nashorn) instead of Mozilla's Rhino?

Yes, we could probably do that. But Rhino was already there, so I just used it. But I guess we can always switch to Nashorn later.

Jochen


On Thu, Nov 30, 2017 at 2:12 PM, Thiago H. de Paula Figueiredo <
thiag...@gmail.com> wrote:

This is awesome! Thank you very much!

On Mon, Nov 27, 2017 at 10:01 AM, <jkemn...@apache.org> wrote:

Repository: tapestry-5
Updated Branches:
   refs/heads/master 80f65eb4b -> 0f2c01c9a


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c0
1c9/tapestry-webresources/src/test/groovy/t5/webresources/
tests/TypeScriptCompilerSpec.groovy
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/test/groovy/t5/webresources/test
s/TypeScriptCompilerSpec.groovy b/tapestry-webresources/src/te
st/groovy/t5/webresources/tests/TypeScriptCompilerSpec.groovy
new file mode 100644
index 0000000..aafd30a
--- /dev/null
+++ b/tapestry-webresources/src/test/groovy/t5/webresources/test
s/TypeScriptCompilerSpec.groovy
@@ -0,0 +1,58 @@
+package t5.webresources.tests;
+
+import org.apache.tapestry5.SymbolConstants
+import org.apache.tapestry5.internal.InternalSymbols
+import org.apache.tapestry5.internal.test.PageTesterContext
+import org.apache.tapestry5.internal.webresources.TypeScriptCompiler
+import org.apache.tapestry5.ioc.MappedConfiguration
+import org.apache.tapestry5.ioc.annotations.Autobuild
+import org.apache.tapestry5.ioc.annotations.Inject
+import org.apache.tapestry5.ioc.annotations.SubModule
+import org.apache.tapestry5.ioc.internal.util.ClasspathResource
+import org.apache.tapestry5.modules.AssetsModule
+import org.apache.tapestry5.modules.TapestryModule
+import org.apache.tapestry5.services.ApplicationGlobals
+import org.apache.tapestry5.webresources.modules.WebResourcesModule
+
+import spock.lang.Shared
+import spock.lang.Specification
+
+@SubModule([TapestryModule, WebResourcesModule,
TypeScriptCompilerSpec.TestModule, AssetsModule])
+class TypeScriptCompilerSpec extends Specification {
+
+  @Autobuild
+  private TypeScriptCompiler typeScriptCompiler;
+
+  @Inject
+  @Shared
+  private ApplicationGlobals applicationGlobals
+
+  def setupSpec(){
+    applicationGlobals.storeContext(new PageTesterContext("/test"));
+  }
+
+  def "Compile Hello World example"(){
+    when:
+    def resource = new ClasspathResource("t5/webresources/greeter.ts")
+    def compiled = typeScriptCompiler.transform(resource, null)
+    then:
+    compiled.text == TypeScriptCompilerSpec.class.g
etResourceAsStream('/t5/webresources/greeter-compiled.js').text
+  }
+
+  def "Type information is preserved"(){
+    when:
+    def resource = new ClasspathResource("t5/webresou
rces/park-example.ts")
+    def compiled = typeScriptCompiler.transform(resource, null)
+    then:
+    compiled.text == TypeScriptCompilerSpec.class.g
etResourceAsStream('/t5/webresources/park-example-compiled.js').text
+  }
+
+  public static class TestModule {
+
+    def contributeApplicationDefaults(MappedConfiguration
configuration){
+      configuration.add(InternalSymbols.APP_NAME, "test")
+      configuration.add("tapestry.app-package", "typescript")
+      configuration.add(SymbolConstants.MINIFICATION_ENABLED, false)
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c0
1c9/tapestry-webresources/src/test/resources/t5/
webresources/greeter-compiled.js
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/greeter-compiled.js
b/tapestry-webresources/src/test/resources/t5/webresources/
greeter-compiled.js
new file mode 100644
index 0000000..0794189
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/
greeter-compiled.js
@@ -0,0 +1,8 @@
+define(["require", "exports"], function (require, exports) {
+    "use strict";
+    function greeter(person) {
+        return "Hello, " + person;
+    }
+    var user = "Jane User";
+    document.body.innerHTML = greeter(user);
+});

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c0
1c9/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
b/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
new file mode 100644
index 0000000..7fc2d1a
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/greeter.ts
@@ -0,0 +1,7 @@
+function greeter(person) {
+    return "Hello, " + person;
+}
+
+var user = "Jane User";
+
+document.body.innerHTML = greeter(user);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c0
1c9/tapestry-webresources/src/test/resources/t5/
webresources/park-example-compiled.js
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/park-example-compiled.js
b/tapestry-webresources/src/test/resources/t5/webresources/
park-example-compiled.js
new file mode 100644
index 0000000..6d8e725
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/
park-example-compiled.js
@@ -0,0 +1,26 @@
+var __decorate = (this && this.__decorate) || function (decorators,
target, key, desc) {
+    var c = arguments.length, r = c < 3 ? target : desc === null ? desc
= Object.getOwnPropertyDescriptor(target, key) : desc, d;
+    if (typeof Reflect === "object" && typeof Reflect.decorate ===
"function") r = Reflect.decorate(decorators, target, key, desc);
+    else for (var i = decorators.length - 1; i >= 0; i--) if (d =
decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target,
key)) || r;
+    return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __metadata = (this && this.__metadata) || function (k, v) {
+    if (typeof Reflect === "object" && typeof Reflect.metadata ===
"function") return Reflect.metadata(k, v);
+};
+define(["require", "exports"], function (require, exports) {
+    "use strict";
+    var Pterodactyls = /** @class */ (function () {
+        function Pterodactyls() {
+        }
+        return Pterodactyls;
+    }());
+    var Park = /** @class */ (function () {
+        function Park(x, y) {
+        }
+        Park = __decorate([
+            Aviary,
+            __metadata("design:paramtypes", [Pterodactyls, String])
+        ], Park);
+        return Park;
+    }());
+});

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/0f2c0
1c9/tapestry-webresources/src/test/resources/t5/
webresources/park-example.ts
----------------------------------------------------------------------
diff --git 
a/tapestry-webresources/src/test/resources/t5/webresources/park-example.ts
b/tapestry-webresources/src/test/resources/t5/webresources/
park-example.ts
new file mode 100644
index 0000000..ce9b4f2
--- /dev/null
+++ b/tapestry-webresources/src/test/resources/t5/webresources/
park-example.ts
@@ -0,0 +1,6 @@
+class Pterodactyls {}
+
+@Aviary
+class Park {
+  constructor(x: Pterodactyls, y: string) {}
+}
\ No newline at end of file




--
Thiago






---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to