misc/vim: inform the user when no results are found
[nit.git] / lib / emscripten.nit
index 65fe1f4..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 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