From ef3b06edbd8dd5f31903fd4f2bed785c8a34c662 Mon Sep 17 00:00:00 2001 From: Jadon Fowler Date: Sun, 1 May 2016 22:36:42 -0700 Subject: [PATCH] Restrict size of Explanation on WebIDE (closes #58) and fix numbers The max size of the Explanation div is set to 25% of the window. The number parser for the Explanation didn't include 0. The regex has been updated. Signed-off-by: Jadon Fowler --- .gitignore | 3 ++- static/o.js | 16 ++++++++++++++-- static/parser.coffee | 6 +++--- static/parser.js | 4 ++-- templates/primary.html | 2 +- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index d2127ed..b973584 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ __pycache__/ heroku* log* docs/_* -*.stackdump \ No newline at end of file +*.stackdump +oide diff --git a/static/o.js b/static/o.js index a3927fa..e114076 100644 --- a/static/o.js +++ b/static/o.js @@ -33,7 +33,19 @@ function getExplanantion() { var e = parse(code); $("#explanation").html(e); var width = getMaxWidth() * 8; - $("#explanation").width(width); + $("#explanation").width(width > window.innerWidth * 0.25 ? window.innerWidth * 0.25 : width); + if ($("#explanation").height() > window.innerHeight * 0.25) $("#explanation").height(window.innerHeight * 0.25); +} + +function selectText(container) { + if (document.selection) { + var range = document.body.createTextRange(); + range.moveToElementText(document.getElementById(container)); + } else if (window.getSelection) { + var range = document.createRange(); + range.selectNode(document.getElementById(container)); + window.getSelection().addRange(range); + } } function updateUtils() { @@ -53,4 +65,4 @@ $(document).ready(function() { $('#code').on('input propertychange paste', function() { updateUtils(); }); -}); \ No newline at end of file +}); diff --git a/static/parser.coffee b/static/parser.coffee index 6be2d9b..688e4dd 100644 --- a/static/parser.coffee +++ b/static/parser.coffee @@ -16,7 +16,7 @@ stringExplanation = (string) -> new Explanation("\""+string+"\"", "Push string t charExplanation = (c) -> new Explanation("'"+c, " Push " + c + " to the stack\n") getExplanation = (c) -> - if c.match /[1-9A-F]/ + if c.match /[0-9A-F]/ numberExplanation c else if explanations[c] != undefined new Explanation c, explanations[c] + "\n" @@ -101,7 +101,7 @@ parse = (code) -> buffer = "" continue buffer += c - else if c.match /[1-9A-F]/ + else if c.match /[0-9A-F]/ events.push eventObj newNumber c else if c is "{" fcb = true @@ -204,4 +204,4 @@ explain = (events) -> maxWidth = g beforeSpaces += 1 e += s + "\n" - e \ No newline at end of file + e diff --git a/static/parser.js b/static/parser.js index 63e406a..f49054d 100644 --- a/static/parser.js +++ b/static/parser.js @@ -35,7 +35,7 @@ charExplanation = function(c) { }; getExplanation = function(c) { - if (c.match(/[1-9A-F]/)) { + if (c.match(/[0-9A-F]/)) { return numberExplanation(c); } else if (explanations[c] !== void 0) { return new Explanation(c, explanations[c] + "\n"); @@ -178,7 +178,7 @@ parse = function(code) { continue; } buffer += c; - } else if (c.match(/[1-9A-F]/)) { + } else if (c.match(/[0-9A-F]/)) { events.push(eventObj(newNumber(c))); } else if (c === "{") { fcb = true; diff --git a/templates/primary.html b/templates/primary.html index b8a8222..0935cee 100644 --- a/templates/primary.html +++ b/templates/primary.html @@ -42,7 +42,7 @@

Utilities


General Explanation (not always correct):

-

+