Skip to content
Browse files

Update preview on keystroke

Also removes need to check for unfinished html comments
  • Loading branch information...
1 parent e8d9e31 commit 159b2029400dfdb25ac9f8a2e5c838d3e736d155 @BerkeleyTrue BerkeleyTrue committed
View
29 client/commonFramework/end.js
@@ -7,12 +7,15 @@ $(document).ready(function() {
init($);
});
- common.editorKeyUp$
+ const code$ = common.editorKeyUp$
.debounce(750)
.map(() => common.editor.getValue())
.distinctUntilChanged()
.doOnNext(() => console.log('updating value'))
- .subscribe(
+ .shareReplay();
+
+ // update storage
+ code$.subscribe(
code => {
common.codeStorage.updateStorage(common.challengeName, code);
common.codeUri.querify(code);
@@ -20,6 +23,28 @@ $(document).ready(function() {
err => console.error(err)
);
+ code$
+ .flatMap(code => {
+ if (common.hasJs(code)) {
+ return common.detectLoops$(code)
+ .flatMap(
+ ({ err }) => err ? Observable.throw(err) : Observable.just(code)
+ );
+ }
+ return Observable.just(code);
+ })
+ .flatMap(code => common.updatePreview$(code))
+ .catch(err => Observable.just({ err }))
+ .subscribe(
+ ({ err }) => {
+ if (err) {
+ return console.error(err);
+ }
+ console.log('updating preview');
+ },
+ err => console.error(err)
+ );
+
common.resetBtn$
.doOnNext(() => {
common.editor.setValue(common.replaceSafeTags(common.seed));
View
14 client/commonFramework/execute-challenge-stream.js
@@ -60,20 +60,6 @@ window.common = (function(global) {
});
}
- if (common.challengeType === '0') {
- let openingComments = code.match(/\<\!\-\-/gi);
- let closingComments = code.match(/\-\-\>/gi) || [];
- if (
- openingComments &&
- openingComments.length > closingComments.length
- ) {
- return Observable.throw({
- err: 'SyntaxError: Unfinished HTML comment',
- code
- });
- }
- }
-
if (code.match(detectUnsafeConsoleCall)) {
return Observable.throw({
err: 'Invalid if (null) console.log(1); detected',
View
2 client/commonFramework/update-preview.js
@@ -43,7 +43,7 @@ window.common = (function(global) {
.map(script => `<script>${script}</script>`)
.flatMap(script => {
preview.open();
- preview.write(libraryIncludes + code + script);
+ preview.write(libraryIncludes + code + '<!-- -->' + script);
preview.close();
return Observable.fromCallback($(preview).ready, $(preview))()
.first()

0 comments on commit 159b202

Please sign in to comment.
Something went wrong with that request. Please try again.