From 23d5341e7cbb9026ef5a71f5cf4c0326e771ecb3 Mon Sep 17 00:00:00 2001 From: Lauren McCarthy Date: Fri, 26 Aug 2016 14:22:58 -0400 Subject: [PATCH 1/3] getting a little closer with console output line number #36 --- client/modules/IDE/components/PreviewFrame.js | 110 +++++++++++------- 1 file changed, 66 insertions(+), 44 deletions(-) diff --git a/client/modules/IDE/components/PreviewFrame.js b/client/modules/IDE/components/PreviewFrame.js index a7fd872a..9d505e51 100644 --- a/client/modules/IDE/components/PreviewFrame.js +++ b/client/modules/IDE/components/PreviewFrame.js @@ -3,55 +3,74 @@ import ReactDOM from 'react-dom'; import escapeStringRegexp from 'escape-string-regexp'; import srcDoc from 'srcdoc-polyfill'; -const hijackConsoleScript = ``; + `; +} class PreviewFrame extends React.Component { @@ -146,7 +165,10 @@ class PreviewFrame extends React.Component { htmlFile = htmlFile.replace(/(?:)([\s\S]*?)(?:<\/head>)/gmi, `\n${htmlHeadContents}\n`); } - htmlFile += hijackConsoleScript; + var lineOffset = htmlFile.substring(0, htmlFile.indexOf('`); + htmlFile = htmlFile.replace(fileRegex, ``); }); this.props.cssFiles.forEach(cssFile => { @@ -165,10 +185,8 @@ class PreviewFrame extends React.Component { htmlFile = htmlFile.replace(/(?:)([\s\S]*?)(?:<\/head>)/gmi, `\n${htmlHeadContents}\n`); } - var lineOffset = htmlFile.substring(0, htmlFile.indexOf('`; + return s; } class PreviewFrame extends React.Component { @@ -134,6 +140,7 @@ class PreviewFrame extends React.Component { injectLocalFiles() { let htmlFile = this.props.htmlFile.content; + let scriptOffs = []; // have to build the array manually because the spread operator is only // one level down... @@ -141,9 +148,10 @@ class PreviewFrame extends React.Component { this.props.jsFiles.forEach(jsFile => { const newJSFile = { ...jsFile }; let jsFileStrings = newJSFile.content.match(/(['"])((\\\1|.)*?)\1/gm); + const jsFileRegex = /^('|")(?!(http:\/\/|https:\/\/)).*\.(png|jpg|jpeg|gif|bmp|mp3|wav|aiff|ogg|json)('|")$/i; jsFileStrings = jsFileStrings || []; jsFileStrings.forEach(jsFileString => { - if (jsFileString.match(/^('|")(?!(http:\/\/|https:\/\/)).*\.(png|jpg|jpeg|gif|bmp|mp3|wav|aiff|ogg|json)('|")$/i)) { + if (jsFileString.match(jsFileRegex)) { const filePath = jsFileString.substr(1, jsFileString.length - 2); let fileName = filePath; if (fileName.match(/^\.\//)) { @@ -164,7 +172,8 @@ class PreviewFrame extends React.Component { jsFiles.forEach(jsFile => { const fileName = escapeStringRegexp(jsFile.name); const fileRegex = new RegExp(`([\s\S]*?)<\/script>`, 'gmi'); - htmlFile = htmlFile.replace(fileRegex, ``); + const replacementString = ``; + htmlFile = htmlFile.replace(fileRegex, replacementString); }); this.props.cssFiles.forEach(cssFile => { @@ -185,7 +194,7 @@ class PreviewFrame extends React.Component { htmlFile = htmlFile.replace(/(?:)([\s\S]*?)(?:<\/head>)/gmi, `\n${htmlHeadContents}\n`); } - var scriptOffs = getAllScriptOffsets(htmlFile); + scriptOffs = getAllScriptOffsets(htmlFile); htmlFile += hijackConsoleScript(JSON.stringify(scriptOffs)); return htmlFile;