diff options
author | Anders Svensson <[email protected]> | 2011-10-14 10:01:22 +0200 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2011-10-17 12:26:47 +0200 |
commit | 1327c7c7d098a7593e5458bc5c06fd9459e73de3 (patch) | |
tree | af9bd2595a5dd59193869740e0cdd9d4a3b01c80 /lib/diameter/src | |
parent | d8ec8f4f35707581fa55f4e97fc8264b7adf0cab (diff) | |
download | otp-1327c7c7d098a7593e5458bc5c06fd9459e73de3.tar.gz otp-1327c7c7d098a7593e5458bc5c06fd9459e73de3.tar.bz2 otp-1327c7c7d098a7593e5458bc5c06fd9459e73de3.zip |
Allow @name/@prefix to be set with diameterc
Diffstat (limited to 'lib/diameter/src')
-rw-r--r-- | lib/diameter/src/compiler/diameter_spec_util.erl | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/diameter/src/compiler/diameter_spec_util.erl b/lib/diameter/src/compiler/diameter_spec_util.erl index e9221ed00a..e62ba05427 100644 --- a/lib/diameter/src/compiler/diameter_spec_util.erl +++ b/lib/diameter/src/compiler/diameter_spec_util.erl @@ -34,19 +34,28 @@ %% %% Output: orddict() -parse(Path, Options) -> - put({?MODULE, verbose}, lists:member(verbose, Options)), +parse(Path, Opts) -> + put({?MODULE, verbose}, lists:member(verbose, Opts)), {ok, B} = file:read_file(Path), Chunks = chunk(B), - Spec = make_spec(Chunks), + Spec = reset(make_spec(Chunks), Opts, [name, prefix]), true = groups_defined(Spec), %% sanity checks true = customs_defined(Spec), %% - Full = import_enums(import_groups(import_avps(insert_codes(Spec), - Options))), + Full = import_enums(import_groups(import_avps(insert_codes(Spec), Opts))), true = enums_defined(Full), %% sanity checks true = v_flags_set(Spec), Full. +reset(Spec, Opts, Keys) -> + lists:foldl(fun(K,S) -> reset(lists:keyfind(K, 1, Opts), S) end, + Spec, + Keys). + +reset({Key, Str}, Spec) -> + orddict:store(Key, ?ATOM(Str), Spec); +reset(_, Spec) -> + Spec. + %% Optional reports when running verbosely. report(What, Data) -> report(get({?MODULE, verbose}), What, Data). |