my $self = shift;
my $path = shift or _usage(q{$codeowners->write_to_filepath($filepath)});
- path($path)->spew_utf8([map { "$_\n" } @{$self->write_to_array('')}]);
+ path($path)->spew_utf8([map { "$_\n" } @{$self->write_to_array}]);
}
=method write_to_fh
=cut
sub write_to_fh {
- my $self = shift;
- my $fh = shift or _usage(q{$codeowners->write_to_fh($fh)});
+ my $self = shift;
+ my $fh = shift or _usage(q{$codeowners->write_to_fh($fh)});
+ my $charset = shift;
- for my $line (@{$self->write_to_array}) {
+ for my $line (@{$self->write_to_array($charset)}) {
print $fh "$line\n";
}
}
=cut
sub write_to_string {
- my $self = shift;
+ my $self = shift;
+ my $charset = shift;
- my $str = join("\n", @{$self->write_to_array}) . "\n";
+ my $str = join("\n", @{$self->write_to_array($charset)}) . "\n";
return \$str;
}
sub write_to_array {
my $self = shift;
- my $charset = shift // 'UTF-8';
+ my $charset = shift;
my @format;
}
}
- if ($charset) {
+ if (defined $charset) {
$_ = encode($charset, $_) for @format;
}
return \@format;
return $count;
}
+=method rename_owner
+
+ $codeowners->rename_owner($old_name => $new_name);
+
+Rename an owner.
+
+Nothing happens if the file does not have an owner with the old name.
+
+=cut
+
+sub rename_owner {
+ my $self = shift;
+ my $old_owner = shift;
+ my $new_owner = shift;
+ $old_owner && $new_owner or _usage(q{$codeowners->rename_owner($owner => $new_owner)});
+
+ $self->_clear;
+
+ my $count = 0;
+
+ for my $line (@{$self->_lines}) {
+ next if !exists $line->{owners};
+ for (my $i = 0; $i < @{$line->{owners}}; ++$i) {
+ next if $line->{owners}[$i] ne $old_owner;
+ $line->{owners}[$i] = $new_owner;
+ ++$count;
+ }
+ }
+
+ return $count;
+}
+
=method rename_project
$codeowners->rename_project($old_name => $new_name);