I am trying to iterate through elements of a struct, look for strings that include the format {...}, and replace them with a corresponding string from a hash. This is the data I'm using:
Request = Struct.new(:method, :url, :user, :password)
request = Request.new
request.user = "{user} {name}"
request.password = "{password}"
parameters = {"user" => "first", "name" => "last", "password" => "secret"}
This is attempt 1:
request.each do |value|
value.gsub!(/{(.+?)}/, parameters["\1"])
end
In this attempt, parameters["\1"] == nil.
Attempt 2:
request.each do |value|
value.scan(/{(.+?)}/) do |match|
value.gsub!(/{(.+?)}/, parameters[match[0]])
end
end
This results in request.user == "first first". Trying parameters[match] results in nil.
Can anyone assist solving this?