summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--plugins/perl/lib/Xchat/List/Network/AutoJoin.pm28
-rw-r--r--plugins/perl/lib/Xchat/List/Network/Entry.pm5
2 files changed, 16 insertions, 17 deletions
diff --git a/plugins/perl/lib/Xchat/List/Network/AutoJoin.pm b/plugins/perl/lib/Xchat/List/Network/AutoJoin.pm
index 16036a9d..8b4e40d2 100644
--- a/plugins/perl/lib/Xchat/List/Network/AutoJoin.pm
+++ b/plugins/perl/lib/Xchat/List/Network/AutoJoin.pm
@@ -10,26 +10,24 @@ use overload
 
 sub new {
 	my $class = shift;
-	my $line = shift;
 
 	my @autojoins;
 
-	if ( $line ) {
-		my ( $channels, $keys ) = split / /, $line, 2;
-		my @channels = split /,/, $channels;
-		my @keys     = split /,/, ($keys || '');
+	return bless \@autojoins, $class;
+}
 
-		for my $channel ( @channels ) {
-			my $key = shift @keys;
-			$key = '' unless defined $key;
+sub add {
+	my $self = shift;
 
-			push @autojoins, {
-				channel => $channel,
-				key     => $key,
-				};
-		}
-	}
-	return bless \@autojoins, $class;
+	my $line = shift;
+
+	my ( $channel, $key ) = split /,/, $line, 2;
+	$key = $key || '';
+
+	push @$self, {
+		channel => $channel,
+		key     => $key,
+		};
 }
 
 sub channels {
diff --git a/plugins/perl/lib/Xchat/List/Network/Entry.pm b/plugins/perl/lib/Xchat/List/Network/Entry.pm
index e40b48bd..6f2aa925 100644
--- a/plugins/perl/lib/Xchat/List/Network/Entry.pm
+++ b/plugins/perl/lib/Xchat/List/Network/Entry.pm
@@ -39,6 +39,8 @@ sub parse {
 	my @fields = split /\n/, $data;
 	chomp @fields;
 
+	$entry->{ autojoins } = Xchat::List::Network::AutoJoin->new();
+
 	for my $field ( @fields ) {
 	SWITCH: for ( $field ) {
 			/^($letter_key_re)=(.*)/ && do {
@@ -47,8 +49,7 @@ sub parse {
 			};
 
 			/^J.(.*)/ && do {
-				$entry->{ autojoins } =
-					Xchat::List::Network::AutoJoin->new( $1 );
+				$entry->{ autojoins }->add( $1 );
 			};
 
 			/^F.(.*)/ && do {