docb_tr_cite2html.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 137 行

ERL
137
字号
%% ``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_tr_cite2html).-export([extension/0, transform/3, rule/2, rule/3]).extension() ->    ".html".transform(_File, Tree, Opts) ->    purge(Tree, Opts).  purge({Tag, Attrs, [Header|Body]}, Opts) ->    CiteList = case docb_util:lookup_option({defs,cite}, Opts) of		   false -> [];		   Value  -> Value	       end,    B1 = purge_body(Body, CiteList),    B2 = lists:ukeysort(2, B1),    {Tag, Attrs, [Header|B2]}.purge_body([], _) ->    [];purge_body([{pcdata,_Attrs,_More}|Rest], CiteList) ->    purge_body(Rest, CiteList);purge_body([{cite,[{"ID","CDATA",ID}],More}|Rest], CiteList) ->    case lists:keysearch(ID, 1, CiteList) of	false ->	    [{cite, [{"NAME","CDATA",ID}, {"ID","CDATA",ID}], More}|	     purge_body(Rest, CiteList)];	{value, {ID, Name, _Description, _Responsible}} ->	    [{cite, [{"NAME","CDATA",Name}, {"ID","CDATA",ID}], More}|	     purge_body(Rest, CiteList)];	{value, {ID, Name, _Description}} ->	    [{cite, [{"NAME","CDATA",Name}, {"ID","CDATA",ID}], More}|	     purge_body(Rest, CiteList)]    end;purge_body([{_Tag,_Attrs,More}|Rest], CiteList) ->    lists:append(purge_body(More, CiteList),		 purge_body(Rest, CiteList)).rule([header|_], _) ->    {drop, ""};rule(_, _) ->    {drop, ""}.rule([cite|_], {_,[],[Header]}, Opts) ->    HeaderData = docb_html_util:all_header_data(Header),    {{docb_html_layout:chapter_top(HeaderData, Opts) ++      "\n<CENTER><H1>Bibliography</H1></CENTER>\n",      docb_html_layout:chapter_bot(Opts)}, Opts};rule([cite|_], {_,[],[Header|_]}, Opts) ->    HeaderData = docb_html_util:all_header_data(Header),    {{docb_html_layout:chapter_top(HeaderData, Opts) ++      "\n<CENTER><H1>Bibliography</H1></CENTER>\n<DL>\n",      "\n</DL>\n" ++ docb_html_layout:chapter_bot(Opts)}, Opts};rule([cite|_], {_,[Data],_}, Opts) ->    {{docb_html_layout:chapter_top(Data, Opts) ++      "\n<CENTER><H1>Bibliography</H1></CENTER>\n<DL>\n",      "\n</DL>\n" ++ docb_html_layout:chapter_bot(Opts)}, Opts};rule([cite|T], {A, B, [{citedef,C,			[{ctitle, [], [{pcdata,[],CTitle}]},			 {cauthor, [], [{pcdata,[],CAuthor}]},			 {chowpublished, [],			  [{pcdata,[],Chowpublished}]}]}]}, Opts) ->    CiteDef = CTitle ++ " " ++ CAuthor ++ " " ++ Chowpublished,    rule([cite|T], {A,B,[{citedef,C,[{pcdata,[],CiteDef}]}]}, Opts);rule([cite|_], {_,[Name,ID], [{citedef,[],[{pcdata,[],Def}]}]}, Opts) ->    CiteList =	case docb_util:lookup_option({defs,cite}, Opts) of	    false -> [];	    Value  -> Value	end,    case lists:keysearch(ID, 1, CiteList) of	false ->	    {{drop,"\n<DT><A NAME=\"" ++ ID ++ "\">" ++ 	      "<STRONG>" ++ ID ++ "</STRONG></A>\n<DD>" ++	      docb_html_util:pcdata_to_html(Def) ++ "\n"}, Opts};	{value, {ID, Name, Description, _Responsible}} ->	    docb_util:message(warning,			      "Global cite ~s overriding local", [ID]),	    {{drop,"\n<DT><A NAME=\"" ++ ID ++ "\">" ++	      "<STRONG>" ++ Name ++ "</STRONG></A>\n<DD>" ++	      docb_html_util:pcdata_to_html(Description) ++ "\n"},	     Opts};	{value, {ID, Name, Description}} ->	    docb_util:message(warning,			      "Global cite ~s overriding local", [ID]),	    {{drop,"\n<DT><A NAME=\"" ++ ID ++ "\">" ++ 	      "<STRONG>" ++ Name ++ "</STRONG></A>\n<DD>" ++	      docb_html_util:pcdata_to_html(Description) ++ "\n"}, Opts}    end;rule([cite|_], {_,[Name,ID],_}, Opts) ->  CiteList =	case docb_util:lookup_option({defs,cite}, Opts) of	    false -> [];	    Value  ->	Value	end,    case lists:keysearch(ID, 1, CiteList) of	false ->	    docb_util:message(error,			      "The cite ~s has no definition", [ID]),	    {{drop,"\n<DT><A NAME=\"" ++ ID ++ "\">" ++ 	      "<STRONG>" ++ ID ++ "</STRONG></A>\n<DD>" ++	      "??" ++ "\n"}, Opts};	{value, {ID, Name, Description, _Responsible}} ->	    {{drop,"\n<DT><A NAME=\"" ++ ID ++ "\">" ++	      "<STRONG>" ++ Name ++ "</STRONG></A>\n<DD>" ++	      docb_html_util:pcdata_to_html(Description) ++ "\n"},	     Opts};	{value, {ID, Name, Description}} ->	    {{drop,"\n<DT><A NAME=\"" ++ ID ++ "\">" ++ 	      "<STRONG>" ++ Name ++ "</STRONG></A>\n<DD>" ++	      docb_html_util:pcdata_to_html(Description) ++ "\n"}, Opts}    end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?