llamameta's picture
Update app.py
195a929 verified
# app.py
import streamlit as st
def escape_for_template(text: str) -> str:
"""
Escape backticks and `${…}` so the content
bisa dimasukkan mentah ke dalam JS template literal.
"""
# escape backslash dulu agar hasil replace nggak kacau
text = text.replace("\\", "\\\\")
# escape backtick
text = text.replace("`", "\\`")
# escape ${ so JS gak nge-evaluate sebagai placeholder
text = text.replace("${", "\\${")
return text
st.set_page_config(page_title="CF Worker Escaper")
st.title("🔧 Cloudflare Worker Escaper")
st.markdown(
"""
Upload **index.html** dan **script.js**,
nanti akan keluar:
```js
const html = `...escaped-html...`;
const script = `...escaped-js...`;
```
siap copy–paste ke `worker.js`.
"""
)
uploaded_html = st.file_uploader("📄 Upload index.html", type=["html","htm"])
uploaded_js = st.file_uploader("📄 Upload script.js", type=["js"])
if uploaded_html and uploaded_js:
try:
html_text = uploaded_html.read().decode("utf-8")
js_text = uploaded_js.read().decode("utf-8")
except UnicodeDecodeError:
st.error("Gagal decode file. Pastikan UTF-8.")
st.stop()
esc_html = escape_for_template(html_text)
esc_js = escape_for_template(js_text)
st.subheader("▶️ Generated Constants")
const_block = (
f"const html = `{esc_html}`;\n\n"
f"const script = `{esc_js}`;\n"
)
st.code(const_block, language="javascript")
st.download_button(
"💾 Download as escaped_constants.js",
const_block,
file_name="escaped_constants.js",
mime="application/javascript"
)