Explorar el Código

Move examples to `App start` style.

Herbert Vojčík hace 6 años
padre
commit
7c9645601a

+ 1 - 2
example-counter/counter.html

@@ -25,8 +25,7 @@
                     require(["amber-ide-starter-dialog"], function (dlg) { dlg.start(); });
 
                     $(function () {
-                        blackboard = amber.globals.TrappedCounter._new();
-                        amber.globals.Trapped._start_([blackboard]);
+                        amber.globals.App._start();
                     });
                 });
             });

+ 59 - 4
example-counter/src/Trapped-Counter.js

@@ -16,6 +16,62 @@ $core.packages["Trapped-Counter"].innerEval = function (expr) { return eval(expr
 $core.packages["Trapped-Counter"].imports = ["trapped/Trapped-Processors"];
 $core.packages["Trapped-Counter"].transport = {"type":"amd","amdNamespace":"trapped-counter"};
 
+$core.addClass("App", $globals.Object, [], "Trapped-Counter");
+$core.addMethod(
+$core.method({
+selector: "start",
+protocol: "startup",
+fn: function (){
+var self=this,$self=this;
+var model;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+model=$recv($globals.TrappedCounter)._new();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["new"]=1;
+//>>excludeEnd("ctx");
+$recv(model)._axxord_($recv($globals.SimpleAxon)._new());
+$recv($globals.Trapped)._start_([model]);
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"start",{model:model},$globals.App)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "start\x0a\x09| model |\x0a\x09model := TrappedCounter new.\x0a\x09model axxord: SimpleAxon new.\x0a\x09Trapped start: { model }",
+referencedClasses: ["TrappedCounter", "SimpleAxon", "Trapped"],
+//>>excludeEnd("ide");
+messageSends: ["new", "axxord:", "start:"]
+}),
+$globals.App);
+
+
+$core.addMethod(
+$core.method({
+selector: "start",
+protocol: "startup",
+fn: function (){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return $recv($self._new())._start();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"start",{},$globals.App.a$cls)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "start\x0a\x09^ self new start",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["start", "new"]
+}),
+$globals.App.a$cls);
+
+
 $core.addClass("TrappedCounter", $globals.Object, ["value"], "Trapped-Counter");
 $core.addMethod(
 $core.method({
@@ -83,7 +139,6 @@ $ctx1.supercall = true,
 $ctx1.supercall = false;
 //>>excludeEnd("ctx");;
 $self["@value"]=(0);
-$self._axxord_($recv($globals.SimpleAxon)._new());
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 }, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.TrappedCounter)});
@@ -91,10 +146,10 @@ return self;
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "initialize\x0a\x09super initialize.\x0a\x09value := 0.\x0a\x09self axxord: SimpleAxon new",
-referencedClasses: ["SimpleAxon"],
+source: "initialize\x0a\x09super initialize.\x0a\x09value := 0",
+referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["initialize", "axxord:", "new"]
+messageSends: ["initialize"]
 }),
 $globals.TrappedCounter);
 

+ 20 - 2
example-counter/src/Trapped-Counter.st

@@ -1,5 +1,24 @@
 Smalltalk createPackage: 'Trapped-Counter'!
 (Smalltalk packageAt: 'Trapped-Counter') imports: {'trapped/Trapped-Processors'}!
+Object subclass: #App
+	instanceVariableNames: ''
+	package: 'Trapped-Counter'!
+
+!App methodsFor: 'startup'!
+
+start
+	| model |
+	model := TrappedCounter new.
+	model axxord: SimpleAxon new.
+	Trapped start: { model }
+! !
+
+!App class methodsFor: 'startup'!
+
+start
+	^ self new start
+! !
+
 Object subclass: #TrappedCounter
 	instanceVariableNames: 'value'
 	package: 'Trapped-Counter'!
@@ -28,7 +47,6 @@ increment
 
 initialize
 	super initialize.
-	value := 0.
-	self axxord: SimpleAxon new
+	value := 0
 ! !
 

+ 84 - 28
example-todo/src/Trapped-Todo.js

