The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

X12::Parser 0.80
-------------------------------------------------------------------------------
1. Some errors related to file handling have been fixed. Versions 0.50
   and 0.60 were impacted. get_next_pos_loop, get_next_pos_level_loop,
   print_tree were impacted.
   The error was as a result of calling readline() on a closed file 
   handle. 

2. The pods have been better formatted.


X12::Parser 0.60
-------------------------------------------------------------------------------
1. Attention: users of previous version  
   parse_file() has been renamed to parsefile().
   parsefile ( file => $file, conf => $conf );
   Users using the parse() methods to parse a X12 file should
   now use the parsefile() method. 

2. Attention: users of previous version  
   parse() method signature has changed.
   new signature is parse ( handle => $handle, conf => $conf );
   takes an already open file handle as input.

3. closefile() method is added.
   If you do not parse the entire X12 file using get_next_loop()
   method, then it is recommended that you call closefile() to 
   close the file being parsed. 


X12::Parser 0.50
-------------------------------------------------------------------------------
1. Many improvements (almost a rewrite) have gone into this version. 
Most of the interfaces have been kept the same except some spell corrections.

2. New class X12::Parser::Tree has been added. Earlier the X12::Parser::Cf
class was used to read the cf file as well as maintain the information in
object form. Now they are separated out. X12::Parser::Tree simplifies the
representation of cf file in object format and is a much cleanser approach.

3. X12::Parser::Cf has been rewritten. Old goto statements are gone.

4. X12::Parser module is rewritten. As a result of X12::Parser::Tree, the
X12::Parser module is now much more readable and uses a cleaner approach.
It can handle segment separators of the for ~, ~LF, ~CRLF. 

5. New method get_subelement_separator() is added.

6. Spelling correction from seperator to separator is done.

7. Additional test files for the new modules.

8. Added new method parse_file, replacement to parse. The parse()
method in the future will be used for file handles.


X12::Parser 0.09
-------------------------------------------------------------------------------
1. Package Level variables in both the Parser.pm and Cf.pm module have
been removed. This would allow a user to call the parse method on multiple
files using same/different config files.

2. Removed warnings that appeared when a end of the X12 file was reached.


X12::Parser 0.08
-------------------------------------------------------------------------------
A whole lot of changes have gone into this version.
The X12::Parser can now handle files of any size. The earlier versions
of the parser relied on reading the whole X12 file into an array before
parsing. X12::Parser can handle files with multiple ISA segments having
different segment seperators (note it cannot handle different transaction
types within the same file).

1. _parse() method is split into 2 functions _parse_loop_start() and
_parse_loop(). Instead of loading the whole file into an array the file
is read as it is being parsed. _parse_loop_start() and _parse_loop() 
could have been handled within the same function but have kept it
seperate for simplicity. _parse_loop_start() detects start of loops.
_parse_loop() return the loop segments.

2. _set_seperator() function is added. This function sets the segment
seperator and element seperator.

3. get_segments() function is removed. Since we no longer maintain the
whole file in an array, it is difficult to gets the segments in a loop
just by giving the line number where the loop starts.

4. reset_pos() function is removed. Not really used and also now that
we parse the file serially there is no need for this function.

5. get_loop_segment() no longer needs $loop as input.

6. Changes to man page section of the module to reflect the above changes.

7. get_next_pos_loop(), and get_next_pos_level_loop() return segment positions
starting with 1. In previous versions 0 would correspond to the first segment.


X12::Parser 0.04
-------------------------------------------------------------------------------
1. Moved _get_level_one and _get_next_level functions from
Parser.pm to Cf.pm (the new functions in Cf.pm are called
get_level_one and get_next_level). This keeps configuration
related functions within the Cf.pm module.

2. Moved $self members/elements to file globals.

3. Changed $c_L to $current_level and $s to $element_seperator

4. Added $segment_seperator. Added get_segment_seperator() and
get_element_seperator() functions. Modified $line_seperator to
$orig_line_seperator
   

X12::Parser 0.03
-------------------------------------------------------------------------------
1. Fixed problem with parser running out of memory.
Still has issue with very large files.


X12::Parser 0.01 - initial release
-------------------------------------------------------------------------------
1. First release