[Python-checkins] CVS: python/dist/src/Doc/lib libshlex.tex,1.6,1.7

Guido van Rossum python-dev@python.org
Mon, 1 May 2000 16:14:50 -0400 (EDT)


Update of /projects/cvsroot/python/dist/src/Doc/lib
In directory eric:/projects/python/develop/guido/src/Doc/lib

Modified Files:
	libshlex.tex 
Log Message:
Eric Raymond:

(1) Added and documented the capability for shlex to handle
lexical-level inclusion and a stack of input sources.  Also, the input
stream member is now documented, and the constructor takes an optional
source-filename.  The class provides facilities to generate error
messages that track file and line number.

(2) Add a convenience function to generate C-compiler style error
leaders.


Index: libshlex.tex
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Doc/lib/libshlex.tex,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** libshlex.tex	2000/04/03 20:13:54	1.6
--- libshlex.tex	2000/05/01 20:14:47	1.7
***************
*** 14,23 ****
  Python applications.
  
! \begin{classdesc}{shlex}{\optional{stream}}
  A \class{shlex} instance or subclass instance is a lexical analyzer
  object.  The initialization argument, if present, specifies where to
  read characters from. It must be a file- or stream-like object with
  \method{read()} and \method{readline()} methods.  If no argument is given,
! input will be taken from \code{sys.stdin}.
  \end{classdesc}
  
--- 14,26 ----
  Python applications.
  
! \begin{classdesc}{shlex}{\optional{stream}, \optional{file}}
  A \class{shlex} instance or subclass instance is a lexical analyzer
  object.  The initialization argument, if present, specifies where to
  read characters from. It must be a file- or stream-like object with
  \method{read()} and \method{readline()} methods.  If no argument is given,
! input will be taken from \code{sys.stdin}.  The second optional 
! argument is a filename string, which sets the initial value of the
! \member{infile} member.  If the stream argument is omitted or
! equal to \code{sys.stdin}, this second argument defauilts to ``stdin''.
  \end{classdesc}
  
***************
*** 44,47 ****
--- 47,82 ----
  \end{methoddesc}
  
+ \begin{methoddesc}{read_token}{}
+ Read a raw token.  Ignore the pushback stack, and do not interpret source
+ requests.  (This is not ordinarily a useful entry point, and is
+ documented here only for the sake of completeness.)
+ \end{methoddesc}
+ 
+ \begin{methoddesc}{openhook}{filename}
+ When shlex detects a source request (see \member{source} below)
+ this method is given the following token as argument, and expected to 
+ return a tuple consisting of a filename and an opened stream object. 
+ 
+ Normally, this method just strips any quotes off the argument and
+ treats it as a filename, calling \code{open()} on it.  It is exposed so that
+ you can use it to implement directory search paths, addition of
+ file extensions, and other namespace hacks.
+ 
+ There is no corresponding `close' hook, but a shlex instance will call
+ the \code{close()} method of the sourced input stream when it returns EOF.
+ \end{methoddesc}
+ 
+ \begin{methoddesc}{error_leader}{\optional{file}, \optional{line}}
+ This method generates an error message leader in the format of a
+ Unix C compiler error label; the format is '"\%s", line \%d: ',
+ where the \%s is replaced with the name of the current source file and
+ the \%d with the current input line number (the optional arguments
+ can be used to override these).
+ 
+ This convenience is provided to encourage shlex users to generate
+ error messages in the standard, parseable format understood by Emacs
+ and other Unix tools.
+ \end{methoddesc}
+ 
  Instances of \class{shlex} subclasses have some public instance
  variables which either control lexical analysis or can be used
***************
*** 71,74 ****
--- 106,136 ----
  quote types protect each other as in the shell.)  By default, includes
  \ASCII{} single and double quotes.
+ \end{memberdesc}
+ 
+ \begin{memberdesc}{infile}
+ The name of the current input file, as initially set at class
+ instantiation time or stacked by later source requests.  It may
+ be useful to examine this when constructing error messages.
+ \end{memberdesc}
+ 
+ \begin{memberdesc}{instream}
+ The input stream from which this shlex instance is reading characters.
+ \end{memberdesc}
+ 
+ \begin{memberdesc}{source}
+ This member is None by default.  If you assign a string to it, that
+ string will be recognized as a lexical-level inclusion request similar
+ to the `source' keyword in various shells.  That is, the immediately
+ following token will opened as a filename and input taken from that
+ stream until EOF, at which point the \code{close()} method of that
+ stream will be called and the input source will again become the
+ original input stream. Source requests may be stacked any number of
+ levels deep.
+ \end{memberdesc}
+ 
+ \begin{memberdesc}{debug}
+ If this member is numeric and 1 or more, a shlex instance will print
+ verbose progress output on its behavior.  If you need to use this,
+ you can read the module source code to learn the details.
  \end{memberdesc}