From e11a3fc4e5ea1bbe1d9b2a4a2569d4ccab1f68b3 Mon Sep 17 00:00:00 2001 From: He4eT Date: Mon, 23 Jun 2025 16:35:32 +0200 Subject: [PATCH] es3: add polyfills and scripts --- Makefile | 6 ++++++ polyfills/inject.sh | 10 ++++++++++ polyfills/polyfills.js | 30 ++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100755 polyfills/inject.sh create mode 100644 polyfills/polyfills.js diff --git a/Makefile b/Makefile index c2d1217..c22817a 100644 --- a/Makefile +++ b/Makefile @@ -38,4 +38,10 @@ import_cover: ${tic_cli} \ 'load ${game_src} & import screen ${cover_src} & exit' +build_es3: + npm run build + ./polyfills/inject.sh + @make release + git restore ${game_src} + # vim: set ts=4 sw=4 autoindent noexpandtab: diff --git a/polyfills/inject.sh b/polyfills/inject.sh new file mode 100755 index 0000000..b88d216 --- /dev/null +++ b/polyfills/inject.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +POLYFILLS_FILE="./polyfills/polyfills.js" +GAME_FILE="game.js" +TEMP_FILE="merged_game.js" + +sed -i 's/TIC()/_()/' "$GAME_FILE" + +cat "$POLYFILLS_FILE" "$GAME_FILE" > "$TEMP_FILE" +mv "$TEMP_FILE" "$GAME_FILE" diff --git a/polyfills/polyfills.js b/polyfills/polyfills.js new file mode 100644 index 0000000..9c14404 --- /dev/null +++ b/polyfills/polyfills.js @@ -0,0 +1,30 @@ +// script: js +function TIC() { + gameScreens[currentScreen]() +} + +Object.fromEntries = function (entries) { + var obj = {} + for (var i = 0; i < entries.length; i++) { + var entry = entries[i] + var key = entry[0] + var value = entry[1] + obj[key] = value + } + return obj +} + +String.prototype.padStart = function padStart(targetLength, padString) { + padString = typeof padString !== 'undefined' ? String(padString) : ' ' + var str = String(this) + if (str.length >= targetLength) { + return str + } + var padding = '' + var padLength = targetLength - str.length + while (padding.length < padLength) { + padding += padString + } + padding = padding.slice(0, padLength) + return padding + str +}