def parse(text)
m = REGEXP.match(text)
unless m
yield nil, nil
return
end
host = m['host']
host = (host == '-') ? nil : host
user = m['user']
user = (user == '-') ? nil : user
time = m['time']
time = @mutex.synchronize { @time_parser.parse(time) }
method = m['method']
path = m['path']
code = m['code'].to_i
code = nil if code == 0
size = m['size']
size = (size == '-') ? nil : size.to_i
referer = m['referer']
referer = (referer == '-') ? nil : referer
agent = m['agent']
agent = (agent == '-') ? nil : agent
record = {
"host" => host,
"user" => user,
"method" => method,
"path" => path,
"code" => code,
"size" => size,
"referer" => referer,
"agent" => agent,
}
record["time"] = m['time'] if @keep_time_key
yield time, record
end