From 5f0bfb8c61722a56ff2628340b2a93c235824a38 Mon Sep 17 00:00:00 2001 From: William Bell Date: Sun, 17 Mar 2024 23:59:28 +0000 Subject: [PATCH] add markdown support for documents and verify repo url shape --- iso-lock.json | 2 +- routes/website/package.ar | 3 ++- routes/website/package/create.ar | 5 +++-- routes/website/package/edit.ar | 6 ++++-- static/styles.css | 15 +++++++++------ templates/package.html | 3 ++- 6 files changed, 21 insertions(+), 13 deletions(-) diff --git a/iso-lock.json b/iso-lock.json index a267169..a08bcfd 100644 --- a/iso-lock.json +++ b/iso-lock.json @@ -1 +1 @@ -[{"Name":"bleach.ar","Version":"1.0.0","URL":"https://isotope.wbell.dev/isotope-download?version=1.0.0\u0026name=bleach.ar","Remote":"isotope.wbell.dev"},{"Name":"shlex.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=shlex.ar\u0026version=1.0.1","Remote":"isotope.wbell.dev"},{"Name":"neon.ar","Version":"beta1.0.2","URL":"https://isotope.wbell.dev/isotope-download?name=neon.ar\u0026version=beta1.0.2","Remote":"isotope.wbell.dev"},{"Name":"url.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=url.ar\u0026version=1.0.1","Remote":"isotope.wbell.dev"},{"Name":"http.ar","Version":"1.1.2","URL":"https://isotope.wbell.dev/isotope-download?name=http.ar\u0026version=1.1.2","Remote":"isotope.wbell.dev"}] +[{"Name":"bleach.ar","Version":"1.0.0","URL":"https://isotope.wbell.dev/isotope-download?name=bleach.ar\u0026version=1.0.0","Remote":"isotope.wbell.dev"},{"Name":"shlex.ar","Version":"1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=shlex.ar\u0026version=1.0.1","Remote":"isotope.wbell.dev"},{"Name":"neon.ar","Version":"beta1.0.2","URL":"https://isotope.wbell.dev/isotope-download?name=neon.ar\u0026version=beta1.0.2","Remote":"isotope.wbell.dev"},{"Name":"url.ar","Version":"1.0.2","URL":"https://isotope.wbell.dev/isotope-download?name=url.ar\u0026version=1.0.2","Remote":"isotope.wbell.dev"},{"Name":"http.ar","Version":"1.1.2","URL":"https://isotope.wbell.dev/isotope-download?name=http.ar\u0026version=1.1.2","Remote":"isotope.wbell.dev"},{"Name":"markdown.ar","Version":"beta1.0.1","URL":"https://isotope.wbell.dev/isotope-download?name=markdown.ar\u0026version=beta1.0.1","Remote":"isotope.wbell.dev"}] diff --git a/routes/website/package.ar b/routes/website/package.ar index 836aee8..8b00e4e 100644 --- a/routes/website/package.ar +++ b/routes/website/package.ar @@ -6,6 +6,7 @@ import "bleach.ar" as bleach import "shlex.ar" as shlex import "render" as render import "commaNumbers" as * +import "markdown.ar" as markdown let package(req, res) = do let acc = account.getByToken(req.cookies.get_value("token", "")) @@ -54,5 +55,5 @@ let package(req, res) = do let edit = "" if (acc != null && acc.id == author.id) do edit = "

Edit

" - res.renderTemplate("package.html", {name:name, description: package.get_value("description", ""), 'short-description': package.get_value("short-description", ""), 'downloads': commaSeperatedNumber(package.get_value("downloads", 0)), keywords:package.get_value("keywords", []).join(', '), repository:package.get_value("repository", "https://github.com/"), license: package.get_value("license", "Unspecified"), author: author.username, authorPage: '/author?'+url.queryStr({id:author.id}), version:version, versions:versions.join(""), command:command, commandComma:command.replace("'", "\\'"), editButton: edit}) + res.renderTemplate("package.html", {name:name, description: markdown.markdown(package.get_value("description", "")), 'short-description': package.get_value("short-description", ""), 'downloads': commaSeperatedNumber(package.get_value("downloads", 0)), keywords:package.get_value("keywords", []).join(', '), repository:package.get_value("repository", "https://github.com/"), license: package.get_value("license", "Unspecified"), author: author.username, authorPage: '/author?'+url.queryStr({id:author.id}), version:version, versions:versions.join(""), command:command, commandComma:command.replace("'", "\\'"), editButton: edit}) app.get("/package", package) \ No newline at end of file diff --git a/routes/website/package/create.ar b/routes/website/package/create.ar index 08ccecd..5350257 100644 --- a/routes/website/package/create.ar +++ b/routes/website/package/create.ar @@ -29,8 +29,9 @@ let newPackage(req, res) = do if (license == "") do errResp("License cannot be empty") return - if (repository == "") do - errResp("Repository cannot be empty") + let repositoryURL = url.URL(repository) + if (not (repositoryURL.protocol && repositoryURL.host && repositoryURL.path)) do + errResp("upload a valid repository URL") return if (keywords == "") do errResp("Keywords cannot be empty") diff --git a/routes/website/package/edit.ar b/routes/website/package/edit.ar index bde72ad..a32ef3d 100644 --- a/routes/website/package/edit.ar +++ b/routes/website/package/edit.ar @@ -31,8 +31,10 @@ let editPackage(req, res) = do if (license == "") do errResp("License cannot be empty") return - if (repository == "") do - errResp("Repository cannot be empty") + let repositoryURL = url.URL(repository) + term.log(repositoryURL, repository) + if (not (repositoryURL.protocol && repositoryURL.host && repositoryURL.path)) do + errResp("upload a valid repository URL") return if (keywords == "") do errResp("Keywords cannot be empty") diff --git a/static/styles.css b/static/styles.css index 459d6e1..f50048e 100644 --- a/static/styles.css +++ b/static/styles.css @@ -185,6 +185,15 @@ input:focus { color: var(--accent) !important; } + +.md_pre { + background-color: var(--secondary); + border-radius: 10px; + padding: 1rem; + border: 1px solid var(--primary); + overflow-x: auto; +} + .copyable-pre { background-color: var(--secondary); border-radius: 10px; @@ -205,12 +214,6 @@ input:focus { word-wrap: break-word; } -.description { - font-family: 'Trebuchet MS'; - white-space: pre-wrap; - word-wrap: break-word; -} - .form { width: 100%; max-width: 500px; diff --git a/templates/package.html b/templates/package.html index af55af5..12d5765 100644 --- a/templates/package.html +++ b/templates/package.html @@ -60,7 +60,6 @@
{{%editButton}}

{{name}}@{{version}}

-
{{description}}
@@ -83,6 +82,8 @@ onclick="copyToClipboard(event.target.dataset.command)" data-command="{{command}}" >{{command}}
📋 Click to Copy
+
+
{{%description}}

{{downloads}} download(s)