cz.mallat.uasparser.fileparser.PHPFileParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of browsermob-proxy Show documentation
Show all versions of browsermob-proxy Show documentation
A programmatic HTTP/S designed for performance and functional testing
package cz.mallat.uasparser.fileparser;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
* Emulates the behavior of the php function "parse_ini_file".
*
* Does NOT support all features of the php function.
*
* @author oli
*/
public class PHPFileParser {
private List sections;
public PHPFileParser(InputStream is) throws IOException {
loadFile(new InputStreamReader(is));
}
public PHPFileParser(Reader reader) throws IOException {
loadFile(reader);
}
public PHPFileParser(File file) throws IOException {
Reader reader = new FileReader(file);
try {
loadFile(reader);
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void loadFile(Reader reader) throws IOException {
this.sections = new ArrayList();
BufferedReader bufferedReader = new BufferedReader(reader);
int unnamedSectionCounter = 0;
Section currentSection = null;
Entry currentEntry = null;
String line = bufferedReader.readLine();
while (line != null) {
if (line.trim().startsWith(";")) {
// comment, do nothing
} else if (line.trim().startsWith("[") && line.trim().endsWith("]")) {
String rawLine = line.trim();
String sectionName = rawLine.substring(1, rawLine.length() - 1);
currentSection = new Section(sectionName);
sections.add(currentSection);
} else {
if (currentSection == null) {
currentSection = new Section("unname section" + (++unnamedSectionCounter));
sections.add(currentSection);
}
int indexOfEquals = line.indexOf('=');
String key = line.substring(0, indexOfEquals);
String data = line.substring(indexOfEquals + 1);
key = key.replace('[', ' ');
key = key.replace(']', ' ');
key = key.trim();
data = data.trim();
if (data.startsWith("\"") && data.endsWith("\"")) {
data = data.substring(1, data.length() - 1);
}
if (currentEntry == null || !currentEntry.getKey().equals(key)) {
currentEntry = new Entry(key);
currentSection.getEntries().add(currentEntry);
}
currentEntry.getData().add(data);
}
line = bufferedReader.readLine();
}
}
public List getSections() {
return sections;
}
}