#include "parser.h" #include "piconfig.h" PIVector parse(const PIString & path) { PIVector ret; PIFile f; if (!f.open(path, PIIODevice::ReadOnly)) return ret; PIString ext = f.fileInfo().extension(); //PIString fc = PIString::fromUTF8(f.readAll()); if (ext == "conf") return parseConf(f, PIDir(f.fileInfo().dir()).absolutePath() + "/"); return ret; } PIVector parseConf(PIFile & file, const PIString & dir) { PIVector ret; if (!file.isOpened()) return ret; ParserSection ps; while (!file.isEnd()) { PIString line = file.readLine().trim(); if (line.isEmpty()) continue; if (line.startsWith("[") && line.endsWith("]")) { if (!ps.files.isEmpty()) ret << ps; ps.name = line.cutLeft(1).cutRight(1).trim(); ps.files.clear(); continue; } PIString path = line; if (!PIDir(PIFile::fileInfo(line).dir()).isAbsolute()) { //piCout << "rel, add dir"; path.insert(0, dir); } //piCout << line; ps.files << PIPair(line, path); } if (!ps.files.isEmpty()) ret << ps; return ret; }