From 84adefa331c4159d432d22840663c38f155cd4c1 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 20 Nov 2009 14:54:40 +0000 Subject: The R13B03 release. --- .../priv/bin/codeline_preprocessing.escript | 117 +++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100755 lib/erl_docgen/priv/bin/codeline_preprocessing.escript (limited to 'lib/erl_docgen/priv/bin/codeline_preprocessing.escript') diff --git a/lib/erl_docgen/priv/bin/codeline_preprocessing.escript b/lib/erl_docgen/priv/bin/codeline_preprocessing.escript new file mode 100755 index 0000000000..33a678d3a4 --- /dev/null +++ b/lib/erl_docgen/priv/bin/codeline_preprocessing.escript @@ -0,0 +1,117 @@ +#!/usr/bin/env escript +%% -*- erlang -*- +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009. All Rights Reserved. +%% +%% 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 online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%%---------------------------------------------------------------------- +%% File : codeline_preprocessing.escript +%% +%% Created : 10 Sep 2008 by Lars Thorsen +%%---------------------------------------------------------------------- + +%%====================================================================== +%% External functions +%%====================================================================== +%%---------------------------------------------------------------------- +%% Function: main/1 +%% Description: +%%---------------------------------------------------------------------- +main([InFile, OutFile]) -> + InDev = + case file:open(InFile, [read]) of + {ok,ID} -> + ID; + _ -> + halt(5) + end, + CPath=filename:dirname(InFile), + OutDev = + case file:open(OutFile, [write]) of + {ok,OD} -> + OD; + _ -> + halt(5) + end, + case re:compile("|/codeinclude>)") of + {ok, Mp} -> + parse(InDev, OutDev, CPath, Mp); + _ -> + halt(2) + end; +main(_) -> + usage(). + + +%%---------------------------------------------------------------------- +%% Function: main/1 +%% Description: +%%---------------------------------------------------------------------- +usage() -> + io:format("usage: codeline_preprocessing \n"), + halt(1). + + +%%====================================================================== +%% Internal functions +%%====================================================================== + +parse(InDev, OutDev, CPath, Mp) -> + case io:get_line(InDev, "") of + eof -> + file:close(OutDev), + file:close(InDev); + String -> + case re:run(String, Mp,[{capture, [1,2], list}]) of + {match,[File, []]} -> + case file:read_file(filename:join(CPath, File))of + {ok, Bin} -> + file:write(OutDev, "\n"); + _ -> + halt(3) + end; + {match,[File, Tag]} -> + String2 = get_code(filename:join(CPath, File), Tag), + file:write(OutDev, "\n"); + _ -> + file:write(OutDev, String) + end, + parse(InDev, OutDev, CPath, Mp) + end. + +%%---------------------------------------------------------------------- +%% Function: get_code/2 +%% Description: +%%---------------------------------------------------------------------- +get_code(File, Tag) -> + case file:read_file(File) of + {ok, Bin} -> + case re:run(Bin,"^" ++ Tag ++ "\n((.|\n)*)\n" ++ + Tag ++ "\$",[global, multiline, {capture, [1], binary}]) of + {match,[[Match]]} -> + Match; + _ -> + halt(4) + end; + _ -> + halt(3) + end. + + + -- cgit v1.2.3