/util/get_messages.pl
http://github.com/gshank/html-formhandler · Perl · 72 lines · 41 code · 12 blank · 19 comment · 4 complexity · ae22783518461db058f260173fcd6657 MD5 · raw file
- #!/usr/bin/env perl
- #============================================================
- # util/get_messages.pl
- #
- # This is a utility to pull all of the messages out of the
- # FormHandler fields (and the Types package), for easy
- # updating of I18N files.
- #
- # Writes out file util/messages that contains Dumper
- # output for current messages, so that changes to messages
- # can be tracked.
- #
- # Could also be used to construct customized messages in the
- # form.
- #============================================================
- use strict;
- use warnings;
- use Cwd;
- use File::Find;
- use Class::Load ':all';
- use Data::Dumper;
- use lib ( getcwd() . '/lib');
- my @directories = ( getcwd() . "/lib/HTML/FormHandler/Field" );
- my @field_types;
- find(\&wanted, @directories);
- # get base Field class messages
- my $base_messages = $HTML::FormHandler::Field::class_messages;
- # get messages from Types module
- use HTML::FormHandler::Types;
- my $type_messages = $HTML::FormHandler::Types::class_messages;
- my $all_messages = [ { 'Field' => { %$base_messages } },
- { 'Types' => { %$type_messages } }];
- # get messages from the Field classes
- foreach my $type (@field_types) {
- my $class = "HTML::FormHandler::Field::$type";
- my $messages = eval '$HTML::FormHandler::Field::' . $type . '::class_messages';
- next unless keys %$messages;
- push @$all_messages, { $type => $messages };
- }
- $Data::Dumper::Terse = 1;
- my $output = Dumper($all_messages);
- my $outfile = getcwd() . '/util/messages';
- open( my $fh, '>', $outfile ) or die "Unable to open $outfile";
- print $fh $output;
- close $fh;
- # you can pull in the arrayref of hashrefs that's written out
- my $recovered = eval $output;
- sub wanted {
- my $type = $_;
- return if $type eq '.';
- $type =~ s/\.pm$//;
- return if $type eq 'Result';
- my $field_class = "HTML::FormHandler::Field::$type";
- if( try_load_class( $field_class ) ) {
- push @field_types, $type;
- }
- else {
- print "did not load $type\n";
- }
- }