chiark / gitweb /
wip wasm
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Oct 2020 18:13:36 +0000 (19:13 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Oct 2020 18:13:36 +0000 (19:13 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Cargo.lock.example
Makefile
wasm/Cargo.toml
wasm/wasm.rs

index ad78b5a62c8627aab19efad4656ef326b7d6b765..19de0148d572f3e62ff007247f8b3e633aeecdda 100644 (file)
@@ -1127,6 +1127,7 @@ dependencies = [
 name = "otter-wasm"
 version = "0.0.1"
 dependencies = [
+ "fehler",
  "otter-zcoord",
  "wasm-bindgen",
 ]
index d227d4956eefad4023c2923212d455ebb4ab1937..86f65be624ab343ce69283085da385704141da57 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,9 @@ CARGO_TARGET_DIR ?= target
 USVG ?= usvg
 USVG_OPTIONS = "--sans-serif-family=DejaVu Sans"
 
+WASM_PACK ?= wasm-pack
+WASM_PACK_OPTIONS = --cargo-path=/bin/echo
+
 BUNDLE_SOURCES ?= bundle-rust-sources
 
 DEPLOY_ARCH=x86_64-unknown-linux-musl
@@ -58,6 +61,7 @@ endef
 
 $(eval $(call lp,BUNDLE_SOURCES,bundle-sources,debug,bundle-rust-sources))
 $(eval $(call lp,USVG,resvg,release,usvg))
+$(eval $(call lp,WASM_PACK,wasm-pack,debug,wasm-pack))
 
 #---------- variables defining bits of source etc. ----------
 
@@ -81,15 +85,26 @@ extra-release: bundled-sources
 
 #---------- cargo ----------
 
-CARGOES=$(foreach t, / /wasm-                  , \
-       $(addprefix $t,                         , \
-       check debug release))
+DR=debug release
+CARGOES=$(foreach t,/ /wasm-,$(addprefix $t,check $(DR)))
+
+X := $(shell echo >&2 PHONY $(addprefix cargo, $(CARGOES)))
 
 .PHONY: $(addprefix cargo, $(CARGOES))
 
-cargo/check cargo/debug:: cargo/%:; $(CARGO) test $(call cr,$*)
-cargo/wasm-%:; $(CARGO) -TWASM build -p otter-wasm $(call cr,$*)
-cargo/deploy-build: $(CARGO) -T$(DEPLOY_ARCH) build $(call cr,$(DEPLOY_RELEASE))
+$(addprefix cargo/,$(DR)):: cargo/%:
+       $(CARGO) test $(call cr,$*)
+
+$(addprefix cargo/wasm-,$(DR)):: cargo/wasm-%:
+       $(CARGO) -TWASM build -p otter-wasm $(call cr,$*)
+
+cargo/deploy-build:
+       $(CARGO) -T$(DEPLOY_ARCH) build $(call cr,$(DEPLOY_RELEASE))
+
+#---------- wasm ----------
+
+#WASM_ASSETS := $(addprefix otter_wasm,.js _bg.wasm)
+#WASM_OUTPUTS := $(addprefix otter_wasm,.d.ts 
 
 #---------- bundle-sources ----------
 
index 715c03c68607674f0b5c2471367745441a188668..e2f066e9706c386b9499f207463cc5935e4d3c38 100644 (file)
@@ -15,3 +15,4 @@ crate-type = ["cdylib"]
 [dependencies]
 otter-zcoord = { path = "../zcoord" }
 wasm-bindgen = "0.2"
+fehler = "1"
index d6c22dc9d77c2e14f3359bd6d349d79072313427..347ec4b30779ad82a98dbfb138b251a475551cc9 100644 (file)
@@ -1,5 +1,16 @@
 
 use wasm_bindgen::prelude::*;
+use fehler::throws;
+
+use zcoord::ZCoord;
 
 #[wasm_bindgen]
 pub struct ZCoordIterator (zcoord::Mutable);
+
+const X : &'static str = "invalid value passed to wasm";
+
+#[throws(JsValue)]
+#[wasm_bindgen]
+pub fn mutable(s: String) -> ZCoordIterator {
+  ZCoordIterator(ZCoord::from_str(&s).ok_or(X)?.clone_mut())
+}