1# frozen_string_literal: true
 2
 3require "blather"
 4require "rack"
 5
 6module FormToH
 7	refine Blather::Stanza::X do
 8		def to_h
 9			params = Rack::Utils.default_query_parser.make_params
10			fields.each do |field|
11				Rack::Utils.default_query_parser.normalize_params(
12					params,
13					field.var,
14					field.value,
15					32
16				)
17			end
18			params.to_h
19		end
20	end
21
22	refine ::Hash do
23		def to_fields
24			map { |k, v| { var: k.to_s, value: v.to_s } }
25		end
26
27		def to_form(type)
28			Blather::Stanza::Iq::X.new(type).tap do |form|
29				form.fields = to_fields
30			end
31		end
32	end
33end