summaryrefslogtreecommitdiffstats
path: root/theme/javascript
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2014-08-10 14:44:06 -0700
committerSamy Pessé <samypesse@gmail.com>2014-08-11 07:36:52 -0700
commit6c62d75eae4001793dd10702efca7d0b30e3eb39 (patch)
tree7617f56217485dbf4cc5e71c54992069e67470cc /theme/javascript
parentbcfcf3d9792b6e6e3e27e250e6d2d64232e67f5a (diff)
downloadgitbook-6c62d75eae4001793dd10702efca7d0b30e3eb39.zip
gitbook-6c62d75eae4001793dd10702efca7d0b30e3eb39.tar.gz
gitbook-6c62d75eae4001793dd10702efca7d0b30e3eb39.tar.bz2
Remove exercises execution
Diffstat (limited to 'theme/javascript')
-rwxr-xr-xtheme/javascript/core/exercise.js63
-rwxr-xr-xtheme/javascript/core/navigation.js6
-rw-r--r--theme/javascript/core/quiz.js3
-rwxr-xr-xtheme/javascript/execute/javascript.js8
-rwxr-xr-xtheme/javascript/gitbook.js3
-rwxr-xr-xtheme/javascript/utils/execute.js97
6 files changed, 5 insertions, 175 deletions
diff --git a/theme/javascript/core/exercise.js b/theme/javascript/core/exercise.js
deleted file mode 100755
index 52791a4..0000000
--- a/theme/javascript/core/exercise.js
+++ /dev/null
@@ -1,63 +0,0 @@
-define([
- "jQuery",
- "ace/ace",
- "ace/theme-tomorrow",
- "ace/mode-javascript",
- "utils/execute",
- "core/events",
- "core/state"
-], function($, _ace, _aceTheme, _aceMode, execute, events, state){
-
- // Bind an exercise
- 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");
- editor.getSession().setUseWorker(false);
- editor.getSession().setMode("ace/mode/javascript");
-
- editor.commands.addCommand({
- name: "submit",
- bindKey: "Ctrl-Return|Cmd-Return",
- exec: function() {
- $exercise.find(".action-submit").click();
- }
- });
-
- // Submit: test code
- $exercise.find(".action-submit").click(function(e) {
- e.preventDefault();
-
- events.trigger("exercise.submit", {type: "code"});
-
- 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);
- });
- });
-
- // Set solution
- $exercise.find(".action-solution").click(function(e) {
- e.preventDefault();
-
- editor.setValue(codeSolution);
- editor.gotoLine(0);
- });
- };
-
- // Prepare all exercise
- var init = function() {
- state.$book.find("section.exercise").each(function() {
- prepareExercise($(this));
- });
- };
-
- return {
- init: init,
- prepare: prepareExercise
- };
-});
diff --git a/theme/javascript/core/navigation.js b/theme/javascript/core/navigation.js
index bcf7e65..04bb031 100755
--- a/theme/javascript/core/navigation.js
+++ b/theme/javascript/core/navigation.js
@@ -4,11 +4,10 @@ define([
"core/events",
"core/state",
"core/progress",
- "core/exercise",
"core/quiz",
"core/loading",
"core/search"
-], function($, URL, events, state, progress, exercises, quiz, loading, search) {
+], function($, URL, events, state, progress, quiz, loading, search) {
var prev, next;
var usePushState = (typeof history.pushState !== "undefined");
@@ -76,8 +75,7 @@ define([
var preparePage = function() {
var $pageWrapper = $(".book-body .page-wrapper");
- // Bind exercises/quiz
- exercises.init();
+ // Bind quiz
quiz.init();
// Show progress
diff --git a/theme/javascript/core/quiz.js b/theme/javascript/core/quiz.js
index d34af48..ef31b40 100644
--- a/theme/javascript/core/quiz.js
+++ b/theme/javascript/core/quiz.js
@@ -1,9 +1,8 @@
define([
"jQuery",
- "utils/execute",
"core/events",
"core/state"
-], function($, execute, events, state){
+], function($, events, state){
// Bind an exercise
var prepareQuiz = function($quiz) {
diff --git a/theme/javascript/execute/javascript.js b/theme/javascript/execute/javascript.js
deleted file mode 100755
index ddbc2c1..0000000
--- a/theme/javascript/execute/javascript.js
+++ /dev/null
@@ -1,8 +0,0 @@
-define(function() {
- return {
- id: "javascript",
- assertCode: "function assert(condition, message) { \nif (!condition) { \n throw message || \"Assertion failed\"; \n } \n }\n",
- REPL: JSREPL,
- sep: ";\n",
- };
-});
diff --git a/theme/javascript/gitbook.js b/theme/javascript/gitbook.js
index d0741cb..5798dfa 100755
--- a/theme/javascript/gitbook.js
+++ b/theme/javascript/gitbook.js
@@ -48,6 +48,7 @@ define([
return {
start: start,
- events: events
+ events: events,
+ state: state
};
});
diff --git a/theme/javascript/utils/execute.js b/theme/javascript/utils/execute.js
deleted file mode 100755
index eb2a19b..0000000
--- a/theme/javascript/utils/execute.js
+++ /dev/null
@@ -1,97 +0,0 @@
-define([
- "execute/javascript"
-], function(javascript) {
- var LANGUAGES = {
- "javascript": javascript
- };
-
-
- var evalJS = function(lang, code, callback) {
- var ready = false;
- var finished = false;
-
- var finish = function() {
- if(finished) {
- return console.error('Already finished');
- }
- finished = true;
- return callback.apply(null, arguments);
- };
-
- var repl;
-
- // Handles all our events
- var eventHandler = function(data, eventType) {
- console.log([eventType, data]);
- switch(eventType) {
- case 'progress':
- // Update UI loading bar
- break;
- case 'timeout':
- finish(new Error(data));
- break;
- case 'result':
- finish(null, {
- value: data,
- type: 'result'
- });
- break;
- case 'error':
- if(ready) {
- return finish(null, {
- value: data,
- type: 'error'
- });
- }
- return finish(new Error(data));
- break
- case 'ready':
- // We're good to get results and stuff back now
- ready = true;
- // Eval our code now that the runtime is ready
- repl.eval(code);
- break;
- default:
- console.log('Unhandled event =', eventType, 'data =', data);
- }
- };
-
- repl = new lang.REPL({
- input: eventHandler,
- output: eventHandler,
- result: eventHandler,
- error: eventHandler,
- progress: eventHandler,
- timeout: {
- time: 30000,
- callback: eventHandler
- }
- });
-
- repl.loadLanguage(lang.id, eventHandler);
- };
-
- var execute = function(lang, solution, validation, context, callback) {
- // Language data
- var langd = LANGUAGES[lang];
-
- // Check language is supported
- if (!langd) return callback(new Error("Language '"+lang+"' not available for execution"));
-
- // Validate with validation code
- 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));
- else callback(null, res.value);
- });
- };
-
- return execute;
-});