summaryrefslogtreecommitdiffstats
path: root/theme/javascript/utils/execute.js
diff options
context:
space:
mode:
authorAaron O'Mullan <aaron.omullan@friendco.de>2014-04-08 16:58:04 -0700
committerAaron O'Mullan <aaron.omullan@friendco.de>2014-04-08 16:58:04 -0700
commit9265b0185aaabd04552c61a56e0aed470a0e5dd7 (patch)
tree070fa43d59eaf06e8e9cf45fb74ab4fc4ad41ed3 /theme/javascript/utils/execute.js
parent392573a9905a36d4a6c3cc1947c533f742b653a2 (diff)
downloadgitbook-9265b0185aaabd04552c61a56e0aed470a0e5dd7.zip
gitbook-9265b0185aaabd04552c61a56e0aed470a0e5dd7.tar.gz
gitbook-9265b0185aaabd04552c61a56e0aed470a0e5dd7.tar.bz2
Add context code support to exercises (optional)
Partial #52, fixes #49, fixes #46
Diffstat (limited to 'theme/javascript/utils/execute.js')
-rw-r--r--theme/javascript/utils/execute.js18
1 files changed, 13 insertions, 5 deletions
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
+});