1010? MODULEDOC (false ).
1111
1212-export ([
13+ add_value /3 ,
1314 get_value /2 ,
1415 get_value /3 ,
1516 fetch_value /2 ,
@@ -112,6 +113,14 @@ extract_common_params(Spec) ->
112113 DurationUnit = duration_unit (Spec ),
113114 {Registry , Name , Labels , Help , CallTimeout , DurationUnit , Data }.
114115
116+ ? DOC (false ).
117+ ? DOC (#{equiv => get_value (Key , Spec , undefined )}).
118+ -spec add_value (Key :: atom (), Value :: any (), Spec :: prometheus_metric :spec ()) -> any ().
119+ add_value (Key , Value , Spec ) when is_list (Spec ) ->
120+ [{Key , Value } | Spec ];
121+ add_value (Key , Value , Spec ) when is_map (Spec ) ->
122+ Spec #{Key => Value }.
123+
115124? DOC (false ).
116125? DOC (#{equiv => get_value (Key , Spec , undefined )}).
117126-spec get_value (Key :: atom (), Spec :: prometheus_metric :spec ()) -> any ().
@@ -120,17 +129,26 @@ get_value(Key, Spec) ->
120129
121130? DOC (false ).
122131-spec get_value (Key :: atom (), Spec :: prometheus_metric :spec (), Default :: any ()) -> any ().
123- get_value (Key , Spec , Default ) ->
124- proplists :get_value (Key , Spec , Default ).
132+ get_value (Key , Spec , Default ) when is_list (Spec ) ->
133+ proplists :get_value (Key , Spec , Default );
134+ get_value (Key , Spec , Default ) when is_map (Spec ) ->
135+ maps :get (Key , Spec , Default ).
125136
126137? DOC (false ).
127138-spec fetch_value (Key :: atom (), Spec :: prometheus_metric :spec ()) -> any () | no_return ().
128- fetch_value (Key , Spec ) ->
139+ fetch_value (Key , Spec ) when is_list ( Spec ) ->
129140 case proplists :get_value (Key , Spec ) of
130141 undefined ->
131142 erlang :error ({missing_metric_spec_key , Key , Spec });
132143 Value ->
133144 Value
145+ end ;
146+ fetch_value (Key , Spec ) ->
147+ case maps :get (Key , Spec , undefined ) of
148+ undefined ->
149+ erlang :error ({missing_metric_spec_key , Key , Spec });
150+ Value ->
151+ Value
134152 end .
135153
136154% %====================================================================
0 commit comments