UNPKG

gitbook-plugin-jazer

Version:

Gitbook exercises validated through a XRegExp and Javascript (work in progress)

73 lines (47 loc) 1.71 kB
require(["gitbook"],function(gitbook){ var prepareExercise = function($questionjs) { var codeSolution = $questionjs.find(".editor").attr('data-solution'); var codeValidation = $questionjs.find(".editor").attr('data-validation'); var correct = $questionjs.find(".correct"); var fail = $questionjs.find(".fail"); var editor = ace.edit($questionjs.find(".editor").get(0)); editor.setTheme("ace/theme/dreamweaver"); if($questionjs.find(".editor").attr('data-gutter') === "true"){ editor.renderer.setShowGutter(true); }else{ editor.renderer.setShowGutter(false); } try{ eval('var test = '+ codeValidation); }catch(e){ alert('Function error = '+ e); } // Submit: test code $questionjs.find(".submit").click(function(e) { e.preventDefault(); var textSolution = editor.getValue(); var respuesta = test(textSolution); correct.removeClass('show'); fail.removeClass('show'); if(respuesta){ correct.addClass('show'); }else{ fail.addClass('show'); } }); // Set solution $questionjs.find(".solution").click(function(e) { e.preventDefault(); correct.removeClass('show'); fail.removeClass('show'); editor.setValue(codeSolution); }); }; // Prepare all regexps var init = function() { gitbook.state.$book.find(".questionjs").each(function() { prepareExercise($(this)); }); }; gitbook.events.bind("page.change", init); });