Provided by: libstar-parser-perl_0.59-4_all bug

NAME

       STAR::Parser - Perl extension for parsing STAR compliant files (with no nested loops).

   Version
       This documentation refers to version 0.59 of this module.

SYNOPSIS

         use STAR::Parser;

         ($data) = STAR::Parser->parse('1fbm.cif');

         ($dict) = STAR::Parser->parse(-file=>'mmcif_dict',
                                       -dict=>1,
                                       -options=>'l');  #logs activity

DESCRIPTION

       STAR::Parser is one of several related Perl modules for parsing STAR compliant files (such as CIF and
       mmCIF files). Currently, these modules include STAR::Parser, STAR::DataBlock, STAR::Dictionary,
       STAR::Writer, STAR::Checker, and STAR::Filter.

       STAR::Parser is the parsing module, with the class method parse for parsing any STAR compliant files or
       dictionaries, as long as they do not contain nested loops (i.e., only one level of loop is supported).
       Upon parsing of a file, an array of DataBlock objects is returned (one for each data_ entry in the file).
       The class STAR::DataBlock contains object methods for these objects.  STAR::DataBlock is automatically
       accessible through STAR::Parser.  Upon parsing of a dictionary (indicated with the "-dict=>1" parameter),
       an array of Dictionary objects is returned. STAR::Dictionary is a sub-class of STAR::DataBlock.

       The methods of this module and the accompanying modules (STAR::DataBlock, STAR::Checker, etc.) support
       "named parameters" style for passing arguments. If only one argument is mandatory, then it may be passed
       in either a "named parameters" or "unnamed parameters" style, for example:

              @objs = STAR::Parser->parse( -file=>$file, -options=>'d' );  #debugging

              @objs = STAR::Parser->parse( -file=>$file );  #no options
          or: @objs = STAR::Parser->parse( $file );

CLASS METHODS

   parse
         Usage:  @objs = STAR::Parser->parse(-file=>$file[,
                                             -dict=>1,
                                             -options=>$options]);

            or:  @objs = STAR::Parser->parse($file);

         Examples:

         1)  @objs = STAR::Parser->parse('1fbm.cif');
             $data = $objs[0];

             OR:

             ($data) = STAR::Parser->parse('1fbm.cif');

         2)  @objs = STAR::Parser->parse('7files.txt');
             foreach $obj (@objs) {
                 # do something, see STAR::DataBlock
             }

         3)  @objs = STAR::Parser->parse(-file=>'mmcif_dict',
                                         -dict=>1,
                                         -options=>'l'); #logs activity
             $dict = @objs[0];

       This method first searches the file and creates a DataBlock object for each data_ identifier found in the
       file. If no data_ identifier is found, then only one DataBlock object will be created (with
       "$d='untitled'", see below). If parse is invoked with the "-dict=>1" option, then a Dictionary object is
       created for each data_ identifier found.

       Next, the method populates the data structure of each DataBlock or Dictionary object.  The parsed data
       may be queried or accessed by object methods of the STAR::DataBlock and STAR::Dictionary modules.  See
       the documentation for STAR::DataBlock and STAR::Dictionary.

       The method always returns an array of objects, even if it contains only one object (if there is only one
       data_ block in the file).

       Internally, the parsed data is stored in a multidimensional hash with keys for data blocks ($d), save
       blocks ($s), categories ($c), and items ($i).  For a file, $s will always be '-', since there are no save
       blocks in files.  For a dictionary, $s will be '-' outside of save_ blocks, and 'CATEGORY' or '_item'
       inside save_CATEGORY or save__item blocks (capitalization depends on the user's dictionary.)  If a file
       is parsed that contains no data_ identifier, then $d becomes 'untitled'. $c refers to a category, such as
       _atom_site and $i refers to an item, such as _atom_site.id.

       The method may be invoked with an $options string. These options are the following letters which may be
       concatenated in any order:

         d  writes debugging output to STDERR
         l  writes program activity log to STDERR

COMMENTS

       This module provides no error checking of files or objects, either against the dictionary, or otherwise.
       While the module is applicable to parsing either a file or a dictionary, dictionary information is not
       currently used in the parsing of files. So, for example, information about parent-child relationships
       between items is not present in a DataBlock object. Functionality related to these issues is being
       provided in additional modules such as STAR::Checker, and STAR::Filter.

AUTHOR

       Wolfgang Bluhm, mail@wbluhm.com

   Acknowledgments
       Thanks to Phil Bourne, Helge Weissig, Anne Kuller, Doug Greer, Michele Bluhm, and others for support,
       help, and comments.

COPYRIGHT

       A full copyright statement is provided with the distribution Copyright (c) 2000 University of California,
       San Diego

SEE ALSO

       STAR::DataBlock, STAR::Dictionary.