#! /usr/bin/env node

var logfmt = require('../logfmt');

logfmt.old_parse = function(line) {

  var pairs = line.match(/([a-zA-Z0-9\%\_\-\.\^]+)=?(([a-zA-Z0-9\.\-\_\.\/\@]+)|("([^\"]+)"))?/g)
  var attrs = {}

  if(!pairs) { return attrs }

  pairs.forEach(function(pair) {
    parts = pair.split("=")
    key   = parts.shift()
    value = parts.join("=")
    //strip quotes
    if(value[0] == '"'){
      value = value.substring(1, value.length-1)
    }
    //casts
    if(value == '') value = true;
    else if(value == 'true') value = true;
    else if(value == 'false') value = false;
    else if(/^\d+$/.test(value)) value = parseInt(value);
    attrs[key] = value
  })

  return attrs;
}


var args = process.argv.slice(2);
var n = parseInt(args[0]);

console.log('' + n + ' lines');

var time = new Date().getTime();
for(i = 0; i < n; i ++){
  var test_string = "foo=bar a=14 baz=\"hello kitty\" cool%story=bro f %^asdf code=H12";
  logfmt.old_parse(test_string)
}
console.log('parse: ' + (new Date().getTime() - time) + 'ms');

var time = new Date().getTime();
for(i = 0; i < n; i ++){
  var test_string = "foo=bar a=14 baz=\"hello kitty\" cool%story=bro f %^asdf code=H12";
  logfmt.parse(test_string)
}
console.log('parse2: ' + (new Date().getTime() - time) + 'ms');