mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-28 00:40:07 +02:00
Resolves #593 -- add alias support with local storage
This commit is contained in:
parent
a1f7bda2d9
commit
12cdb49457
3 changed files with 55 additions and 2 deletions
|
@ -3,6 +3,7 @@ var Backbone = require('backbone');
|
|||
var Errors = require('../util/errors');
|
||||
|
||||
var ParseWaterfall = require('../level/parseWaterfall').ParseWaterfall;
|
||||
var LevelStore = require('../stores/LevelStore');
|
||||
var intl = require('../intl');
|
||||
|
||||
var CommandProcessError = Errors.CommandProcessError;
|
||||
|
@ -267,8 +268,19 @@ var Command = Backbone.Model.extend({
|
|||
},
|
||||
|
||||
parseAll: function() {
|
||||
var str = this.get('rawStr');
|
||||
var results = this.get('parseWaterfall').parseAll(str);
|
||||
var rawInput = this.get('rawStr');
|
||||
debugger;
|
||||
const aliasMap = LevelStore.getAliasMap();
|
||||
for (var i = 0; i<Object.keys(aliasMap).length; i++) {
|
||||
var alias = Object.keys(aliasMap)[i];
|
||||
var searcher = new RegExp(alias + "(\\s|$)", "g");
|
||||
if (searcher.test(rawInput)) {
|
||||
rawInput = rawInput.replace(searcher, aliasMap[alias] + ' ');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var results = this.get('parseWaterfall').parseAll(rawInput);
|
||||
|
||||
if (!results) {
|
||||
// nothing parsed successfully
|
||||
|
|
|
@ -8,6 +8,7 @@ var Errors = require('../util/errors');
|
|||
var CommandProcessError = Errors.CommandProcessError;
|
||||
var LocaleStore = require('../stores/LocaleStore');
|
||||
var LocaleActions = require('../actions/LocaleActions');
|
||||
var LevelStore = require('../stores/LevelStore');
|
||||
var GlobalStateStore = require('../stores/GlobalStateStore');
|
||||
var GlobalStateActions = require('../actions/GlobalStateActions');
|
||||
var GitError = Errors.GitError;
|
||||
|
@ -50,6 +51,21 @@ var instantCommands = [
|
|||
msg: lines.join('\n')
|
||||
});
|
||||
}],
|
||||
[/^alias (\w+)="(.+)"$/, function(bits) {
|
||||
const alias = bits[1];
|
||||
const expansion = bits[2];
|
||||
LevelStore.addToAliasMap(alias, expansion);
|
||||
throw new CommandResult({
|
||||
msg: 'Set alias "'+alias+'" to "'+expansion+'"',
|
||||
});
|
||||
}],
|
||||
[/^unalias (\w+)$/, function(bits) {
|
||||
const alias = bits[1];
|
||||
LevelStore.removeFromAliasMap(alias);
|
||||
throw new CommandResult({
|
||||
msg: 'Removed alias "'+alias+'"',
|
||||
});
|
||||
}],
|
||||
[/^locale (\w+)$/, function(bits) {
|
||||
LocaleActions.changeLocale(bits[1]);
|
||||
throw new CommandResult({
|
||||
|
|
|
@ -9,6 +9,7 @@ var util = require('../util');
|
|||
|
||||
var ActionTypes = AppConstants.ActionTypes;
|
||||
var SOLVED_MAP_STORAGE_KEY = 'solvedMap';
|
||||
var ALIAS_STORAGE_KEY = 'aliasMap';
|
||||
|
||||
var _levelMap = {};
|
||||
var _solvedMap = {};
|
||||
|
@ -55,6 +56,26 @@ function _syncToStorage() {
|
|||
}
|
||||
}
|
||||
|
||||
function getAliasMap() {
|
||||
try {
|
||||
return JSON.parse(localStorage.getItem(ALIAS_STORAGE_KEY) || '{}') || {};
|
||||
} catch (e) {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
function addToAliasMap(alias, expansion) {
|
||||
const aliasMap = getAliasMap();
|
||||
aliasMap[alias] = expansion;
|
||||
localStorage.setItem(ALIAS_STORAGE_KEY, JSON.stringify(aliasMap));
|
||||
}
|
||||
|
||||
function removeFromAliasMap(alias) {
|
||||
const aliasMap = getAliasMap();
|
||||
delete aliasMap[alias];
|
||||
localStorage.setItem(ALIAS_STORAGE_KEY, JSON.stringify(aliasMap));
|
||||
}
|
||||
|
||||
var validateLevel = function(level) {
|
||||
level = level || {};
|
||||
var requiredFields = [
|
||||
|
@ -108,6 +129,10 @@ var LevelStore = Object.assign(
|
|||
EventEmitter.prototype,
|
||||
AppConstants.StoreSubscribePrototype,
|
||||
{
|
||||
getAliasMap: getAliasMap,
|
||||
addToAliasMap: addToAliasMap,
|
||||
removeFromAliasMap: removeFromAliasMap,
|
||||
|
||||
getSequenceToLevels: function() {
|
||||
return levelSequences;
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue