docb_gen.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 134 行
ERL
134 行
%% ``The contents of this file are subject to the Erlang Public License,%% Version 1.1, (the "License"); you may not use this file except in%% compliance with the License. You should have received a copy of the%% Erlang Public License along with this software. If not, it can be%% retrieved via the world wide web at http://www.erlang.org/.%% %% Software distributed under the License is distributed on an "AS IS"%% basis, WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See%% the License for the specific language governing rights and limitations%% under the License.%% %% The Initial Developer of the Original Code is Ericsson Utvecklings AB.%% Portions created by Ericsson are Copyright 1999-2000, Ericsson %% Utvecklings AB. All Rights Reserved.''%% %% $Id$%%-module(docb_gen).-export([module/1, module/2, users_guide/1, users_guide/2]).-record(args, {suffix=".xml", layout=docb_edoc_xml_cb, def=[], includes=[], preprocess=false}).%% module(File) -> ok | {error, Reason}%% module(File, Opts) -> ok | {error, Reason}%% File = string(), file name with or without ".erl" extension%% Opts -- see code%% Reason = badfile | {badopt, Term}module(File0) -> module(File0, []).module(File0, RawOpts) -> File = case filename:extension(File0) of ".erl" -> File0; _ -> File0++".erl" end, case filelib:is_regular(File) of true -> case parse(RawOpts, #args{}) of {ok, Args} -> Opts = [{def, Args#args.def}, {includes, Args#args.includes}, {preprocess, Args#args.preprocess}, {app_default, "OTPROOT"}, {file_suffix, Args#args.suffix}, {dir, "."}, {layout, Args#args.layout}], edoc:file(File, Opts); Error -> Error end; false -> {error, badfile} end.%% users_guide(File) -> ok | {error, Reason}%% users_guide(File, Opts) -> ok | {error, Reason}%% File = string()%% Opts -- see code%% Reason = badfile | {badopt, Opt}users_guide(File) -> users_guide(File, []).users_guide(File, RawOpts) -> case filelib:is_regular(File) of true -> case parse(RawOpts, #args{}) of {ok, Args} -> Opts = [{def, Args#args.def}, {app_default, "OTPROOT"}, {file_suffix, Args#args.suffix}, {layout, Args#args.layout}], Env = edoc_lib:get_doc_env(Opts), {ok, Tags} = edoc_extract:file(File, overview, Env, Opts), Data = edoc_data:overview("Overview", Tags, Env, Opts), F = fun(M) -> M:overview(Data, Opts) end, Text = edoc_lib:run_layout(F, Opts), OutFile = "chapter" ++ Args#args.suffix, edoc_lib:write_file(Text, ".", OutFile); Error -> Error end; false -> {error, badfile} end.parse([{output,xml} | RawOpts], Args) -> parse(RawOpts, Args); % default, no update of record necessaryparse([{output,sgml} | RawOpts], Args) -> parse(RawOpts, Args#args{suffix=".sgml", layout=docb_edoc_sgml_cb});parse([{def,Defs} | RawOpts], Args) -> case parse_defs(Defs) of true -> Args2 = Args#args{def=Args#args.def++Defs}, parse(RawOpts, Args2); false -> {error, {badopt, {def,Defs}}} end;parse([{includes,Dirs} | RawOpts], Args) -> case parse_includes(Dirs) of true -> Args2 = Args#args{includes=Args#args.includes++Dirs}, parse(RawOpts, Args2); false -> {error, {badopt, {includes,Dirs}}} end;parse([{preprocess,Bool} | RawOpts], Args) when Bool==true; Bool==false -> parse(RawOpts, Args#args{preprocess=Bool});parse([], Args) -> {ok, Args};parse([Opt | _RawOpts], _Args) -> {error, {badopt, Opt}}.parse_defs(Defs) -> lists:all(fun({Key,Val}) when is_atom(Key), is_list(Val) -> true; (_) -> false end, Defs).parse_includes(Dirs) -> lists:all(fun(Dir) when is_list(Dir) -> true; (_) -> false end, Dirs).
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?