docb_transform.erl
来自「OTP是开放电信平台的简称」· ERL 代码 · 共 162 行
ERL
162 行
%% ``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_transform).-export([file/1, file/2]).%% file(File) -> ok | {error, Reason}%% file(File, Opts) -> ok | {error, Reason}%% File = string(), file name with or without ".xml" extension%% Opts = [Opt]%% Reason = badfile | {badopt, Term}file(File0) -> file(File0, []).file(File0, RawOpts) -> File = filename:rootname(File0), % without extension Ext = case filename:extension(File0) of ".xml" -> ".xml"; ".sgml" -> ".sgml"; "" -> %% If the file is given without extension, we try to %% infer if the source file is XML or SGML. %% SGML is supported *internally within OTP* for %% backwards compatibility reasons. case filelib:is_regular(File++".xml") of true -> ".xml"; false -> ".sgml" end; _Ext0 -> % this is probably an error... ".xml" end, case filelib:is_regular(File++Ext) of true -> case parse(RawOpts) of {ok, Opts0} -> {ok, Cwd} = file:get_cwd(), Opts = [{src_type,Ext}, {src_dir,Cwd}, {src_file,File}, {{local_defs,term},[]}, {{local_defs,cite},[]} | Opts0], case docb_main:process(File, Opts) of errors -> ok; ok -> ok end; Error -> % {error, {badopt,Term}} Error end; false -> {error, badfile} end.parse(RawOpts) -> parse(RawOpts, []).%% Officially supported optionsparse([{html_mod,Module} | RawOpts], Opts) when is_atom(Module) -> parse(RawOpts, [{html_mod,Module} | Opts]);parse([{outdir,Dir} | RawOpts], Opts) when is_list(Dir) -> parse(RawOpts, [{outdir,Dir} | Opts]);parse([{number,N} | RawOpts], Opts) when is_integer(N) -> parse(RawOpts, [{number,integer_to_list(N)} | Opts]);parse([{number,Nstr} | RawOpts], Opts) -> % list when called from script parse(RawOpts, [{number,Nstr} | Opts]);parse([{ptype,Type} | RawOpts], Opts) when Type==unix; Type==windows -> parse(RawOpts, [{ptype,atom_to_list(Type)} | Opts]);parse([{ptype,Type} | RawOpts], Opts) -> % list when called from script parse(RawOpts, [{ptype,Type} | Opts]);parse([silent | RawOpts], Opts) -> put(option_silent, true), parse(RawOpts, [silent | Opts]);parse([{top,Index} | RawOpts], Opts) when is_list(Index) -> parse(RawOpts, [{top,Index} | Opts]);parse([{vsn,Vsn} | RawOpts], Opts) when is_list(Vsn) -> parse(RawOpts, [{vsn,Vsn} | Opts]);parse([{term_defs,File} | RawOpts], Opts) when is_list(File) -> Opts2 = get_defs(term, File, Opts), parse(RawOpts, Opts2);parse([{cite_defs,File} | RawOpts], Opts) when is_list(File) -> Opts2 = get_defs(cite, File, Opts), parse(RawOpts, Opts2);%% OTP internal options (SGML and PDF support etc.)parse([html | RawOpts], Opts) -> parse(RawOpts, [html | Opts]);parse([latex | RawOpts], Opts) -> parse(RawOpts, [latex | Opts]);parse([{man,Level} | RawOpts], Opts) -> % Level = 1..9 parse(RawOpts, [{man,Level} | Opts]);parse([{booksty,StyFile} | RawOpts], Opts) -> % "otpA4" | "otpBOOK" parse(RawOpts, [{booksty,StyFile} | Opts]);parse([{includepath,Dir} | RawOpts], Opts) -> parse(RawOpts, [{includepath,Dir} | Opts]);parse([showpaths | RawOpts], Opts) -> parse(RawOpts, [showpaths | Opts]);parse([straight | RawOpts], Opts) -> parse(RawOpts, [straight | Opts]);parse([{ent,Ent} | RawOpts], Opts) -> parse(RawOpts, [{ent,Ent} | Opts]);%% Undocumented optionsparse([{name, Name} | RawOpts], Opts) -> parse(RawOpts, [{name, Name} | Opts]);parse([framework_only | RawOpts], Opts) -> parse(RawOpts, [framework_only | Opts]);parse([kwicindex_only | RawOpts], Opts) -> parse(RawOpts, [kwicindex_only | Opts]);parse([], Opts) -> {ok, Opts};parse([Opt | _RawOpts], _Opts) -> {error, {badopt, Opt}}.%% Type = term | citeget_defs(Type, File, Opts) -> Key = {defs,Type}, {PrevDefs, Opts2} = case lists:keysearch(Key, 1, Opts) of {value, {_, Defs0}} -> {Defs0, lists:keydelete(Key, 1, Opts)}; false -> {[], Opts} end, NewDefs = case file:consult(File) of {ok, [DefL]} when is_list(DefL) -> DefL; {ok, _Terms} -> docb_util:message(error, "Skipping defs file ~s, does " "not contain one list", [File]), []; {error, Error} -> Expl = lists:flatten(file:format_error(Error)), docb_util:message(error, "Skipping defs file ~s, ~s", [File, Expl]), [] end, [{Key,PrevDefs++NewDefs} | Opts2].
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?