summaryrefslogtreecommitdiff
path: root/src/mbgl/util/rapidjson.cpp
blob: 0504f8c002cdce1417187f09639f70cb30556677 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <mbgl/util/rapidjson.hpp>
#include <mbgl/util/string.hpp>

#include <algorithm>

namespace mbgl {

std::string formatJSONParseError(const std::string& json, const JSDocument& doc) {
    const size_t offset = std::min(doc.GetErrorOffset(), json.length());
    const size_t lastBreak = json.find_last_of('\n', offset);
    const size_t col = offset - (lastBreak == std::string::npos ? 0 : lastBreak);
    const size_t line = lastBreak == std::string::npos ? 1 : std::count(json.data(), json.data() + lastBreak, '\n') + 2;
    return "on line " + util::toString(line) + " col " + util::toString(col) + ": " +
           rapidjson::GetParseError_En(doc.GetParseError());
}

} // namespace mbgl