001package com.github.theholywaffle.teamspeak3.commands;
002
003/*
004 * #%L
005 * TeamSpeak 3 Java API
006 * %%
007 * Copyright (C) 2015 Bert De Geyter, Roger Baumgartner
008 * %%
009 * Permission is hereby granted, free of charge, to any person obtaining a copy
010 * of this software and associated documentation files (the "Software"), to deal
011 * in the Software without restriction, including without limitation the rights
012 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
013 * copies of the Software, and to permit persons to whom the Software is
014 * furnished to do so, subject to the following conditions:
015 * 
016 * The above copyright notice and this permission notice shall be included in
017 * all copies or substantial portions of the Software.
018 * 
019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
020 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
021 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
022 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
023 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
024 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
025 * THE SOFTWARE.
026 * #L%
027 */
028
029public final class CommandEncoding {
030
031        private CommandEncoding() {}
032
033        public static String encode(String str) {
034                str = str.replace("\\", "\\\\");
035
036                str = str.replace(" ", "\\s");
037                str = str.replace("/", "\\/");
038                str = str.replace("|", "\\p");
039                str = str.replace("\b", "\\b");
040                str = str.replace("\f", "\\f");
041                str = str.replace("\n", "\\n");
042                str = str.replace("\r", "\\r");
043                str = str.replace("\t", "\\t");
044                str = str.replace(String.valueOf((char) 7), "\\a");
045                str = str.replace(String.valueOf((char) 11), "\\v");
046
047                return str;
048        }
049
050        public static String decode(String str) {
051                str = str.replace("\\s", " ");
052                str = str.replace("\\/", "/");
053                str = str.replace("\\p", "|");
054                str = str.replace("\\b", "\b");
055                str = str.replace("\\f", "\f");
056                str = str.replace("\\n", "\n");
057                str = str.replace("\\r", "\r");
058                str = str.replace("\\t", "\t");
059                str = str.replace("\\a", String.valueOf((char) 7)); // Bell
060                str = str.replace("\\v", String.valueOf((char) 11)); // Vertical Tab
061
062                str = str.replace("\\\\", "\\");
063
064                return str;
065        }
066}