test_parser: add option `-x` to output XML
[nit.git] / lib / emscripten.nit
index 7fc5e76..2277a51 100644 (file)
 # 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 <emscripten.h>
+       #include <gc.h>
 `}
 
-redef class String
+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); `}
 
-       fun escape_to_js: String do return self.replace('\n', "\\n")
+       # 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