org.archive.util.JavaLiterals Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of heritrix-commons Show documentation
Show all versions of heritrix-commons Show documentation
The Archive Commons Code Libraries project contains general Java utility
libraries, as used by the Heritrix crawler and other projects.
The newest version!
/*
* This file is part of the Heritrix web crawler (crawler.archive.org).
*
* Licensed to the Internet Archive (IA) by one or more individual
* contributors.
*
* The IA licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.archive.util;
/**
* Utility functions to escape or unescape Java literal strings.
*
* @author gojomo
*
*/
public class JavaLiterals {
public static String escape(String raw) {
StringBuffer escaped = new StringBuffer();
for(int i = 0; i=escaped.length()) {
// trailing '/'
raw.append(c);
continue;
}
c = escaped.charAt(i);
switch (c) {
case 'b':
raw.append('\b');
break;
case 't':
raw.append('\t');
break;
case 'n':
raw.append('\n');
break;
case 'f':
raw.append('\f');
break;
case 'r':
raw.append('r');
break;
case '"':
raw.append('\"');
break;
case '\'':
raw.append('\'');
break;
case '\\':
raw.append('\\');
break;
case 'u':
// unicode hex escape
try {
int unicode = Integer.parseInt(escaped.substring(i+1,i+5),16);
raw.append((char)unicode);
i = i + 4;
} catch (IndexOutOfBoundsException e) {
// err
raw.append("\\u");
}
break;
default:
if(Character.isDigit(c)) {
// octal escape
int end = Math.min(i+4,escaped.length());
int octal = Integer.parseInt(escaped.substring(i+1,end),8);
if(octal<256) {
raw.append((char)octal);
i = end - 1;
} else {
// err
raw.append('\\');
raw.append(c);
}
}
break;
}
}
}
return raw.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy