local LcovReporter = {}
LcovReporter.__index = LcovReporter


function LcovReporter.generate(files, includeFilter)
    local report = {}

    for _, file in ipairs(files) do
        if includeFilter(file) then
            table.insert(report, "TN:")
            table.insert(report, "SF:" .. file.path)
            local foundFirstHit = false
            for lineNumber, line in ipairs(file.lines) do
                if not line.ignored and not foundFirstHit then
                    foundFirstHit = true
                end

                if foundFirstHit and not line.ignored then
                    table.insert(report, ("DA:%d,%d"):format(lineNumber, line.hits))
                end
            end
            table.insert(report, ("LH:%d"):format(file.hits))
            table.insert(report, ("LF:%d"):format(file.hits + file.misses))
            table.insert(report, "end_of_record")
        end
    end

    return table.concat(report, "\n")
end


return LcovReporter
