From: Kimmo R. <ki...@us...> - 2013-05-21 19:17:21
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16203/src/games/stendhal/server/actions/chat Modified Files: AwayAction.java EmoteAction.java GroupMessageAction.java PublicChatAction.java StoreMessageAction.java TellAction.java Added Files: QuoteSpecials.java Log Message: Quote '\' and '§' so that they appear to have no special meaning for users Index: GroupMessageAction.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat/GroupMessageAction.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** GroupMessageAction.java 6 Jan 2013 16:23:59 -0000 1.2 --- GroupMessageAction.java 21 May 2013 19:17:17 -0000 1.3 *************** *** 57,61 **** if (validateAction(action)) { ! group.sendGroupMessage(player.getName(), action.get(TEXT)); } } --- 57,61 ---- if (validateAction(action)) { ! group.sendGroupMessage(player.getName(), QuoteSpecials.quote(action.get(TEXT))); } } Index: PublicChatAction.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat/PublicChatAction.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** PublicChatAction.java 6 Jan 2013 16:23:59 -0000 1.12 --- PublicChatAction.java 21 May 2013 19:17:17 -0000 1.13 *************** *** 32,36 **** } ! final String text = action.get(TEXT); player.put("text", text); new GameEvent(player.getName(), "chat", null, Integer.toString(text.length()), text.substring(0, Math.min(text.length(), 1000))).raise(); --- 32,36 ---- } ! final String text = QuoteSpecials.quote(action.get(TEXT)); player.put("text", text); new GameEvent(player.getName(), "chat", null, Integer.toString(text.length()), text.substring(0, Math.min(text.length(), 1000))).raise(); Index: TellAction.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat/TellAction.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** TellAction.java 6 Jan 2013 16:23:59 -0000 1.23 --- TellAction.java 21 May 2013 19:17:17 -0000 1.24 *************** *** 51,55 **** } ! String text = action.get(TEXT).trim(); String senderName = player.getName(); String receiverName = action.get(TARGET); --- 51,55 ---- } ! String text = QuoteSpecials.quote(action.get(TEXT).trim()); String senderName = player.getName(); String receiverName = action.get(TARGET); Index: AwayAction.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat/AwayAction.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** AwayAction.java 6 Jan 2013 16:23:59 -0000 1.6 --- AwayAction.java 21 May 2013 19:17:17 -0000 1.7 *************** *** 43,47 **** if (AWAY.equals(action.get(TYPE))) { if (action.has(MESSAGE)) { ! player.setAwayMessage(action.get(MESSAGE)); } else { player.setAwayMessage(null); --- 43,47 ---- if (AWAY.equals(action.get(TYPE))) { if (action.has(MESSAGE)) { ! player.setAwayMessage(QuoteSpecials.quote(action.get(MESSAGE))); } else { player.setAwayMessage(null); --- NEW FILE: QuoteSpecials.java --- /*************************************************************************** * (C) Copyright 2003-2013 - Stendhal team * *************************************************************************** *************************************************************************** * * * 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 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ package games.stendhal.server.actions.chat; import java.util.regex.Pattern; class QuoteSpecials { private static final Pattern BSLASH = Pattern.compile("\\\\"); private static final Pattern ITEM_MARKUP = Pattern.compile("§"); /** * Quotes player supplied text so that the markup characters in it appear to * have no special meaning when interpreted by the client. '#' is still * allowed, as player are used to have it. * * @param text player supplied text * @return quoted text */ public static String quote(String text) { // Note the special meaning both within source, and for the regexp // engine. '\\\\\\\\ 'ends up meaning just '\\' text = BSLASH.matcher(text).replaceAll("\\\\\\\\"); return ITEM_MARKUP.matcher(text).replaceAll("\\\\§"); } } Index: StoreMessageAction.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat/StoreMessageAction.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** StoreMessageAction.java 6 Jan 2013 16:23:59 -0000 1.7 --- StoreMessageAction.java 21 May 2013 19:17:17 -0000 1.8 *************** *** 71,75 **** } ! String message = action.get(TEXT); DBCommand command = new StoreMessageCommand(player.getName(), action.get(TARGET), message, "P"); --- 71,75 ---- } ! String message = QuoteSpecials.quote(action.get(TEXT)); DBCommand command = new StoreMessageCommand(player.getName(), action.get(TARGET), message, "P"); Index: EmoteAction.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/actions/chat/EmoteAction.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EmoteAction.java 6 Jan 2013 16:23:59 -0000 1.10 --- EmoteAction.java 21 May 2013 19:17:17 -0000 1.11 *************** *** 37,41 **** //emote actions are treated as normal chat actions //on the client side, !me is replaced with the name ! final String text = "!me " + action.get(TEXT); player.put("text", text); --- 37,41 ---- //emote actions are treated as normal chat actions //on the client side, !me is replaced with the name ! final String text = "!me " + QuoteSpecials.quote(action.get(TEXT)); player.put("text", text); |