gethelpvar.m
来自「含有多种ICA算法的eeglab工具箱」· M 代码 · 共 317 行
M
317 行
% gethelpvar() - convert a Matlab m-file help-message header % into out variables % Usage:% >> [vartext, varnames] = gethelpvar( filein, varlist);%% Inputs:% filein - input filename (with .m extension)% varlist - optional list of variable to return. If absent% retrun all variables.%% Outputs:% vartext - variable text% varnames - name of the varialbe returned;%% Notes: see help2html() for file format%% Example: >> gethelpvar( 'gethelpvar.m', 'filein')%% Author: Arnaud Delorme, Salk Institute 20 April 2002%% See also: help2html()%123456789012345678901234567890123456789012345678901234567890123456789012% Copyright (C) 2001 Arnaud Delorme, Salk Institute, arno@salk.edu%% This program is free software; you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation; either version 2 of the License, or% (at your option) any later version.%% This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the% GNU General Public License for more details.%% You should have received a copy of the GNU General Public License% along with this program; if not, write to the Free Software% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA% $Log: gethelpvar.m,v $% Revision 1.3 2002/05/21 19:23:09 arno% matlab PC compatibility%% Revision 1.2 2002/04/23 00:22:13 arno% adding carraige return in text%% Revision 1.1 2002/04/22 23:17:05 arno% Initial revision%% Revision 1.1 2002/04/05 17:39:45 jorn% Initial revision%function [alltext, allvars] = gethelpvar( filename, varlist )if nargin < 1 help gethelpvar; return;end;% input file% ---------- fid = fopen( filename, 'r');if fid == -1 error('File not found');end;cont = 1;% scan file% -----------str = fgets( fid );% if first line is the name of the function, reloadif str(1) ~= '%', str = fgets( fid ); end; % state variables% -----------maindescription = 1;varname = [];oldvarname = [];vartext = []; newvar = 0;allvars = {};alltext = {};indexout = 1;while (str(1) == '%') str = deblank(str(2:end-1)); % --- DECODING INPUT newvar = 0; str = deblank2(str); if ~isempty(str) % find a title % ------------ i2d = findstr(str, ':'); newtitle = 0; if ~isempty(i2d) i2d = i2d(1); switch lower(str(1:i2d)) case { 'usage:' 'authors:' 'author:' 'notes:' 'note:' 'input:' ... 'inputs:' 'outputs:' 'output' 'example:' 'examples:' 'see also:' }, newtitle = 1; end; if (i2d == length(str)) & (str(1) ~= '%'), newtitle = 1; end; end; if newtitle tilehtml = str(1:i2d); newtitle = 1; oldvarname = varname; oldvartext = vartext; if i2d < length(str) %vartext = formatstr(str(i2d+1:end), g.refcall); vartext = str(i2d+1:end); else vartext = []; end; varname = []; else % not a title % ------------ % scan lines [tok1 strrm] = strtok( str ); [tok2 strrm] = strtok( strrm ); if ~isempty(tok2) & ( tok2 == '-' | tok2 == '=') % new variable newvar = 1; oldvarname = varname; oldvartext = vartext; varname = tok1; strrm = deblank(strrm); % remove tail blanks strrm = deblank(strrm(end:-1:1)); % remove initial blanks %strrm = formatstr( strrm(end:-1:1), g.refcall); strrm = strrm(end:-1:1); vartext = strrm; else % continue current text str = deblank(str); % remove tail blanks str = deblank(str(end:-1:1)); % remove initial blanks %str = formatstr( str(end:-1:1), g.refcall ); str = str(end:-1:1); if isempty(vartext) vartext = str; else if ~isempty(varname) vartext = [ vartext 10 str]; % espace if in array else if length(vartext)>3 & all(vartext( end-2:end) == '.') vartext = [ deblank2(vartext(1:end-3)) 10 str]; % espace if '...' else vartext = [ vartext 10 str]; % CR otherwise end; end; end; end; newtitle = 0; end; % --- END OF DECODING str = fgets( fid ); % test if last entry % ------------------ if str(1) ~= '%' if ~newtitle if ~isempty(oldvarname) allvars{indexout} = oldvarname; alltext{indexout} = oldvartext; indexout = indexout + 1; %fprintf( fo, [ '</tr>' g.normrow g.normcol1 g.var '</td>\n' ], oldvarname); %fprintf( fo, [ g.normcol2 g.vartext '</td></tr>\n' ], oldvartext); else if ~isempty(oldvartext) %fprintf( fo, [ g.normcol2 g.tabtext '</td></tr>\n' ], oldvartext); end; end; newvar = 1; oldvarname = varname; oldvartext = vartext; end; end; % test if new input for an array % ------------------------------ if newvar | newtitle if maindescription if ~isempty(oldvartext) % FUNCTION TITLE maintext = oldvartext; maindescription = 0; functioname = oldvarname( 1:findstr( oldvarname, '()' )-1); %fprintf( fo, [g.normrow g.normcol1 g.functionname '</td>\n'],upper(functioname)); %fprintf( fo, [g.normcol2 g.description '</td></tr>\n'], [ upper(oldvartext(1)) oldvartext(2:end) ]); % INSERT IMAGE IF PRESENT %imagename = [ htmlfile( 1:findstr( htmlfile, functioname )-1) functioname '.jpg' ]; %if exist( imagename ) % do not make link if the file does not exist %fprintf(fo, [ g.normrow g.doublecol ... % '<CENTER><BR><A HREF="' imagename '" target="_blank"><img SRC=' imagename ... % ' height=150 width=200></A></CENTER></td></tr>' ]); %end; end; elseif ~isempty(oldvarname) allvars{indexout} = oldvarname; alltext{indexout} = oldvartext; indexout = indexout + 1; %fprintf( fo, [ '</tr>' g.normrow g.normcol1 g.var '</td>\n' ], oldvarname); %fprintf( fo, [ g.normcol2 g.vartext '</td></tr>\n' ], oldvartext); else if ~isempty(oldvartext) %fprintf( fo, [ g.normcol2 g.text '</td></tr>\n' ], oldvartext); end; end; end; % print title % ----------- if newtitle %fprintf( fo, [ g.normrow g.doublecol '<BR></td></tr>' g.normrow g.normcol1 g.title '</td>\n' ], tilehtml); if str(1) ~= '%' % last input %fprintf( fo, [ g.normcol2 g.text '</td></tr>\n' ], vartext); end; oldvarname = []; oldvartext = []; end; else str = fgets( fid ); end;end;fclose( fid );% remove quotes of variables% --------------------------for index = 1:length(allvars) if allvars{index}(1) == '''', allvars{index} = eval( allvars{index} ); end;end;if exist('varlist') == 1 if ~iscell(varlist), varlist = { varlist }; end; for index = 1:length(varlist) loc = strmatch( varlist{index}, allvars); if ~isempty(loc) newtxt{index} = alltext{loc(1)}; else disp([ 'warning: variable ''' varlist{index} ''' not found']); newtxt{index} = ''; end; end; alltext = newtxt;end; return;% -----------------% sub-functions% -----------------function str = deblank2( str ); % deblank two ways str = deblank(str(end:-1:1)); % remove initial blanks str = deblank(str(end:-1:1)); % remove tail blanks return;function strout = formatstr( str, refcall ); [tok1 strrm] = strtok( str ); strout = []; while ~isempty(tok1) tokout = functionformat( tok1, refcall ); if isempty( strout) strout = tokout; else strout = [strout ' ' tokout ]; end; [tok1 strrm] = strtok( strrm ); end;return; function tokout = functionformat( tokin, refcall ); tokout = tokin; % default [test, realtokin, tail] = testfunc1( tokin ); if ~test, [test, realtokin, tail] = testfunc2( tokin ); end; if test i1 = findstr( refcall, '%s'); i2 = findstr( refcall(i1(1):end), ''''); if isempty(i2) i2 = length( refcall(i1(1):end) )+1; end; filename = [ realtokin refcall(i1+2:i1+i2-2)]; if exist( filename ) % do not make link if the file does not exist tokout = sprintf( [ '<A HREF="' refcall '">%s</A>' tail ' ' ], realtokin, realtokin ); end; end; return;function [test, realtokin, tail] = testfunc1( tokin ) % test if is string is 'function()[,]' test = 0; realtokin = ''; tail = ''; if ~isempty( findstr( tokin, '()' ) ) realtokin = tokin( 1:findstr( tokin, '()' )-1); if length(realtokin) < (length(tokin)-2) tail = tokin(end); else tail = []; end; test = 1; end;return;function [test, realtokin, tail] = testfunc2( tokin ) % test if is string is 'FUNCTION[,]' test = 0; realtokin = ''; tail = ''; if all( upper(tokin) == tokin) if tokin(end) == ',' realtokin = tokin(1:end-1); tail = ','; else realtokin = tokin; end; testokin = realtokin; testokin(findstr(testokin, '_')) = 'A'; testokin(findstr(testokin, '2')) = 'A'; if all(double(testokin) > 64) & all(double(testokin) < 91) test = 1; end; realtokin = lower(realtokin); end;return;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?