@@ -16,6 +16,86 @@ $core.packages["Trapped-Todo"].innerEval = function (expr) { return eval(expr);
 $core.packages["Trapped-Todo"].imports = ["trapped/Trapped-Processors"];
 $core.packages["Trapped-Todo"].transport = {"type":"amd","amdNamespace":"trapped-todo"};
 
+$core.addClass("App", $globals.Object, [], "Trapped-Todo");
+$core.addMethod(
+$core.method({
+selector: "start",
+protocol: "startup",
+fn: function (){
+var self=this,$self=this;
+var model,axon;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+var $1;
+$1=$recv($globals.TrappedTodo)._new();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+$ctx1.sendIdx["new"]=1;
+//>>excludeEnd("ctx");
+model=$recv($globals.Axolator)._on_($1);
+axon=$recv($globals.SimpleAxon)._new();
+$recv(axon)._addInterest_($recv($globals.TrappedPosition)._interestOn_block_([["todos"], nil],(function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(axon)._changed_([["remaining"]]);
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
+//>>excludeEnd("ctx");
+})));
+$recv((function(){
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx2) {
+//>>excludeEnd("ctx");
+return $recv(model)._axes_transform_([["todos"]],(function(){
+return [$globals.HashedCollection._newFromPairs_(["text","learn trapped","done",true]),$globals.HashedCollection._newFromPairs_(["text","build a trapped app","done",false])];
+
+}));
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
+//>>excludeEnd("ctx");
+}))._valueWithTimeout_((2000));
+$recv(model)._axxord_(axon);
+$recv($globals.Trapped)._start_([model]);
+return self;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"start",{model:model,axon:axon},$globals.App)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "start\x0a\x09| model axon |\x0a\x09model := Axolator on: TrappedTodo new.\x0a    axon := SimpleAxon new.\x0a\x09\x0a\x09axon addInterest: (TrappedPosition\x0a\x09\x09interestOn: #((todos) nil)\x0a\x09\x09block: [ axon changed: #((remaining)) ]).\x0a\x0a    [ model axes: #((todos)) transform: [{\x0a        #{'text'->'learn trapped'. 'done'->true}.\x0a        #{'text'->'build a trapped app'. 'done'->false}\x0a    }]] valueWithTimeout: 2000.\x0a\x0a\x09model axxord: axon.\x0a\x09Trapped start: { model }",
+referencedClasses: ["Axolator", "TrappedTodo", "SimpleAxon", "TrappedPosition", "Trapped"],
+//>>excludeEnd("ide");
+messageSends: ["on:", "new", "addInterest:", "interestOn:block:", "changed:", "valueWithTimeout:", "axes:transform:", "axxord:", "start:"]
+}),
+$globals.App);
+
+
+$core.addMethod(
+$core.method({
+selector: "start",
+protocol: "startup",
+fn: function (){
+var self=this,$self=this;
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+return $core.withContext(function($ctx1) {
+//>>excludeEnd("ctx");
+return $recv($self._new())._start();
+//>>excludeStart("ctx", pragmas.excludeDebugContexts);
+}, function($ctx1) {$ctx1.fill(self,"start",{},$globals.App.a$cls)});
+//>>excludeEnd("ctx");
+},
+//>>excludeStart("ide", pragmas.excludeIdeData);
+args: [],
+source: "start\x0a\x09^ self new start",
+referencedClasses: [],
+//>>excludeEnd("ide");
+messageSends: ["start", "new"]
+}),
+$globals.App.a$cls);
+
+
 $core.addClass("TrappedTodo", $globals.Object, ["title", "todos", "todoText"], "Trapped-Todo");
 //>>excludeStart("ide", pragmas.excludeIdeData);
 $globals.TrappedTodo.comment="// Code from AngularJS Todo example, http://angularjs.org/#todo-js\x0afunction TodoCtrl($scope) {\x0a  $scope.todos = [\x0a    {text:'learn angular', done:true},\x0a    {text:'build an angular app', done:false}];\x0a \x0a  $scope.addTodo = function() {\x0a    $scope.todos.push({text:$scope.todoText, done:false});\x0a    $scope.todoText = '';\x0a  };\x0a \x0a  $scope.remaining = function() {\x0a    var count = 0;\x0a    angular.forEach($scope.todos, function(todo) {\x0a      count += todo.done ? 0 : 1;\x0a    });\x0a    return count;\x0a  };\x0a \x0a  $scope.archive = function() {\x0a    var oldTodos = $scope.todos;\x0a    $scope.todos = [];\x0a    angular.forEach(oldTodos, function(todo) {\x0a      if (!todo.done) $scope.todos.push(todo);\x0a    });\x0a  };\x0a}";
