From e30a1d0be1a972a718af8832ea5cd13863af2f35 Mon Sep 17 00:00:00 2001 From: Danny Yoo Date: Thu, 8 Sep 2011 11:59:13 -0400 Subject: [PATCH] in the middle of trying to make tests run --- tests/more-tests/view.rkt | 12 ++--- web-world/impl.rkt | 4 +- web-world/js-impl.js | 92 +++++++++++++++++++++++++++++++++++++++ web-world/racket-impl.rkt | 8 ++++ 4 files changed, 109 insertions(+), 7 deletions(-) diff --git a/tests/more-tests/view.rkt b/tests/more-tests/view.rkt index f2293dc..6cd9f7c 100644 --- a/tests/more-tests/view.rkt +++ b/tests/more-tests/view.rkt @@ -135,8 +135,8 @@ (body (h1 (@ (id "header"))) (p (@ (id "para")) (ul (li "one"))))))) - "para") - (xexp->dom '(li "two"))))) + "para")) + (xexp->dom '(li "two")))) (view->xexp @@ -146,8 +146,8 @@ (body (h1 (@ (id "header"))) (p (@ (id "para")) (ul (li "one"))))))) - "para") - (xexp->dom '(li "two")))) + "para")) + (xexp->dom '(li "two"))) (xexp->dom '(li "three")))) (view->xexp @@ -156,5 +156,5 @@ (body (h1 (@ (id "header"))) (p (@ (id "para")) (ul (li "one"))))))) - "para") - (xexp->dom '(li "zero"))))) + "para")) + (xexp->dom '(li "zero")))) diff --git a/web-world/impl.rkt b/web-world/impl.rkt index 2856220..0d541c1 100644 --- a/web-world/impl.rkt +++ b/web-world/impl.rkt @@ -70,7 +70,9 @@ view-append-child view-remove - + view-insert-right + view-insert-left + xexp? xexp->dom diff --git a/web-world/js-impl.js b/web-world/js-impl.js index 2124465..3c4c218 100644 --- a/web-world/js-impl.js +++ b/web-world/js-impl.js @@ -439,6 +439,36 @@ ); }; + MockView.prototype.insertRight = function(domNode) { + return this.act( + function(cursor) { + return cursor.insertRight(domNodeToArrayTree(domNode)); + }, + function(eventHandlers) { return eventHandlers; }, + function(view) { + var clone = $(domNode).clone(true); + clone.insertAfter(view.focus); + view.focus = clone; + } + ); + }; + + MockView.prototype.insertLeft = function(domNode) { + return this.act( + function(cursor) { + return cursor.insertLeft(domNodeToArrayTree(domNode)); + }, + function(eventHandlers) { return eventHandlers; }, + function(view) { + var clone = $(domNode).clone(true); + clone.insertBefore(view.focus); + view.focus = clone; + } + ); + }; + + + MockView.prototype.id = function() { return this.cursor.node[0].id; }; @@ -1773,6 +1803,68 @@ }); + EXPORTS['view-insert-right'] = makeClosure( + 'view-insert-right', + 2, + function(MACHINE) { + var view = checkMockView(MACHINE, 'view-insert-right', 0); + var oldArgcount = MACHINE.argcount; + var x = MACHINE.env[MACHINE.env.length - 2]; + PAUSE(function(restart) { + coerseToDomNode(x, + function(dom) { + restart(function(MACHINE) { + MACHINE.argcount = oldArgcount; + var updatedView = view.insertRight(dom); + finalizeClosureCall(MACHINE, updatedView); + }); + }, + function(err) { + restart(function(MACHINE) { + plt.baselib.exceptions.raise( + MACHINE, + new Error(plt.baselib.format.format( + "unable to translate ~s to dom node: ~a", + [x, err.message]))); + + }); + }); + }); + }); + + + + + EXPORTS['view-insert-left'] = makeClosure( + 'view-insert-left', + 2, + function(MACHINE) { + var view = checkMockView(MACHINE, 'view-insert-left', 0); + var oldArgcount = MACHINE.argcount; + var x = MACHINE.env[MACHINE.env.length - 2]; + PAUSE(function(restart) { + coerseToDomNode(x, + function(dom) { + restart(function(MACHINE) { + MACHINE.argcount = oldArgcount; + var updatedView = view.insertLeft(dom); + finalizeClosureCall(MACHINE, updatedView); + }); + }, + function(err) { + restart(function(MACHINE) { + plt.baselib.exceptions.raise( + MACHINE, + new Error(plt.baselib.format.format( + "unable to translate ~s to dom node: ~a", + [x, err.message]))); + + }); + }); + }); + }); + + EXPORTS['view-id'] = makePrimitiveProcedure( 'view-id', diff --git a/web-world/racket-impl.rkt b/web-world/racket-impl.rkt index 325da57..667ed6b 100644 --- a/web-world/racket-impl.rkt +++ b/web-world/racket-impl.rkt @@ -22,6 +22,8 @@ view-show view-hide view-append-child + view-insert-right + view-insert-left view-remove @@ -161,6 +163,12 @@ (define (view-append-child view dom) (error 'view-append "Please run in JavaScript context.")) +(define (view-insert-right view dom) + (error 'view-insert-right "Please run in JavaScript context.")) + +(define (view-insert-left view dom) + (error 'view-insert-left "Please run in JavaScript context.")) + (define (open-output-element id) (error 'open-output-element "Please run in JavaScript context."))