File: get_messages.pl

package info (click to toggle)
libhtml-formhandler-perl 0.40057-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,320 kB
  • ctags: 685
  • sloc: perl: 8,849; makefile: 2
file content (72 lines) | stat: -rwxr-xr-x 1,990 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/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";
    }

}