mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.DictionaryCommandHandler
|
|
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
|
|
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
|
|
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class DictionaryCommandHandler : ICommandHandler
|
|
{
|
|
private Dictionary<string, ICommandHandler> _handlers;
|
|
private string _divider;
|
|
|
|
public DictionaryCommandHandler()
|
|
{
|
|
this._handlers = new Dictionary<string, ICommandHandler>();
|
|
this._divider = "\\";
|
|
}
|
|
|
|
public IDictionary Handlers => _handlers;
|
|
|
|
public string Divider
|
|
{
|
|
get => this._divider;
|
|
set => this._divider = !string.IsNullOrEmpty(value) ? value : throw new ArgumentException("Must provide a non-empty divider.", nameof(value));
|
|
}
|
|
|
|
public void Execute(string command, IDictionary commandArgs)
|
|
{
|
|
string prefix;
|
|
string suffix;
|
|
this.SplitCommand(command, out prefix, out suffix);
|
|
ICommandHandler commandHandler = null;
|
|
if (this._handlers.ContainsKey(prefix))
|
|
commandHandler = this._handlers[prefix];
|
|
if (commandHandler == null)
|
|
throw new ArgumentException("Unknown prefix: " + prefix, "prefix");
|
|
commandHandler.Execute(suffix, commandArgs);
|
|
}
|
|
|
|
private void SplitCommand(string command, out string prefix, out string suffix)
|
|
{
|
|
int length = !string.IsNullOrEmpty(command) ? command.IndexOf(this._divider) : throw new ArgumentException("Must provide a non-empty command", nameof(command));
|
|
if (length < 0)
|
|
{
|
|
prefix = command;
|
|
suffix = null;
|
|
}
|
|
else
|
|
{
|
|
prefix = command.Substring(0, length);
|
|
suffix = command.Substring(length + this._divider.Length);
|
|
}
|
|
}
|
|
}
|
|
}
|