Keep a separate list of record names

This commit is contained in:
Andrew Johnson
2022-05-13 13:17:46 -07:00
committed by Michael Davidsaver
parent 6176a81a76
commit 4d3a27fdb0
3 changed files with 16 additions and 4 deletions

View File

@@ -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'};
}

View File

@@ -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;

View File

@@ -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;