summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile17
1 files changed, 11 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 71fb3f4a..2cbc4511 100644
--- a/Makefile
+++ b/Makefile
@@ -116,10 +116,15 @@ static/f/vndb.min.js: static/f/vndb.js
# v2-rw
-define cat-js
+# Patch the Javascript generated by Elm and append the elm/**.js files to it.
+# Patches include:
+# - Redirect calls from Lib.Ffi.* to window.elmFfi_*
+# - Patch the virtualdom diffing algorithm to always apply the 'selected' attribute
+define fix-js
sed -i 's/var author\$$project\$$Lib\$$Ffi\$$/var __unused__/g' $@
sed -Ei 's/author\$$project\$$Lib\$$Ffi\$$([a-zA-Z0-9_]+)/window.elmFfi_\1(_Json_wrap)/g' $@
- for fn in elm/*.js elm/*/*.js; do \
+ sed -Ei "s/([^ ]+) !== 'checked'/\\1 !== 'checked' \&\& \\1 !== 'selected'/g" $@
+ for fn in elm/*.js; do \
echo "(function(){'use strict';"; \
cat $$fn; \
echo "})();"; \
@@ -129,13 +134,13 @@ endef
elm/Gen/.generated: lib/VNWeb/*.pm lib/VNWeb/*/*.pm lib/VNDB/Types.pm lib/VNDB/Config.pm data/conf.pl
util/vndb.pl elmgen
-static/f/v2rw.js: elm/*.elm elm/*/*.elm elm/*.js elm/*/*.js elm/Gen/.generated | static/f
+static/f/v2rw.js: elm/*.elm elm/*/*.elm elm/*.js elm/Gen/.generated | static/f
cd elm && ELM_HOME=elm-stuff elm make *.elm */*.elm --output ../$@
- ${cat-js}
+ ${fix-js}
-static/f/v2rw.min.js: elm/*.elm elm/*/*.elm elm/*.js elm/*/*.js elm/Gen/.generated | static/f
+static/f/v2rw.min.js: elm/*.elm elm/*/*.elm elm/*.js elm/Gen/.generated | static/f
cd elm && ELM_HOME=elm-stuff elm make --optimize *.elm */*.elm --output ../$@
- ${cat-js}
+ ${fix-js}
uglifyjs $@ --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' | uglifyjs --mangle -o $@~
mv $@~ $@