summaryrefslogtreecommitdiffstats
path: root/theme/javascript
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-04-09 08:23:11 +0200
committerSamy Pessé <samypesse@gmail.com>2014-04-09 08:23:11 +0200
commit99594791e0c34aee3659370b8c2072df815c9051 (patch)
tree5a523d3cbd3aec55a9bbf97beda7bff7605e9b62 /theme/javascript
parent1b432288f041baef2ebe54c96a7a86f547b14c67 (diff)
parent2cc23b7e3411e1748bc8a25114a7bf9185a210f1 (diff)
downloadgitbook-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.js3
-rw-r--r--theme/javascript/execute/javascript.js5
-rw-r--r--theme/javascript/utils/execute.js18
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
+});