25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-28 16:34:13 +01:00

Support for "> ." in YAML configuration files

This commit is contained in:
Badlop 2015-01-28 17:16:10 +01:00
parent 0c501b760f
commit 87d2eb5f9a
2 changed files with 37 additions and 1 deletions

View File

@ -693,6 +693,29 @@ in Erlang terms. The format is still supported, but it is highly recommended
to convert it to the new YAML format using \term{convert\_to\_yaml} command to convert it to the new YAML format using \term{convert\_to\_yaml} command
from \term{ejabberdctl} (see~\ref{ejabberdctl} and \ref{list-eja-commands} for details). from \term{ejabberdctl} (see~\ref{ejabberdctl} and \ref{list-eja-commands} for details).
If you want to specify some options using the old Erlang format,
you can set them in an additional cfg file, and include it using
the \option{include\_config\_file} option, see \ref{includeconfigfile}
for the option description and a related example in \ref{accesscommands}.
If you just want to provide an erlang term inside an option,
you can use the \term{"> erlangterm."} syntax for embedding erlang terms in a YAML file, for example:
\begin{verbatim}
modules:
mod_cron:
tasks:
- time: 10
units: seconds
module: mnesia
function: info
arguments: "> []."
- time: 3
units: seconds
module: ejabberd_auth
function: try_register
arguments: "> [\"user1\", \"localhost\", \"pass\"]."
\end{verbatim}
\makesubsection{hostnames}{Host Names} \makesubsection{hostnames}{Host Names}
\ind{options!hosts}\ind{host names} \ind{options!hosts}\ind{host names}

View File

@ -190,7 +190,7 @@ consult(File) ->
{ok, []} -> {ok, []} ->
{ok, []}; {ok, []};
{ok, [Document|_]} -> {ok, [Document|_]} ->
{ok, Document}; {ok, parserl(Document)};
{error, Err} -> {error, Err} ->
Msg1 = "Cannot load " ++ File ++ ": ", Msg1 = "Cannot load " ++ File ++ ": ",
Msg2 = p1_yaml:format_error(Err), Msg2 = p1_yaml:format_error(Err),
@ -207,6 +207,19 @@ consult(File) ->
end end
end. end.
parserl([$>, $\s | String]) ->
{ok, A2, _} = erl_scan:string(String),
{ok, A3} = erl_parse:parse_term(A2),
A3;
parserl(B) when is_binary(B) ->
parserl(binary_to_list(B));
parserl({A, B}) ->
{parserl(A), parserl(B)};
parserl([El|Tail]) ->
[parserl(El) | parserl(Tail)];
parserl(Other) ->
Other.
%% @doc Convert configuration filename to absolute path. %% @doc Convert configuration filename to absolute path.
%% Input is an absolute or relative path to an ejabberd configuration file. %% Input is an absolute or relative path to an ejabberd configuration file.
%% And returns an absolute path to the configuration file. %% And returns an absolute path to the configuration file.