public Add ( DefinitionCacheItemType type, string location, System.DateTime updated, bool ovrride, bool required, string name, string description ) : |
||
type | DefinitionCacheItemType | |
location | string | |
updated | System.DateTime | |
ovrride | bool | |
required | bool | |
name | string | |
description | string | |
return |
public void Can_get_built_in_command_hidden_by_override() { var cache = new DefinitionCache(); cache .Add(DefinitionCacheItemType.BuiltIn, "l1", DateTime.Now, false, true, "cmd1", "") .Append(DefinitionCacheItemType.BuiltIn, "l1", DateTime.Now, false, true, "cmd1-1", ""); cache .Add(DefinitionCacheItemType.Script, "l2", DateTime.Now, false, true, "cmd1", "") .Append(DefinitionCacheItemType.Script, "l2", DateTime.Now, false, true, "override-1", ""); var item = cache.GetBuiltIn(new[] { "cmd1" }); Assert.That(item.Type, Is.EqualTo(DefinitionCacheItemType.BuiltIn)); Assert.That(item.Location, Is.EqualTo("l1")); Assert.That(item.Parameters[0].Name, Is.EqualTo("cmd1-1")); }
public void Can_fetch_the_oldest_element_in_the_cache() { var type = DefinitionCacheItemType.Script; var time = new DateTime(2012,1,1,0,0,0); var cache = new DefinitionCache(); cache .Add(type, "", DateTime.Now, false, true, "cmd1", "") .Append(type, "", DateTime.Now, false, true, "cmd2", "") .Append(type, "", DateTime.Now, false, true, "cmd3", "") .Append(type, "", time, false, false, "-g", ""); cache .Add(type, "", DateTime.Now, false, true, "cmd1-1", "") .Append(type, "", DateTime.Now, false, true, "cmdAnother", ""); Assert.That(cache.GetOldestItem().Name, Is.EqualTo("-g")); }
public void Build(bool updateDefinitions) { _cache = new DefinitionCache(); var profiles = new ProfileLocator(_token); mergeBuiltInCommands(updateDefinitions, profiles); // Reverse paths to handle global first then local var paths = profiles.GetPathsCurrentProfiles().Reverse().ToArray(); foreach (var path in paths) { mergeExternalCommands(updateDefinitions, path); } // Add default language if (_defaultLanguage != null) { var lang = _cache.Get(new[] { _defaultLanguage }); if (lang != null) { var parameters = lang.Parameters; foreach (var usage in parameters) { // Don't override existing commands with default language if (_cache.Get(new[] { usage.Name }) == null) { _cache.Add(usage); } } } } }
public void Can_fetch_locations_in_the_cache() { var type = DefinitionCacheItemType.Script; var cache = new DefinitionCache(); cache .Add(type, "loc1", DateTime.Now, false, true, "cmd1", "") .Append(type, "loc1", DateTime.Now, false, true, "cmd2", "") .Append(DefinitionCacheItemType.Language, "loc3", new DateTime(2012,10,1,0,0,0), false, true, "cmd3", "") .Append(type, "loc2", new DateTime(2012,1,1,0,0,0), false, false, "-g", ""); Assert.That(cache.GetLocations(DefinitionCacheItemType.Script).Length, Is.EqualTo(2)); }
public void Can_fetch_the_oldest_element_of_a_spesific_location_in_the_cache() { var type = DefinitionCacheItemType.Script; var cache = new DefinitionCache(); cache .Add(type, "loc1", DateTime.Now, false, true, "cmd1", "") .Append(type, "loc1", DateTime.Now, false, true, "cmd2", "") .Append(type, "loc1", new DateTime(2012,10,1,0,0,0), false, true, "cmd3", "") .Append(type, "loc2", new DateTime(2012,1,1,0,0,0), false, false, "-g", ""); Assert.That(cache.GetOldestItem("loc1").Name, Is.EqualTo("cmd3")); }
public void Can_find_added_command() { var type = DefinitionCacheItemType.Script; var time = DateTime.Now; var cache = new DefinitionCache(); cache .Add(type, "", time, false, true, "cmd1", "") .Append(type, "", time, false, true, "cmd2", "") .Append(type, "", time, false, true, "cmd3", ""); Assert.That(cache.Get(new[] {"cmd1","cmd2"}).Name, Is.EqualTo("cmd2")); }
private void addItem(DefinitionCache cache, JToken json) { var item = cache .Add( getType(json["type"].ToString()), json["location"].ToString(), getTime(json["updated"].ToString()), json["cmd"].ToString().StartsWith("[["), !json["cmd"].ToString().StartsWith("["), json["cmd"].ToString().Replace("[", "").Replace("]", ""), json["description"].ToString()); foreach (var child in json["arguments"].Children()) addItem(item, child); }
private void overrideCommand(DefinitionCache cache, DefinitionCacheItem item, BaseCommandHandlerParameter parameter) { var command = cache.Add( item.Type, item.Location, item.Updated, parameter.Override, parameter.Required, parameter.Name, parameter.Description); foreach (var cmd in parameter.Parameters) { add(cache, command, cmd); } }
private void addItem(DefinitionCache cache, JToken json) { var item = cache .Add( getType(json["type"].ToString()), json["location"].ToString(), getTime(json["updated"].ToString()), json["cmd"].ToString().StartsWith("[["), !json["cmd"].ToString().StartsWith("["), json["cmd"].ToString().Replace("[", "").Replace("]", ""), json["description"].ToString()); foreach (var child in json["arguments"].Children()) { addItem(item, child); } }
public void Can_write_definition_cache() { string actualJSON = null; var writer = new DefinitionCacheWriter("/write/path") .WriteUsing((file,content) => actualJSON = content); var type = DefinitionCacheItemType.Script; var script = "/my/script"; var time = new DateTime(2013,1,1,2,3,1); var cache = new DefinitionCache(); cache .Add(type, script, time, false, true, "mycmd", "My command does my stuff.") .Append(type, script, time, false, true, "FILE", "another param") .Append(type, script, time, false, false, "optional", "This one is optional"); writer.Write(cache); Assert.That(actualJSON, Is.EqualTo(expectedJSON())); }
private DefinitionCache writeBuiltInCommands(string file, ProfileLocator profiles) { var builtInCache = new DefinitionCache(); foreach (var cmd in _builtIn()) { var item = builtInCache .Add( DefinitionCacheItemType.BuiltIn, null, DateTime.Now, false, true, cmd.Name, cmd.Usage.Description); add(builtInCache, item, cmd.Usage.Parameters); } writeCache(profiles.AppRootPath, builtInCache); return(builtInCache); }
public void Stops_at_first_optional_argument() { var type = DefinitionCacheItemType.Script; var time = DateTime.Now; var cache = new DefinitionCache(); cache .Add(type, "", time, false, true, "cmd1", "") .Append(type, "", time, false, true, "cmd2", "") .Append(type, "", time, false, true, "cmd3", "") .Append(type, "", time, false, false, "-g", ""); Assert.That(cache.Get(new[] {"cmd1", "-g","cmd2","cmd3"}).Name, Is.EqualTo("cmd1")); }
public void Can_merge_two_definition_caches() { var type = DefinitionCacheItemType.Script; var time = DateTime.Now; var cache = new DefinitionCache(); cache .Add(type, "", time, false, true, "cmd1", "") .Append(type, "", time, false, true, "cmd2", "") .Append(type, "", time, false, true, "cmd3", "") .Append(type, "", time, false, false, "-g", ""); var another = new DefinitionCache(); another .Add(type, "", time, false, true, "cmdAnother", "") .Append(type, "", time, false, true, "cmdAnother2", ""); cache.Merge(another); Assert.That(cache.Definitions.Length, Is.EqualTo(2)); }
private DefinitionCache buildDefinitions(string file) { var cache = new DefinitionCache(); var dir = Path.GetDirectoryName(file); // Add languages var languagePath = Path.Combine(dir, "languages"); LanguagePlugin defaultLanguage = null; foreach (var language in _languages(languagePath)) { var item = cache.Add( DefinitionCacheItemType.Language, language.FullPath, DateTime.Now, false, true, language.GetLanguage(), "Commands for the " + language.GetLanguage() + " plugin"); add(cache, item, language.GetUsages()); var languageScriptPath = Path.Combine( Path.Combine( languagePath, language.GetLanguage() + "-files"), "scripts"); Logger.Write("Adding scripts from " + languageScriptPath); var languageScripts = new ScriptFilter().GetScripts(languageScriptPath); foreach (var scriptFile in languageScripts) { Logger.Write("Script " + scriptFile); var script = new Script(_token, _workingDirectory, scriptFile); var usages = script.Usages; // Description is built when fetching usages var scriptItem = item.Append( DefinitionCacheItemType.LanguageScript, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, scriptItem, usages); } if (language.GetLanguage() == _defaultLanguage) defaultLanguage = language; } // Add scripts var scriptPath = Path.Combine(dir, "scripts"); Logger.Write("Adding scripts from " + scriptPath); var scripts = new ScriptFilter().GetScripts(scriptPath); foreach (var scriptFile in scripts) { Logger.Write("Adding script " + scriptPath); var script = new Script(_token, _workingDirectory, scriptFile); var usages = script.Usages; // Description is built when fetching usages var item = cache.Add( DefinitionCacheItemType.Script, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, item, usages); } // Add default language if (defaultLanguage != null) { var parameters = cache.Get(new[] { defaultLanguage.GetLanguage() }).Parameters; foreach (var usage in parameters) { // Don't override existing commands with default language if (cache.Get(new[] { usage.Name }) == null) { var item = cache.Add( usage.Type, usage.Location, DateTime.Now, false, true, usage.Name, usage.Description); add(cache, item, usage.Parameters); } } } writeCache(dir, cache); return cache; }
private void overrideCommand(DefinitionCache cache, DefinitionCacheItem item, BaseCommandHandlerParameter parameter) { var command = cache.Add( item.Type, item.Location, item.Updated, parameter.Override, parameter.Required, parameter.Name, parameter.Description); foreach (var cmd in parameter.Parameters) add(cache, command, cmd); }
private DefinitionCache writeBuiltInCommands(string file, ProfileLocator profiles) { var builtInCache = new DefinitionCache(); foreach (var cmd in _builtIn()) { var item = builtInCache .Add( DefinitionCacheItemType.BuiltIn, null, DateTime.Now, false, true, cmd.Name, cmd.Usage.Description); add(builtInCache, item, cmd.Usage.Parameters); } writeCache(profiles.AppRootPath, builtInCache); return builtInCache; }
public void When_merging_two_definition_caches_it_will_not_add_duplicate_commands() { var type = DefinitionCacheItemType.Script; var time = DateTime.Now; var cache = new DefinitionCache(); cache .Add(type, "", time, false, true, "cmd1", "") .Append(type, "", time, false, true, "cmd2", "") .Append(type, "", time, false, true, "cmd3", "") .Append(type, "", time, false, false, "-g", ""); var another = new DefinitionCache(); another .Add(type, "", time, false, true, "cmd1", "") .Append(type, "", time, false, true, "cmdAnother", ""); cache.Merge(another); Assert.That(cache.Definitions.Length, Is.EqualTo(1)); }
private DefinitionCache buildDefinitions(string file) { var cache = new DefinitionCache(); var dir = Path.GetDirectoryName(file); // Add languages var languagePath = Path.Combine(dir, "languages"); LanguagePlugin defaultLanguage = null; foreach (var language in _languages(languagePath)) { var item = cache.Add( DefinitionCacheItemType.Language, language.FullPath, DateTime.Now, false, true, language.GetLanguage(), "Commands for the " + language.GetLanguage() + " plugin"); add(cache, item, language.GetUsages()); } // Add language scripts var currentLanguages = cache .Definitions .Where(x => x.Type == DefinitionCacheItemType.Language) .ToList(); var otherLocationLanguages = _cache .Definitions .Where(x => x.Type == DefinitionCacheItemType.Language && !currentLanguages.Any(y => y.Name == x.Name)) .ToList(); foreach (var item in currentLanguages) { var languageScriptPath = Path.Combine( Path.Combine( languagePath, item.Name + "-files"), "scripts"); if (!Directory.Exists(languageScriptPath)) { continue; } Logger.Write("Adding scripts from " + languageScriptPath); var languageScripts = new ScriptFilter().GetScripts(languageScriptPath); foreach (var scriptFile in languageScripts) { Logger.Write("Script " + scriptFile); var script = new Script(_token, _workingDirectory, scriptFile) .SetUsageDispatcher((msg) => { if (msg.StartsWith("error|")) { printError(msg); } }); var usages = script.Usages; // Description is built when fetching usages var scriptItem = item.Append( DefinitionCacheItemType.LanguageScript, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, scriptItem, usages); } } foreach (var language in otherLocationLanguages) { var languageScriptPath = Path.Combine( Path.Combine( languagePath, language.Name + "-files"), "scripts"); if (!Directory.Exists(languageScriptPath)) { continue; } var item = cache.Add( DefinitionCacheItemType.Language, "placehoder-for-language-in-different-location", DateTime.Now, false, true, language.Name, ""); add(cache, item, new BaseCommandHandlerParameter[] {}); Logger.Write("Adding scripts from " + languageScriptPath); var languageScripts = new ScriptFilter().GetScripts(languageScriptPath); foreach (var scriptFile in languageScripts) { Logger.Write("Script " + scriptFile); var script = new Script(_token, _workingDirectory, scriptFile) .SetUsageDispatcher((msg) => { if (msg.StartsWith("error|")) { printError(msg); } }); var usages = script.Usages; // Description is built when fetching usages var scriptItem = item.Append( DefinitionCacheItemType.LanguageScript, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, scriptItem, usages); } } // Add scripts var scriptPath = Path.Combine(dir, "scripts"); Logger.Write("Adding scripts from " + scriptPath); var scripts = new ScriptFilter().GetScripts(scriptPath); foreach (var scriptFile in scripts) { Logger.Write("Adding script " + scriptPath); var script = new Script(_token, _workingDirectory, scriptFile) .SetUsageDispatcher((msg) => { if (msg.StartsWith("error|")) { printError(msg); } }); var usages = script.Usages; // Description is built when fetching usages var item = cache.Add( DefinitionCacheItemType.Script, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, item, usages); } writeCache(dir, cache); return(cache); }
public void Build(bool updateDefinitions) { _cache = new DefinitionCache(); var profiles = new ProfileLocator(_token); mergeBuiltInCommands(updateDefinitions, profiles); // Reverse paths to handle global first then local var paths = profiles.GetPathsCurrentProfiles().Reverse().ToArray(); foreach (var path in paths) mergeExternalCommands(updateDefinitions, path); // Add default language if (_defaultLanguage != null) { var lang = _cache.Get(new[] { _defaultLanguage }); if (lang != null) { var parameters = lang.Parameters; foreach (var usage in parameters) { // Don't override existing commands with default language if (_cache.Get(new[] { usage.Name }) == null) { _cache.Add(usage); } } } } }
public void Stops_at_first_user_defined_content_command() { var type = DefinitionCacheItemType.Script; var time = DateTime.Now; var cache = new DefinitionCache(); cache .Add(type, "", time, false, true, "cmd1", "") .Append(type, "", time, false, true, "USER_DEFINED_ARE_UPPER_CASE", "") .Append(type, "", time, false, true, "cmd3", ""); Assert.That(cache.Get(new[] {"cmd1","bleh","cmd3"}).Name, Is.EqualTo("cmd1")); }
private DefinitionCache buildDefinitions(string file) { var cache = new DefinitionCache(); var dir = Path.GetDirectoryName(file); // Add languages var languagePath = Path.Combine(dir, "languages"); foreach (var language in _languages(languagePath)) { var item = cache.Add( DefinitionCacheItemType.Language, language.FullPath, DateTime.Now, false, true, language.GetLanguage(), "Commands for the " + language.GetLanguage() + " plugin"); add(cache, item, language.GetUsages()); } // Add language scripts var currentLanguages = cache .Definitions .Where(x => x.Type == DefinitionCacheItemType.Language) .ToList(); var otherLocationLanguages = _cache .Definitions .Where(x => x.Type == DefinitionCacheItemType.Language && !currentLanguages.Any(y => y.Name == x.Name)) .ToList(); foreach (var item in currentLanguages) { var languageScriptPath = Path.Combine( Path.Combine( languagePath, item.Name + "-files"), "scripts"); if (!Directory.Exists(languageScriptPath)) continue; Logger.Write("Adding scripts from " + languageScriptPath); var languageScripts = new ScriptFilter().GetScripts(languageScriptPath); foreach (var scriptFile in languageScripts) { Logger.Write("Script " + scriptFile); var script = new Script(_token, _workingDirectory, scriptFile) .SetUsageDispatcher((msg) => { if (msg.StartsWith("error|")) printError(msg); }); var usages = script.Usages; // Description is built when fetching usages var scriptItem = item.Append( DefinitionCacheItemType.LanguageScript, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, scriptItem, usages); } } foreach (var language in otherLocationLanguages) { var languageScriptPath = Path.Combine( Path.Combine( languagePath, language.Name + "-files"), "scripts"); if (!Directory.Exists(languageScriptPath)) continue; var item = cache.Add( DefinitionCacheItemType.Language, "placehoder-for-language-in-different-location", DateTime.Now, false, true, language.Name, ""); add(cache, item, new BaseCommandHandlerParameter[] {}); Logger.Write("Adding scripts from " + languageScriptPath); var languageScripts = new ScriptFilter().GetScripts(languageScriptPath); foreach (var scriptFile in languageScripts) { Logger.Write("Script " + scriptFile); var script = new Script(_token, _workingDirectory, scriptFile) .SetUsageDispatcher((msg) => { if (msg.StartsWith("error|")) printError(msg); }); var usages = script.Usages; // Description is built when fetching usages var scriptItem = item.Append( DefinitionCacheItemType.LanguageScript, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, scriptItem, usages); } } // Add scripts var scriptPath = Path.Combine(dir, "scripts"); Logger.Write("Adding scripts from " + scriptPath); var scripts = new ScriptFilter().GetScripts(scriptPath); foreach (var scriptFile in scripts) { Logger.Write("Adding script " + scriptPath); var script = new Script(_token, _workingDirectory, scriptFile) .SetUsageDispatcher((msg) => { if (msg.StartsWith("error|")) printError(msg); }); var usages = script.Usages; // Description is built when fetching usages var item = cache.Add( DefinitionCacheItemType.Script, scriptFile, DateTime.Now, false, true, script.Name, script.Description); add(cache, item, usages); } writeCache(dir, cache); return cache; }