Sha256: 3f8148840e58063bc5704701c4ae22b97903100c5a70a93465a7a35d2eaa3158
Contents?: true
Size: 1.54 KB
Versions: 36
Compression:
Stored size: 1.54 KB
Contents
var mumuki = mumuki || {}; (function (mumuki) { var lastSubmission = {}; function Laboratory(exerciseId){ this.exerciseId = exerciseId; } function asString(json){ return JSON.stringify(json); } function sameAsLastSolution(newSolution){ return asString(lastSubmission.content) === asString(newSolution); } function lastSubmissionFinishedSuccessfully(){ return lastSubmission.result && lastSubmission.result.status !== 'aborted'; } function sendNewSolution(solution){ var token = new mumuki.CsrfToken(); var request = token.newRequest({ type: 'POST', url: window.location.origin + window.location.pathname + '/solutions' + window.location.search, data: solution }); return $.ajax(request).done(function (result) { lastSubmission = { content: solution, result: result }; }); } mumuki.load(function () { lastSubmission = {}; }); Laboratory.prototype = { // ========== // Public API // ========== // Runs tests for the current exercise using the given submission // content. runTests: function(content) { return this._submitSolution({ solution: content }); }, // =========== // Private API // =========== _submitSolution: function (solution) { if(lastSubmissionFinishedSuccessfully() && sameAsLastSolution(solution)){ return $.Deferred().resolve(lastSubmission.result); } else { return sendNewSolution(solution); } }, }; mumuki.bridge = { Laboratory: Laboratory }; }(mumuki));
Version data entries
36 entries across 36 versions & 1 rubygems