/*
org.manalith.ircbot.plugin.keyseqconv/KeySeqConvPlugin.java
ManalithBot - An open source IRC bot based on the PircBot Framework.
Copyright (C) 2012 Seong-ho, Cho <darkcircle.0426@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.manalith.ircbot.plugin.keyseqconv;
import org.manalith.ircbot.plugin.SimplePlugin;
import org.manalith.ircbot.resources.MessageEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
@Component("keySeqConvPlugin")
public class KeySeqConvPlugin extends SimplePlugin {
private Logger logger = LoggerFactory.getLogger(getClass());
private DubeolAutomataEngine dengine;
private SebeolFinalAutomataEngine sfengine;
private Sebeol390AutomataEngine stengine;
private SebeolNoSftAutomataEngine snengine;
private boolean enableParsingExceptionSyntax;
public KeySeqConvPlugin() {
dengine = new DubeolAutomataEngine();
sfengine = new SebeolFinalAutomataEngine();
stengine = new Sebeol390AutomataEngine();
snengine = new SebeolNoSftAutomataEngine();
}
public void setEnableParsingExceptionSyntax(boolean enable) {
enableParsingExceptionSyntax = enable;
}
@Override
public String getName() {
return "입력 변환기(2벌,3벌[최종,390,순아래])";
}
@Override
public String getCommands() {
return "!c2|!c3|!c33|!c3n|!c2r";
}
@Override
public String getHelp() {
return "!c2|!c3|!c33|!c3n 영문문자열, \\변환하지 않을 영문문자열\\ (백슬래시 표시: \\\\) | !c2r 한글문자열";
}
@Override
public void onMessage(MessageEvent event) {
String msg = event.getMessage();
String sender = event.getUser().getNick();
dengine.setEnableParsingExceptionSyntax(enableParsingExceptionSyntax);
sfengine.setEnableParsingExceptionSyntax(enableParsingExceptionSyntax);
stengine.setEnableParsingExceptionSyntax(enableParsingExceptionSyntax);
snengine.setEnableParsingExceptionSyntax(enableParsingExceptionSyntax);
String cmd = msg.split("\\s")[0];
String srcmsg = msg.substring(msg.indexOf(' ') + 1, msg.length());
String dstmsg = "";
try {
switch (cmd) {
case "!c2":
dstmsg = dengine.parseKeySequenceToKorean(srcmsg);
event.respond(String.format("<%s> %s", sender, dstmsg));
break;
case "!c2r":
dstmsg = dengine.parseKoreanStringToEngSpell(srcmsg);
event.respond(String.format("<%s> %s", sender, dstmsg));
break;
case "!c3":
dstmsg = sfengine.parseKeySequenceToKorean(srcmsg);
event.respond(String.format("<%s> %s", sender, dstmsg));
break;
case "!c33":
dstmsg = stengine.parseKeySequenceToKorean(srcmsg);
event.respond(String.format("<%s> %s", sender, dstmsg));
break;
case "!c3n":
dstmsg = snengine.parseKeySequenceToKorean(srcmsg);
event.respond(String.format("<%s> %s", sender, dstmsg));
break;
}
} catch (Exception e) {
logger.warn(e.getMessage(), e);
}
}
}