-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathplaydates
executable file
·105 lines (99 loc) · 2.58 KB
/
playdates
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/perl
use strict;
use warnings;
use YAML qw{LoadFile Load Dump};
use 5.010;
use Data::Dumper;
use Getopt::Long;
my $by_tag;
my $by_tag_parents;
my $by_group;
my $by_group_parents;
my $parents;
my $result = GetOptions( "parents" => \$parents );
my $yaml;
if (@ARGV) {
$yaml = LoadFile(@ARGV);
}
else {
my $contents = do { local $/; <DATA> };
$yaml = Load($contents);
}
while ( my $hash = shift @$yaml ) {
my ( $kid, $data ) = each %$hash;
my @tags = $data->{tags} ? @{ $data->{tags} } : ();
my @groups = $data->{groups} ? @{ $data->{groups} } : ();
for my $tag ( sort @tags ) {
push( @{ $$by_tag{$tag} }, $kid . ' (' . join( '; ', @groups ) . ')' );
if ($parents) {
while ( my ( $parent, $email ) = each %{ $data->{parents} } ) {
push( @{ $$by_tag_parents{$tag} }, "\"$parent\" <$email>" );
}
}
}
for my $group ( sort @groups ) {
push( @{ $$by_group{$group} }, $kid );
if ($parents) {
while ( my ( $parent, $email ) = each %{ $data->{parents} } ) {
push( @{ $$by_group_parents{$group} }, "\"$parent\" <$email>" );
}
}
}
my $parent_string = '';
if ($parents) {
my @parent_array;
while ( my ( $parent, $email ) = each %{ $data->{parents} } ) {
push( @parent_array, "\"$parent\" <$email>" );
}
$parent_string = join( ', ', @parent_array );
}
printf( "%s (%s) %s%s\n",
$kid,
join( ", ", @groups ),
@tags ? "... " . join( ", ", @tags ) : "",
$parent_string ? " - parents: $parent_string" : '' );
}
say '---';
while ( my ( $group, $kids ) = each %$by_group ) {
print "$group: ", join( ', ', sort @$kids );
print "\n";
}
if ($parents) {
say '---';
}
while ( my ( $group, $parents ) = each %$by_group_parents ) {
print "$group parents:\n", join( ', ', sort @$parents );
print "\n\n";
}
print Dump $by_tag;
if ($parents) {
say '---';
}
while ( my ( $tag, $parents ) = each %$by_tag_parents ) {
print "$tag parents:\n", join( ', ', sort @$parents );
print "\n\n";
}
__DATA__
- Milhouse:
groups:
- Springfield Elementary
parents:
Kirk: [email protected]
Luann: [email protected]
tags:
- Comic-Con
- Ralph:
groups:
- Springfield Elementary
- spelling bee
parents:
Clancy: [email protected]
Sarah: [email protected]
- Uter:
groups:
- Springfield Elementary
parents:
Tobias: [email protected]
Kathryn: [email protected]
tags:
- chocolate