Fixed default value handling in all "binaries", and some smaller changes to pind
[PsN.git] / lib / model / problem / code_record_subs.pm
blob61179833532a462986271069d5f68f5eddfdd86a
1 # {{{ _format_record
3 start _format_record
5 if ( defined $self -> {'verbatim_first'}
6 or defined $self -> {'code'}
7 or defined $self -> {'verbatim_last'} ) {
8 my @class_names = split('::',ref($self));
9 my $fname = uc(pop(@class_names));
10 @formatted = "\$".$fname;
13 if ( defined $self -> {'verbatim_first'} ) {
14 push( @formatted, '"FIRST' );
15 push( @formatted, @{$self -> {'verbatim_first'}} );
17 if ( defined $self -> {'code'} ) {
18 push( @formatted, @{$self -> {'code'}} );
20 if ( defined $self -> {'verbatim_last'} ) {
21 push( @formatted, '"LAST' );
22 push( @formatted, @{$self -> {'verbatim_last'}} );
25 end _format_record
27 # }}} _format_record
29 # {{{ _read_options
31 start _read_options
33 my $in = 0;
34 if ( defined $self -> {'record_arr'} ) {
35 @{$self -> {'code'}} = ();
36 my ( $first, $last ) = ( 0, 0 );
37 for ( @{$self -> {'record_arr'}} ) {
38 # Get rid of $RECORD and unwanted spaces
39 s/^\s*\$\w+//;
40 if ( /\" (\w+) = EVTREC\((\d+),(\d+)\)/ ) {
41 $self -> {'secondary_columns'}[$2][$3][0] = $1;
42 next;
44 if( /^\"\s+FIRST/ ) {
45 $first = 1;
46 next;
48 if( /^\"\s+LAST/ ) {
49 $first = 0;
50 $last = 1;
51 next;
53 if( $first or $last ) {
54 if( /^\"/ ) {
55 if( $first ) {
56 push( @{$self -> {'verbatim_first'}},$_ );
57 } else {
58 push( @{$self -> {'verbatim_last'}},$_ );
60 } else {
61 $first = 0;
62 $last = 0;
63 push @{$self -> {'code'}},$_;
65 } else {
66 push @{$self -> {'code'}},$_;
71 end _read_options
73 # }}} _read_options