From 4d3a27fdb0bee43380861e871c8f33d479af27af Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Fri, 13 May 2022 13:17:46 -0700 Subject: [PATCH] Keep a separate list of record names --- modules/database/src/tools/DBD.pm | 9 +++++++++ modules/database/src/tools/DBD/Output.pm | 10 ++++++---- modules/database/src/tools/DBD/Parser.pm | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/modules/database/src/tools/DBD.pm b/modules/database/src/tools/DBD.pm index b411ca810..e541ad8f7 100644 --- a/modules/database/src/tools/DBD.pm +++ b/modules/database/src/tools/DBD.pm @@ -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'}; } diff --git a/modules/database/src/tools/DBD/Output.pm b/modules/database/src/tools/DBD/Output.pm index 79bf05daa..d09d3d810 100644 --- a/modules/database/src/tools/DBD/Output.pm +++ b/modules/database/src/tools/DBD/Output.pm @@ -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; diff --git a/modules/database/src/tools/DBD/Parser.pm b/modules/database/src/tools/DBD/Parser.pm index b4cef4781..d93588465 100644 --- a/modules/database/src/tools/DBD/Parser.pm +++ b/modules/database/src/tools/DBD/Parser.pm @@ -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;