require 'json'

module Util
  $tpl="tpl_";

  def prefix(key)
    return $tpl + key;
  end

  def string(key)
    return ENV[prefix(key)] || "";
  end

  def integer(key)
    return ENV[prefix(key)].to_i;
  end

  def boolean(key)
    value = string(key);
    return value == "true" ? true : false;
  end

  def exists(key)
   return ! ENV[prefix(key)].nil?;
  end

  def parse(value)
    parser = JSON::Ext::Parser.new(value,{:quirks_mode => true})
    return parser.parse();
  end

  def array(key)
    interpret = boolean(key+"_json");
    length = integer(key+"_length");
    arr = Array.new;
    value = nil;
    length.times { |i|
      value = infer(key+"_"+i.to_s);
      if interpret
        value = parse(value);
      end
      arr.push(value);
    }
    return arr;
  end

  def infer(key)
    value = string(key);
    if value == "true" || value == "false"
      return boolean(key);
    end
    return value;
  end
end
