From 3c1bc9c95dcc02acf84aa90e3f8ea87a1865bfb3 Mon Sep 17 00:00:00 2001 From: Steven Spungin Date: Thu, 4 Apr 2024 09:37:13 -0400 Subject: [PATCH 1/2] Add ES6 download button --- CHANGELOG.md | 1 + docs/css/content.css | 9 ++++++--- docs/js/online.js | 19 +++++++++++++++++++ docs/online.html | 7 ++++--- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9554c717..0be52447 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Unreleased ### Breaking changes ### New features +- [#509](https://github.com/peggyjs/peggy/pull/509) Add and implement ES6 export button ### Bug fixes - [#507](https://github.com/peggyjs/peggy/pull/507) Remove stray semicolon in CSS diff --git a/docs/css/content.css b/docs/css/content.css index 0bc4eb7d..a4848fb2 100644 --- a/docs/css/content.css +++ b/docs/css/content.css @@ -139,7 +139,7 @@ #content #settings label { padding-right: 1em; } #content #parser-var { width: 15em; } #content #options { padding-top: 1em; } -#content #parser-download { +#content .download-button { float: right; width: 10em; margin-top: 2em; @@ -151,8 +151,11 @@ text-align: center; text-decoration: none; color: #e0ffe0; background-color: #499149; } -#content #parser-download:hover { background-color: #006000; } -#content #parser-download.disabled { color: #e0e0e0; background-color: gray; } +#content .download-button:not(:first-of-type) { + margin-right: .5rem; +} +#content .download-button:hover { background-color: #006000; } +#content .download-button.disabled { color: #e0e0e0; background-color: gray; } #output { diff --git a/docs/js/online.js b/docs/js/online.js index 6d09c2f4..44ae2017 100644 --- a/docs/js/online.js +++ b/docs/js/online.js @@ -94,6 +94,7 @@ $(document).ready(function() { $("#parser-var").attr("disabled", "disabled"); $("#option-cache").attr("disabled", "disabled"); $("#parser-download").attr("disabled", "disabled"); + $("#parser-download-es6").attr("disabled", "disabled"); try { var timeBefore = (new Date).getTime(); @@ -134,6 +135,7 @@ $(document).ready(function() { $("#parser-var").removeAttr("disabled"); $("#option-cache").removeAttr("disabled"); $("#parser-download").removeAttr("disabled"); + $("#parser-download-es6").removeAttr("disabled"); var result = true; } catch (e) { @@ -230,6 +232,23 @@ $(document).ready(function() { }); + $( "#parser-download-es6" ) + .click(function(){ + try { // If this button was enabled, the source was already validated by 'rebuildGrammar' + const esSource = peggy.generate(editor.getValue(), { + cache: $("#option-cache").is(":checked"), + output: "source", + format: 'es' + }) + + var blob = new Blob([esSource], {type: "application/javascript"}); + window.saveAs(blob, "parser.js"); + } catch (e) { + console.error('Unable to save parser', e); + } + + }); + doLayout(); $(window).resize(doLayout); diff --git a/docs/online.html b/docs/online.html index 5764f3de..9708d283 100644 --- a/docs/online.html +++ b/docs/online.html @@ -121,10 +121,11 @@

- + +
- - + +
From 23ffc3e285e81cce65b1a702be1d7ca98f525a04 Mon Sep 17 00:00:00 2001 From: Steven Spungin Date: Thu, 4 Apr 2024 12:09:21 -0400 Subject: [PATCH 2/2] Use .mjs extension for exported ES6 parser --- docs/js/online.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/js/online.js b/docs/js/online.js index 44ae2017..486b0ca0 100644 --- a/docs/js/online.js +++ b/docs/js/online.js @@ -242,7 +242,7 @@ $(document).ready(function() { }) var blob = new Blob([esSource], {type: "application/javascript"}); - window.saveAs(blob, "parser.js"); + window.saveAs(blob, "parser.mjs"); } catch (e) { console.error('Unable to save parser', e); }