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 + -
显示快捷键?