Keep a separate list of record names
This commit is contained in:
committed by
Michael Davidsaver
parent
6176a81a76
commit
4d3a27fdb0
@@ -35,6 +35,7 @@ sub new {
|
||||
'DBD::Record' => {},
|
||||
'DBD::Registrar' => {},
|
||||
'DBD::Variable' => {},
|
||||
'RECORDS' => [],
|
||||
'COMMENTS' => [],
|
||||
'POD' => []
|
||||
};
|
||||
@@ -120,6 +121,14 @@ sub record {
|
||||
return $this->{'DBD::Record'}->{$record_name};
|
||||
}
|
||||
|
||||
sub add_record {
|
||||
my ($this, $record_name) = @_;
|
||||
push @{$this->{RECORDS}}, $record_name;
|
||||
}
|
||||
sub record_names {
|
||||
return @{shift->{RECORDS}};
|
||||
}
|
||||
|
||||
sub registrars {
|
||||
return shift->{'DBD::Registrar'};
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ sub OutputDBD {
|
||||
|
||||
sub OutputDB {
|
||||
my ($out, $dbd) = @_;
|
||||
OutputRecords($out, $dbd->records);
|
||||
OutputRecords($out, $dbd);
|
||||
}
|
||||
|
||||
sub OutputMenus {
|
||||
@@ -123,9 +123,11 @@ sub OutputBreaktables {
|
||||
}
|
||||
|
||||
sub OutputRecords {
|
||||
my ($out, $records) = @_;
|
||||
while (my ($name, $rec) = each %{$records}) {
|
||||
next if $name ne $rec->name; # Alias
|
||||
my ($out, $dbd) = @_;
|
||||
foreach my $name ($dbd->record_names) {
|
||||
my $rec = $dbd->record($name);
|
||||
die "No record '$name'"
|
||||
unless $rec && $rec->isa('DBD::Record');
|
||||
printf $out "record(%s, \"%s\") {\n", $rec->recordtype->name, $name;
|
||||
printf $out " alias(\"%s\")\n", $_
|
||||
foreach $rec->aliases;
|
||||
|
||||
@@ -297,6 +297,7 @@ sub parse_record {
|
||||
}
|
||||
elsif (m/\G \}/xgc) {
|
||||
print " Record-End:\n" if $debug;
|
||||
$dbd->add_record($record_name);
|
||||
$dbd->add($rec);
|
||||
popContext("record($record_type, $record_name)");
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user