mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-27 16:38:50 +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 Errors = require('../util/errors');
|
||||||
|
|
||||||
var ParseWaterfall = require('../level/parseWaterfall').ParseWaterfall;
|
var ParseWaterfall = require('../level/parseWaterfall').ParseWaterfall;
|
||||||
|
var LevelStore = require('../stores/LevelStore');
|
||||||
var intl = require('../intl');
|
var intl = require('../intl');
|
||||||
|
|
||||||
var CommandProcessError = Errors.CommandProcessError;
|
var CommandProcessError = Errors.CommandProcessError;
|
||||||
|
@ -267,8 +268,19 @@ var Command = Backbone.Model.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
parseAll: function() {
|
parseAll: function() {
|
||||||
var str = this.get('rawStr');
|
var rawInput = this.get('rawStr');
|
||||||
var results = this.get('parseWaterfall').parseAll(str);
|
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) {
|
if (!results) {
|
||||||
// nothing parsed successfully
|
// nothing parsed successfully
|
||||||
|
|
|
@ -8,6 +8,7 @@ var Errors = require('../util/errors');
|
||||||
var CommandProcessError = Errors.CommandProcessError;
|
var CommandProcessError = Errors.CommandProcessError;
|
||||||
var LocaleStore = require('../stores/LocaleStore');
|
var LocaleStore = require('../stores/LocaleStore');
|
||||||
var LocaleActions = require('../actions/LocaleActions');
|
var LocaleActions = require('../actions/LocaleActions');
|
||||||
|
var LevelStore = require('../stores/LevelStore');
|
||||||
var GlobalStateStore = require('../stores/GlobalStateStore');
|
var GlobalStateStore = require('../stores/GlobalStateStore');
|
||||||
var GlobalStateActions = require('../actions/GlobalStateActions');
|
var GlobalStateActions = require('../actions/GlobalStateActions');
|
||||||
var GitError = Errors.GitError;
|
var GitError = Errors.GitError;
|
||||||
|
@ -50,6 +51,21 @@ var instantCommands = [
|
||||||
msg: lines.join('\n')
|
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) {
|
[/^locale (\w+)$/, function(bits) {
|
||||||
LocaleActions.changeLocale(bits[1]);
|
LocaleActions.changeLocale(bits[1]);
|
||||||
throw new CommandResult({
|
throw new CommandResult({
|
||||||
|
|
|
@ -9,6 +9,7 @@ var util = require('../util');
|
||||||
|
|
||||||
var ActionTypes = AppConstants.ActionTypes;
|
var ActionTypes = AppConstants.ActionTypes;
|
||||||
var SOLVED_MAP_STORAGE_KEY = 'solvedMap';
|
var SOLVED_MAP_STORAGE_KEY = 'solvedMap';
|
||||||
|
var ALIAS_STORAGE_KEY = 'aliasMap';
|
||||||
|
|
||||||
var _levelMap = {};
|
var _levelMap = {};
|
||||||
var _solvedMap = {};
|
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) {
|
var validateLevel = function(level) {
|
||||||
level = level || {};
|
level = level || {};
|
||||||
var requiredFields = [
|
var requiredFields = [
|
||||||
|
@ -108,6 +129,10 @@ var LevelStore = Object.assign(
|
||||||
EventEmitter.prototype,
|
EventEmitter.prototype,
|
||||||
AppConstants.StoreSubscribePrototype,
|
AppConstants.StoreSubscribePrototype,
|
||||||
{
|
{
|
||||||
|
getAliasMap: getAliasMap,
|
||||||
|
addToAliasMap: addToAliasMap,
|
||||||
|
removeFromAliasMap: removeFromAliasMap,
|
||||||
|
|
||||||
getSequenceToLevels: function() {
|
getSequenceToLevels: function() {
|
||||||
return levelSequences;
|
return levelSequences;
|
||||||
},
|
},
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue