1
0
mirror of https://github.com/moparisthebest/Yaaic synced 2025-01-10 05:08:18 -05:00

Merge branch 'master' of git://github.com/kell/Yaaic into integration

This commit is contained in:
Sebastian Kaspari 2010-04-06 20:33:40 +02:00
commit d5c1daaa3e
2 changed files with 51 additions and 18 deletions

View File

@ -21,7 +21,6 @@ along with Yaaic. If not, see <http://www.gnu.org/licenses/>.
package org.yaaic.command; package org.yaaic.command;
import java.util.HashMap; import java.util.HashMap;
import java.util.Set;
import android.content.Intent; import android.content.Intent;
@ -59,6 +58,7 @@ import org.yaaic.model.Server;
public class CommandParser public class CommandParser
{ {
private HashMap<String, BaseHandler> commands; private HashMap<String, BaseHandler> commands;
private HashMap<String, String> aliases;
private static CommandParser instance; private static CommandParser instance;
private final static String[] serverCommands = { private final static String[] serverCommands = {
@ -97,9 +97,11 @@ public class CommandParser
commands.put("mode", new ModeHandler()); commands.put("mode", new ModeHandler());
commands.put("help", new HelpHandler()); commands.put("help", new HelpHandler());
aliases = new HashMap<String, String>();
// Aliases // Aliases
commands.put("j", commands.get("join")); aliases.put("j","join");
commands.put("q", commands.get("query")); aliases.put("q", "query");
aliases.put("h", "help");
} }
/** /**
@ -121,11 +123,22 @@ public class CommandParser
* *
* @return HashMap - command, commandHandler * @return HashMap - command, commandHandler
*/ */
public HashMap<String, BaseHandler> getCommands() { public HashMap<String, BaseHandler> getCommands()
{
return commands; return commands;
} }
/**
* Get the command aliases HashMap
*
* @return HashMap - alias, command the alias belogs to
*/
public HashMap<String, String> getAliases()
{
return aliases;
}
/** /**
* Is the given command a valid client command? * Is the given command a valid client command?
* *
@ -134,7 +147,13 @@ public class CommandParser
*/ */
public boolean isClientCommand(String command) public boolean isClientCommand(String command)
{ {
return commands.containsKey(command.toLowerCase()); if (commands.containsKey(command.toLowerCase())) {
return true;
} else if (aliases.containsKey(command.toLowerCase())) {
return true;
} else {
return false;
}
} }
/** /**
@ -166,7 +185,13 @@ public class CommandParser
*/ */
public void handleClientCommand(String type, String[] params, Server server, Conversation conversation, IRCService service) public void handleClientCommand(String type, String[] params, Server server, Conversation conversation, IRCService service)
{ {
BaseHandler command = commands.get(type); BaseHandler command = null;
if (commands.containsKey(type.toLowerCase())) {
command = commands.get(type);
} else if (aliases.containsKey(type.toLowerCase())) {
String commandInCommands = aliases.get(type.toLowerCase());
command = commands.get(commandInCommands);
}
try { try {
command.execute(params, server, conversation, service); command.execute(params, server, conversation, service);
} catch(CommandException e) { } catch(CommandException e) {

View File

@ -1,7 +1,6 @@
package org.yaaic.command.handler; package org.yaaic.command.handler;
import java.util.HashMap; import java.util.HashMap;
import java.util.Set;
import org.yaaic.command.BaseHandler; import org.yaaic.command.BaseHandler;
import org.yaaic.command.CommandParser; import org.yaaic.command.CommandParser;
@ -28,19 +27,26 @@ public class HelpHandler extends BaseHandler {
*/ */
@Override @Override
public void execute(String[] params, Server server, Conversation conversation, IRCService service) throws CommandException { public void execute(String[] params, Server server, Conversation conversation, IRCService service) throws CommandException {
if (conversation.getType() != Conversation.TYPE_CHANNEL) {
throw new CommandException("Only usable from within a channel");
}
CommandParser cp = CommandParser.getInstance(); CommandParser cp = CommandParser.getInstance();
StringBuffer commandList = new StringBuffer("available commands: \n"); StringBuffer commandList = new StringBuffer("available commands: \n");
HashMap<String, BaseHandler> commands = cp.getCommands(); HashMap<String, BaseHandler> commands = cp.getCommands();
HashMap<String, String> aliases = cp.getAliases();
Object[] commandKeys = commands.keySet().toArray(); Object[] commandKeys = commands.keySet().toArray();
Object[] aliasesKeys = aliases.keySet().toArray();
for (Object command: commandKeys) { for (Object command: commandKeys) {
commandList.append("/"+command.toString() + " - "+commands.get(command).getDescription()+"\n"); String alias = "";
for (Object aliasCommand: aliasesKeys) {
System.out.println("alias: "+aliases.get(aliasCommand));
if (command.equals(aliases.get(aliasCommand))) {
alias = " or /"+aliasCommand;
break;
}
}
commandList.append("/"+command.toString() + alias+" - "+commands.get(command).getDescription()+"\n");
} }
Message message = new Message(commandList.toString()); Message message = new Message(commandList.toString());
@ -60,7 +66,8 @@ public class HelpHandler extends BaseHandler {
*Usage of /help *Usage of /help
*/ */
@Override @Override
public String getUsage() { public String getUsage()
{
return "/help"; return "/help";
} }
@ -68,7 +75,8 @@ public class HelpHandler extends BaseHandler {
* Description of /help * Description of /help
*/ */
@Override @Override
public String getDescription() { public String getDescription()
{
return desc; return desc;
} }