diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-09 08:23:11 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-09 08:23:11 +0200 |
commit | 99594791e0c34aee3659370b8c2072df815c9051 (patch) | |
tree | 5a523d3cbd3aec55a9bbf97beda7bff7605e9b62 /theme/javascript | |
parent | 1b432288f041baef2ebe54c96a7a86f547b14c67 (diff) | |
parent | 2cc23b7e3411e1748bc8a25114a7bf9185a210f1 (diff) | |
download | gitbook-99594791e0c34aee3659370b8c2072df815c9051.zip gitbook-99594791e0c34aee3659370b8c2072df815c9051.tar.gz gitbook-99594791e0c34aee3659370b8c2072df815c9051.tar.bz2 |
Merge Optional github
Diffstat (limited to 'theme/javascript')
-rw-r--r-- | theme/javascript/core/exercise.js | 3 | ||||
-rw-r--r-- | theme/javascript/execute/javascript.js | 5 | ||||
-rw-r--r-- | theme/javascript/utils/execute.js | 18 |
3 files changed, 18 insertions, 8 deletions
diff --git a/theme/javascript/core/exercise.js b/theme/javascript/core/exercise.js index f890f2a..5219546 100644 --- a/theme/javascript/core/exercise.js +++ b/theme/javascript/core/exercise.js @@ -8,6 +8,7 @@ define([ var prepareExercise = function($exercise) { var codeSolution = $exercise.find(".code-solution").text(); var codeValidation = $exercise.find(".code-validation").text(); + var codeContext = $exercise.find(".code-context").text(); var editor = ace.edit($exercise.find(".editor").get(0)); editor.setTheme("ace/theme/tomorrow"); @@ -20,7 +21,7 @@ define([ analytic.track("exercise.submit"); - execute("javascript", editor.getValue(), codeValidation, function(err, result) { + execute("javascript", editor.getValue(), codeValidation, codeContext, function(err, result) { $exercise.toggleClass("return-error", err != null); $exercise.toggleClass("return-success", err == null); if (err) $exercise.find(".alert-danger").text(err.message || err); diff --git a/theme/javascript/execute/javascript.js b/theme/javascript/execute/javascript.js index d967038..ddbc2c1 100644 --- a/theme/javascript/execute/javascript.js +++ b/theme/javascript/execute/javascript.js @@ -2,6 +2,7 @@ define(function() { return { id: "javascript", assertCode: "function assert(condition, message) { \nif (!condition) { \n throw message || \"Assertion failed\"; \n } \n }\n", - REPL: JSREPL + REPL: JSREPL, + sep: ";\n", }; -});
\ No newline at end of file +}); diff --git a/theme/javascript/utils/execute.js b/theme/javascript/utils/execute.js index 76033f6..eb2a19b 100644 --- a/theme/javascript/utils/execute.js +++ b/theme/javascript/utils/execute.js @@ -71,13 +71,21 @@ define([ repl.loadLanguage(lang.id, eventHandler); }; - var execute = function(lang, solution, validation, callback) { + var execute = function(lang, solution, validation, context, callback) { + // Language data + var langd = LANGUAGES[lang]; + // Check language is supported - if (!LANGUAGES[lang]) return callback(new Error("Language '"+lang+"' not available for execution")); + if (!langd) return callback(new Error("Language '"+lang+"' not available for execution")); // Validate with validation code - var code = [solution, LANGUAGES[lang].assertCode, validation].join(";\n"); - evalJS(LANGUAGES[lang], code, function(err, res) { + var code = [ + context, + solution, + langd.assertCode, + validation, + ].join(langd.sep); + evalJS(langd, code, function(err, res) { if(err) return callback(err); if (res.type == "error") callback(new Error(res.value)); @@ -86,4 +94,4 @@ define([ }; return execute; -});
\ No newline at end of file +}); |