@@ -75,7 +155,6 @@ selector: "initialize",
 protocol: "initialization",
 fn: function (){
 var self=this,$self=this;
-var axon;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 return $core.withContext(function($ctx1) {
 //>>excludeEnd("ctx");
@@ -87,43 +166,20 @@ $ctx1.supercall = true,
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
 $ctx1.supercall = false;
 //>>excludeEnd("ctx");;
-axon=$recv($globals.SimpleAxon)._new();
-$recv(axon)._addInterest_($recv($globals.TrappedPosition)._interestOn_block_([["todos"], nil],(function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $recv(axon)._changed_([["remaining"]]);
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
-//>>excludeEnd("ctx");
-})));
-$recv((function(){
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-return $core.withContext(function($ctx2) {
-//>>excludeEnd("ctx");
-return $self._axes_transform_([["todos"]],(function(){
-return [$globals.HashedCollection._newFromPairs_(["text","learn trapped","done",true]),$globals.HashedCollection._newFromPairs_(["text","build a trapped app","done",false])];
-
-}));
-//>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
-//>>excludeEnd("ctx");
-}))._valueWithTimeout_((2000));
 $self["@title"]="Todo";
 $self["@todoText"]=nil;
 $self["@todos"]=nil;
-$self._axxord_(axon);
 return self;
 //>>excludeStart("ctx", pragmas.excludeDebugContexts);
-}, function($ctx1) {$ctx1.fill(self,"initialize",{axon:axon},$globals.TrappedTodo)});
+}, function($ctx1) {$ctx1.fill(self,"initialize",{},$globals.TrappedTodo)});
 //>>excludeEnd("ctx");
 },
 //>>excludeStart("ide", pragmas.excludeIdeData);
 args: [],
-source: "initialize\x0a\x09| axon |\x0a\x09super initialize.\x0a\x0a    axon := SimpleAxon new.\x0a\x09\x0a\x09axon addInterest: (TrappedPosition\x0a\x09\x09interestOn: #((todos) nil)\x0a\x09\x09block: [ axon changed: #((remaining)) ]).\x0a\x0a    [ self axes: #((todos)) transform: [{\x0a        #{'text'->'learn trapped'. 'done'->true}.\x0a        #{'text'->'build a trapped app'. 'done'->false}\x0a    }]] valueWithTimeout: 2000.\x0a\x0a\x09title := 'Todo'.\x0a\x09todoText := nil.\x0a\x09todos := nil.\x0a\x0a\x09self axxord: axon",
-referencedClasses: ["SimpleAxon", "TrappedPosition"],
+source: "initialize\x0a\x09super initialize.\x0a\x0a\x09title := 'Todo'.\x0a\x09todoText := nil.\x0a\x09todos := nil",
+referencedClasses: [],
 //>>excludeEnd("ide");
-messageSends: ["initialize", "new", "addInterest:", "interestOn:block:", "changed:", "valueWithTimeout:", "axes:transform:", "axxord:"]
+messageSends: ["initialize"]
 }),
 $globals.TrappedTodo);
 

+ 31 - 15
example-todo/src/Trapped-Todo.st

@@ -1,5 +1,35 @@
 Smalltalk createPackage: 'Trapped-Todo'!
 (Smalltalk packageAt: 'Trapped-Todo') imports: {'trapped/Trapped-Processors'}!
+Object subclass: #App
+	instanceVariableNames: ''
+	package: 'Trapped-Todo'!
+
+!App methodsFor: 'startup'!
+
+start
+	| model axon |
+	model := Axolator on: TrappedTodo new.
+    axon := SimpleAxon new.
+	
+	axon addInterest: (TrappedPosition
+		interestOn: #((todos) nil)
+		block: [ axon changed: #((remaining)) ]).
+
+    [ model axes: #((todos)) transform: [{
+        #{'text'->'learn trapped'. 'done'->true}.
+        #{'text'->'build a trapped app'. 'done'->false}
+    }]] valueWithTimeout: 2000.
+
+	model axxord: axon.
+	Trapped start: { model }
+! !
+
+!App class methodsFor: 'startup'!
+
+start
+	^ self new start
+! !
+
 Object subclass: #TrappedTodo
 	instanceVariableNames: 'title todos todoText'
 	package: 'Trapped-Todo'!
@@ -80,25 +110,11 @@ archive
 !TrappedTodo methodsFor: 'initialization'!
 
 initialize
-	| axon |
 	super initialize.
 
-    axon := SimpleAxon new.
-	
-	axon addInterest: (TrappedPosition
-		interestOn: #((todos) nil)
-		block: [ axon changed: #((remaining)) ]).
-
-    [ self axes: #((todos)) transform: [{
-        #{'text'->'learn trapped'. 'done'->true}.
-        #{'text'->'build a trapped app'. 'done'->false}
-    }]] valueWithTimeout: 2000.
-
 	title := 'Todo'.
 	todoText := nil.
-	todos := nil.
-
-	self axxord: axon
+	todos := nil
 ! !
 
 !TrappedProcessor class methodsFor: '*Trapped-Todo'!

+ 1 - 2
example-todo/todo.html

@@ -23,8 +23,7 @@
                     require(["amber-ide-starter-dialog"], function (dlg) { dlg.start(); });
 
                     $(function () {
-                        blackboard = amber.globals.TrappedTodo._new();
-                        amber.globals.Trapped._start_([blackboard]);
+                        amber.globals.App._start();
                     });
                 });
             });