diff --git a/build/bundle.js b/build/bundle.js index bb440220..67eb78fc 100644 --- a/build/bundle.js +++ b/build/bundle.js @@ -6648,7 +6648,7 @@ var Level = Sandbox.extend({ }, initParseWaterfall: function(options) { - this.parseWaterfall = new ParseWaterfall(); + Level.__super__.initParseWaterfall.apply(this, [options]); // add our specific functionaity this.parseWaterfall.addFirst( @@ -6779,10 +6779,9 @@ var Level = Sandbox.extend({ die: function() { this.levelToolbar.die(); - this.goalCanvasHolder.die(); + this.goalDie(); this.mainVis.die(); - this.goalVis.die(); this.releaseControl(); this.clear(); @@ -6793,6 +6792,11 @@ var Level = Sandbox.extend({ delete this.goalCanvasHolder; }, + goalDie: function() { + this.goalCanvasHolder.die(); + this.goalVis.die(); + }, + getInstantCommands: function() { var hintMsg = (this.level.hint) ? this.level.hint : @@ -19168,6 +19172,10 @@ var LevelBuilder = Level.extend({ ); }, + initParseWaterfall: function() { + LevelBuilder.__super__.initParseWaterfall.apply(this, [options]); + }, + takeControl: function() { Main.getEventBaton().stealBaton('processLevelBuilderCommand', this.processLevelCommand, this); @@ -19441,7 +19449,7 @@ var Level = Sandbox.extend({ }, initParseWaterfall: function(options) { - this.parseWaterfall = new ParseWaterfall(); + Level.__super__.initParseWaterfall.apply(this, [options]); // add our specific functionaity this.parseWaterfall.addFirst( @@ -19572,10 +19580,9 @@ var Level = Sandbox.extend({ die: function() { this.levelToolbar.die(); - this.goalCanvasHolder.die(); + this.goalDie(); this.mainVis.die(); - this.goalVis.die(); this.releaseControl(); this.clear(); @@ -19586,6 +19593,11 @@ var Level = Sandbox.extend({ delete this.goalCanvasHolder; }, + goalDie: function() { + this.goalCanvasHolder.die(); + this.goalVis.die(); + }, + getInstantCommands: function() { var hintMsg = (this.level.hint) ? this.level.hint : diff --git a/src/js/level/builder.js b/src/js/level/builder.js index 02be5a80..f5bf8b37 100644 --- a/src/js/level/builder.js +++ b/src/js/level/builder.js @@ -18,6 +18,12 @@ var ConfirmCancelTerminal = require('../views').ConfirmCancelTerminal; var NextLevelConfirm = require('../views').NextLevelConfirm; var LevelToolbar = require('../views').LevelToolbar; +var regexMap = { + 'show goal': /^show goal$/, + 'hide goal': /^hide goal$/, + 'show solution': /^show solution$/ +}; + var LevelBuilder = Level.extend({ initialize: function(options) { options = options || {}; @@ -71,6 +77,19 @@ var LevelBuilder = Level.extend({ ); }, + initParseWaterfall: function() { + LevelBuilder.__super__.initParseWaterfall.apply(this, [options]); + + this.parseWaterfall.addFirst( + 'parseWaterfall', + parse + ); + this.parseWaterfall.addFirst( + 'instantWaterfall', + this.getInstantCommands() + ); + }, + takeControl: function() { Main.getEventBaton().stealBaton('processLevelBuilderCommand', this.processLevelCommand, this); diff --git a/src/js/level/commands.js b/src/js/level/commands.js deleted file mode 100644 index 4a40c0da..00000000 --- a/src/js/level/commands.js +++ /dev/null @@ -1,27 +0,0 @@ -var _ = require('underscore'); - -var regexMap = { - 'show goal': /^show goal$/, - 'hide goal': /^hide goal$/, - 'show solution': /^show solution$/ -}; - -var parse = function(str) { - var levelMethod; - - _.each(regexMap, function(regex, method) { - if (regex.test(str)) { - levelMethod = method; - } - }); - - return (!levelMethod) ? false : { - toSet: { - eventName: 'processLevelCommand', - method: levelMethod - } - }; -}; - -exports.parse = parse; - diff --git a/src/js/level/index.js b/src/js/level/index.js index a53f53ea..d1ee8761 100644 --- a/src/js/level/index.js +++ b/src/js/level/index.js @@ -22,6 +22,14 @@ var LevelToolbar = require('../views').LevelToolbar; var TreeCompare = require('../git/treeCompare').TreeCompare; +var regexMap = { + 'show goal': /^show goal$/, + 'hide goal': /^hide goal$/, + 'show solution': /^show solution$/ +}; + +var parse = util.genParseCommand(regexMap, 'processLevelCommand'); + var Level = Sandbox.extend({ initialize: function(options) { options = options || {}; @@ -179,12 +187,12 @@ var Level = Sandbox.extend({ }, initParseWaterfall: function(options) { - this.parseWaterfall = new ParseWaterfall(); + Level.__super__.initParseWaterfall.apply(this, [options]); // add our specific functionaity this.parseWaterfall.addFirst( 'parseWaterfall', - require('../level/commands').parse + parse ); this.parseWaterfall.addFirst( @@ -310,10 +318,9 @@ var Level = Sandbox.extend({ die: function() { this.levelToolbar.die(); - this.goalCanvasHolder.die(); + this.goalDie(); this.mainVis.die(); - this.goalVis.die(); this.releaseControl(); this.clear(); @@ -324,6 +331,11 @@ var Level = Sandbox.extend({ delete this.goalCanvasHolder; }, + goalDie: function() { + this.goalCanvasHolder.die(); + this.goalVis.die(); + }, + getInstantCommands: function() { var hintMsg = (this.level.hint) ? this.level.hint : diff --git a/src/js/level/sandboxCommands.js b/src/js/level/sandboxCommands.js index af58b8c8..f1fed6da 100644 --- a/src/js/level/sandboxCommands.js +++ b/src/js/level/sandboxCommands.js @@ -55,27 +55,6 @@ var regexMap = { 'iosAlert': /^iOS alert($|\s)/ }; -var parse = function(str) { - var sandboxMethod; - var regexResults; - - _.each(regexMap, function(regex, method) { - var results = regex.exec(str); - if (results) { - sandboxMethod = method; - regexResults = results; - } - }); - - return (!sandboxMethod) ? false : { - toSet: { - eventName: 'processSandboxCommand', - method: sandboxMethod, - regexResults: regexResults - } - }; -}; - exports.instantCommands = instantCommands; -exports.parse = parse; +exports.parse = util.genParseCommand(regexMap, 'processSandboxCommand'); diff --git a/src/js/util/index.js b/src/js/util/index.js index 340f904d..d9b2abc3 100644 --- a/src/js/util/index.js +++ b/src/js/util/index.js @@ -22,3 +22,21 @@ exports.splitTextCommand = function(value, func, context) { }); }; +util.genParseCommand = function(regexMap, eventName) { + return function(str) { + var method; + + _.each(regexMap, function(regex, _method) { + if (regex.test(str)) { + method = _method; + } + }); + + return (!method) ? false : { + toSet: { + eventName: 'processLevelBuilderCommand', + method: method + } + }; + }; +};