X-Git-Url: http://nitlanguage.org diff --git a/lib/emscripten.nit b/lib/emscripten.nit index 65fe1f4..2277a51 100644 --- a/lib/emscripten.nit +++ b/lib/emscripten.nit @@ -14,4 +14,33 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Platform for the _emscripten_ framework +# +# Importing this module from your project will tell `nitg` to compile +# to JavaScript for the _emscripten_ framework. module emscripten is platform + +`{ + #include + #include +`} + +redef class Text + # Run `self` as JavaScript code + fun run_js do run_js_native(self.escape_to_js.to_cstring) + + private fun run_js_native(script: NativeString) `{ emscripten_run_script(script); `} + + # Escape the content of `self` to pass to JavaScript code + fun escape_to_js: Text do return replace('\n', "\\n") + + # Raise a JavaScript alert + fun alert do "alert('{self.escape_to_js}')".run_js +end + +redef class Sys + redef fun force_garbage_collection `{ GC_FORCE_COLLECT(); `} + + # The emscripten GC *must* be manually invoked, it will not act by itself + fun suggest_garbage_collection `{ GC_MAYBE_COLLECT(); `} +end