--- deliantra/Deliantra/Deliantra.pm 2007/01/05 14:17:49 1.79 +++ deliantra/Deliantra/Deliantra.pm 2007/02/06 22:08:14 1.80 @@ -386,6 +386,7 @@ my %arc; my ($more, $prev); + my $comment; open my $fh, "<:raw:perlio:utf8", $path or Carp::croak "$path: $!"; @@ -399,8 +400,10 @@ s/\s+$//; if (/^end$/i) { last; + } elsif (/^arch (\S+)$/i) { push @{ $arc{inventory} }, attr_thaw normalize_arch $parse_block->(_name => $1); + } elsif (/^lore$/i) { while (<$fh>) { last if /^endlore\s*$/i; @@ -419,7 +422,10 @@ } } elsif (/^(\S+)\s*(.*)$/) { $arc{lc $1} = $2; - } elsif (/^\s*($|#)/) { + } elsif (/^\s*#/) { + $arc{_comment} .= $_; + + } elsif (/^\s*$/) { # } else { warn "$path: unparsable line '$_' in arch $arc{_name}"; @@ -433,9 +439,12 @@ s/\s+$//; if (/^more$/i) { $more = $prev; + } elsif (/^\s*#/) { + $comment .= $_; } elsif (/^object (\S+)$/i) { my $name = $1; - my $arc = attr_thaw normalize_object $parse_block->(_name => $name); + my $arc = attr_thaw normalize_object $parse_block->(_name => $name, _comment => $comment); + delete $arc{_comment} unless length $arc{_comment}; $arc->{_atype} = 'object'; if ($more) { @@ -447,7 +456,8 @@ $more = undef; } elsif (/^arch (\S+)$/i) { my $name = $1; - my $arc = attr_thaw normalize_arch $parse_block->(_name => $name); + my $arc = attr_thaw normalize_arch $parse_block->(_name => $name, _comment => $comment); + delete $arc{_comment} unless length $arc{_comment}; $arc->{_atype} = 'arch'; if ($more) {