module PinchHitter
  module Message
    module Json
      def json_message(file, overrides={})
        json_file = load_json_file file
        replace_json json_file, overrides
      end

      def valid_json?(json)
        begin
          JSON.parse json
          return true
        rescue
          return false
        end
      end

    private
      def load_json_file(filename)
        IO.read filename
      end

      def replace_json(content, overrides={})
        return content if overrides.empty?
        modified = child = parent = JSON.parse(content).clone
        overrides.each do |key, value| 

          key.each do |part|
            parent = child 
            child = parent.send "fetch", part
          end
          parent[key.last] = value
        end
        modified.to_s
      end
    end
  end
end