# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # package Apache2::PerlSections::Dump; use strict; use warnings FATAL => 'all'; our $VERSION = '0.01'; use Apache2::PerlSections; our @ISA = qw(Apache2::PerlSections); use Data::Dumper; # Process all saved packages sub package { return shift->saved } # We don't want to save anything sub save { return } # We don't want to post any config to apache, we are dumping sub post_config { return } sub dump { my $self = shift; unless (ref $self) { $self = $self->new; } $self->handler(); return join "\n", @{$self->directives}, '1;', '__END__', ''; } sub store { my ($class, $filename) = @_; require IO::File; my $fh = IO::File->new(">$filename") or die "can't open $filename $!\n"; $fh->print($class->dump); $fh->close; } sub dump_array { my ($self, $name, $entry) = @_; $self->add_config(Data::Dumper->Dump([$entry], ["*$name"])); } sub dump_hash { my ($self, $name, $entry) = @_; for my $elem (sort keys %{$entry}) { $self->add_config(Data::Dumper->Dump([$entry->{$elem}], ["\$$name"."{'$elem'}"])); } } sub dump_entry { my ($self, $name, $entry) = @_; return if not defined $entry; my $type = ref($entry); if ($type eq 'SCALAR') { $self->add_config(Data::Dumper->Dump([$$entry],[$name])); } if ($type eq 'ARRAY') { $self->dump_array($name,$entry); } else { $self->add_config(Data::Dumper->Dump([$entry],[$name])); } } sub dump_special { my ($self, @data) = @_; my @dump = grep { defined } @data; return unless @dump; $self->add_config(Data::Dumper->Dump([\@dump],['*'.$self->SPECIAL_NAME])); } 1; __END__