1 package Promulger::List;
11 use Promulger::Config;
30 default => sub { {} },
39 my ($self, $proto) = @_;
40 $proto =~ s/-request$//;
41 my $path = find_path_for($proto);
44 $maybe_list = __PACKAGE__->load($path->stringify);
50 my ($self, $new) = @_;
51 return if $self->subscribers->{$new};
52 $self->subscribers->{$new} = 1;
53 $self->store(find_path_for($self->listname)->stringify);
59 return unless exists $self->subscribers->{$ex};
60 delete $self->subscribers->{$ex};
61 $self->store(find_path_for($self->listname)->stringify);
65 # XXX implement ACLs and other shinies -- apeiron, 2010-03-13
66 sub accept_posts_from {
67 my ($self, $sender) = @_;
68 return grep { $sender eq $_ } keys %{$self->subscribers};
73 my $config = Promulger::Config->config;
74 my $name = $self->listname;
75 croak "${name} already a known list" if $self->resolve($name);
76 my $path = find_path_for($name);
78 my $tie = tie my @aliases, 'Tie::File', $config->{aliases};
80 my @list_aliases = ($name, "${name}-request");
82 for my $list_alias (@list_aliases) {
83 if(grep { /^${list_alias}:/ } @aliases) {
84 croak "${list_alias} already in $config->{aliases}";
87 qq(${list_alias}: "|$config->{bin_root}/pmg msg -c $config->{config_file}"\n);
90 $self->store($path->stringify);
95 my $config = Promulger::Config->config;
96 my $name = $self->listname;
98 my $tie = tie my @aliases, 'Tie::File', $config->{aliases};
101 my @list_aliases = ($name, "${name}-request");
103 $_ !~ /^$list_aliases[0]:/ &&
104 $_ !~ /^$list_aliases[1]:/
107 unlink find_path_for($self->listname)->stringify;
112 my $path = file(Promulger::Config->config->{list_home}, $proto . ".list");
116 'http://mitpress.mit.edu/sicp/';