filling in documentation for the ffi
This commit is contained in:
parent
05fe0c5de4
commit
5c245da591
|
@ -1242,7 +1242,7 @@ even if the id does not currently exist on the page.
|
||||||
@defmodule/this-package[js]{
|
@defmodule/this-package[js]{
|
||||||
|
|
||||||
|
|
||||||
This needs to describe what hooks we've got from the JavaScript side
|
[[This needs to describe what hooks we've got from the JavaScript side
|
||||||
of things.
|
of things.
|
||||||
|
|
||||||
In particular, we need to talk about the plt namespace constructed by
|
In particular, we need to talk about the plt namespace constructed by
|
||||||
|
@ -1251,7 +1251,104 @@ the runtime, and the major, external bindings, like
|
||||||
|
|
||||||
The contracts here are not quite right either. I want to use JQuery
|
The contracts here are not quite right either. I want to use JQuery
|
||||||
as the type in several of the bindings here, but don't quite know how
|
as the type in several of the bindings here, but don't quite know how
|
||||||
to teach Scribble about them yet.
|
to teach Scribble about them yet.]]
|
||||||
|
|
||||||
|
@defproc[(js-string? [x any]) boolean]{
|
||||||
|
Returns @racket[#t] if the value is a primitive JavaScript string value.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defproc[(string->js-string [str string]) js-string]{
|
||||||
|
Coerses @racket[str] to a JavaScript string value.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defproc[(js-string->string [js-str js-string]) string]{
|
||||||
|
Coerses @racket[js-str] to a string value.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@defproc[(js-number? [x any]) boolean]{
|
||||||
|
Returns @racket[#t] if @racket[x] is a primitive JavaScript number.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defproc[(number->js-number [num number]) js-number]{
|
||||||
|
Coerses @racket[num] to a JavaScript number.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defproc[(js-number->number [js-num js-number]) number]{
|
||||||
|
Coerses @racket[js-num] to a number.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defproc[(js-null? [x any]) boolean]{
|
||||||
|
Returns @racket[#t] if @racket[x] is @tt{null}.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defthing[js-null js-value]{
|
||||||
|
JavaScript's @tt{null} value.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@defproc[(get-attr [obj js-object] [key (or/c string symbol)]) js-value]{
|
||||||
|
Looks up the attribute of a JavaScript object.
|
||||||
|
}
|
||||||
|
|
||||||
|
@defproc[(set-attr! [obj js-object] [key (or/c string symbol)] [value js-value]) js-value]{
|
||||||
|
Sets the attribute of a JavaScript object.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@defproc[(load-script [url string?]) void]{
|
||||||
|
Dynamically loads a script from the URL.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@defproc[(js-function->procedure [f (U string js-function)]) procedure]{
|
||||||
|
Given either a string representation of a JavaScript function, or a javascript function
|
||||||
|
object, returns a procedure that can be called.
|
||||||
|
|
||||||
|
For example, the following shows how to lift a simple function:
|
||||||
|
@racketblock[
|
||||||
|
(define primitive-*
|
||||||
|
(js-function->procedure
|
||||||
|
"function(x) { return x * x; }"))
|
||||||
|
(primitive-* 42)
|
||||||
|
]
|
||||||
|
|
||||||
|
Caveats: the lifted function does no auto-coersion of values.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@defproc[(js-async-function->procedure [f (or/c string js-function)])
|
||||||
|
procedure]{ Given either a string representation of a JavaScript
|
||||||
|
function, or a javascript function object, returns a procedure that
|
||||||
|
can be called. The first two arguments to the function are special,
|
||||||
|
representing the success and fail continuations that continue the rest
|
||||||
|
of the computation.
|
||||||
|
|
||||||
|
For example, the following shows how to lift a simple function:
|
||||||
|
@racketblock[
|
||||||
|
(define primitive-*
|
||||||
|
(js-async-function->procedure
|
||||||
|
"function(success, fail, x) { success(x * x); }"))
|
||||||
|
(primitive-* 42)
|
||||||
|
]
|
||||||
|
|
||||||
|
Note that, unlike @racket[js-function->procedure], the
|
||||||
|
JavaScript implementation is expected to call the success or fail
|
||||||
|
continuation explicitly.
|
||||||
|
|
||||||
|
As another example that takes advantage of the explicit continuation style:
|
||||||
|
@racketblock[
|
||||||
|
(define js-sleep
|
||||||
|
(js-async-function->procedure
|
||||||
|
"function(success, fail, x) { setTimeout(success, x); }"))
|
||||||
|
(js-sleep 1000)
|
||||||
|
]
|
||||||
|
|
||||||
|
Caveats: the lifted function does no auto-coersion of values.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1260,10 +1357,13 @@ to teach Scribble about them yet.
|
||||||
Displays an alert. Currently implemented using JavaScript's
|
Displays an alert. Currently implemented using JavaScript's
|
||||||
@litchar{alert} function.}
|
@litchar{alert} function.}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@defthing[body any/c]{
|
@defthing[body any/c]{
|
||||||
A JQuery-wrapped value representing the body of the DOM.
|
A JQuery-wrapped value representing the body of the DOM.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@defproc[(call-method [object any/c]
|
@defproc[(call-method [object any/c]
|
||||||
[method-name string?]
|
[method-name string?]
|
||||||
[arg any/c] ...) any/c]{
|
[arg any/c] ...) any/c]{
|
||||||
|
@ -1291,14 +1391,9 @@ For example,
|
||||||
body)]
|
body)]
|
||||||
will construct a @tt{h1} header, and append it to
|
will construct a @tt{h1} header, and append it to
|
||||||
the document body.
|
the document body.
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@defproc[(in-javascript-context?) boolean]{Returns true if the running context
|
@defproc[(in-javascript-context?) boolean]{Returns true if the running context
|
||||||
supports JavaScript-specific functions.}
|
supports JavaScript-specific functions.}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user