@@ -334,18 +334,25 @@ defmodule Phoenix.HTML.Form do
334
334
[ acc | option ( option_key , option_value , [ ] , selected_values ) ]
335
335
336
336
options , acc when is_list ( options ) ->
337
- if not Keyword . has_key? ( options , :key ) do
338
- raise ArgumentError ,
339
- "expected :key key when building <option> from keyword list: #{ inspect ( options ) } "
340
- end
341
-
342
- if not Keyword . has_key? ( options , :value ) do
343
- raise ArgumentError ,
344
- "expected :value key when building <option> from keyword list: #{ inspect ( options ) } "
345
- end
346
-
347
- { option_key , options } = Keyword . pop ( options , :key )
348
- { option_value , options } = Keyword . pop ( options , :value )
337
+ { option_key , options } =
338
+ case List . keytake ( options , :key , 0 ) do
339
+ nil ->
340
+ raise ArgumentError ,
341
+ "expected :key key when building <option> from keyword list: #{ inspect ( options ) } "
342
+
343
+ { { :key , key } , options } ->
344
+ { key , options }
345
+ end
346
+
347
+ { option_value , options } =
348
+ case List . keytake ( options , :value , 0 ) do
349
+ nil ->
350
+ raise ArgumentError ,
351
+ "expected :value key when building <option> from keyword list: #{ inspect ( options ) } "
352
+
353
+ { { :value , value } , options } ->
354
+ { value , options }
355
+ end
349
356
350
357
[ acc | option ( option_key , option_value , options , selected_values ) ]
351
358
0 commit comments