[Bps-public-commit] r16070 - in Prophet/branches/dispatcher: lib/Prophet/CLI

sartak at bestpractical.com sartak at bestpractical.com
Thu Sep 25 16:24:22 EDT 2008


Author: sartak
Date: Thu Sep 25 16:24:22 2008
New Revision: 16070

Modified:
   Prophet/branches/dispatcher/   (props changed)
   Prophet/branches/dispatcher/lib/Prophet/CLI/Command.pm

Log:
 r72477 at onn:  sartak | 2008-09-25 15:41:37 -0400
 This code was moved to CLI


Modified: Prophet/branches/dispatcher/lib/Prophet/CLI/Command.pm
==============================================================================
--- Prophet/branches/dispatcher/lib/Prophet/CLI/Command.pm	(original)
+++ Prophet/branches/dispatcher/lib/Prophet/CLI/Command.pm	Thu Sep 25 16:24:22 2008
@@ -51,124 +51,6 @@
     }
 }
 
-=head2 edit_text [text] -> text
-
-Filters the given text through the user's C<$EDITOR> using
-L<Proc::InvokeEditor>.
-
-=cut
-
-sub edit_text {
-    my $self = shift;
-    my $text = shift;
-
-    # don't invoke the editor in a script, the test will appear to hang
-    die "Tried to invoke an editor in a test script!"
-        if $ENV{IN_PROPHET_TEST_COMMAND};
-
-    require Proc::InvokeEditor;
-    return scalar Proc::InvokeEditor->edit($text);
-}
-
-=head2 edit_hash hash => hashref, ordering => arrayref
-
-Filters the hash through the user's C<$EDITOR> using L<Proc::InvokeEditor>.
-
-No validation is done on the input or output.
-
-If the optional ordering argument is specified, hash keys will be presented
-in that order (with unspecified elements following) for edit.
-
-If the record class for the current type defines a C<props_not_to_edit>
-routine, those props will not be presented for editing.
-
-False values are not returned unless a prop is removed from the output.
-
-=cut
-
-sub edit_hash {
-    my $self = shift;
-    validate( @_, { hash => 1, ordering => 0 } );
-    my %args = @_;
-    my $hash = $args{'hash'};
-    my @ordering = @{ $args{'ordering'} || [] };
-    my $record = $self->_get_record_object;
-    my $do_not_edit = $record->can('props_not_to_edit') ? $record->props_not_to_edit : '';
-
-    if (@ordering) {
-        # add any keys not in @ordering to the end of it
-        my %keys_in_ordering;
-        map { $keys_in_ordering{$_} = 1 if exists($hash->{$_}) } @ordering;
-        map { push @ordering, $_ if !exists($keys_in_ordering{$_}) } keys %$hash;
-    } else {
-        @ordering = sort keys %$hash;
-    }
-
-    # filter out props we don't want to present for editing
-    @ordering = grep { !/$do_not_edit/ } @ordering;
-
-    my $input = join "\n", map { "$_: $hash->{$_}" } @ordering;
-
-    my $output = $self->edit_text($input);
-
-    die "Aborted.\n" if $input eq $output;
-
-    # parse the output
-    my $filtered = {};
-    foreach my $line (split "\n", $output) {
-        if ($line =~ m/^([^:]+):\s*(.*)$/) {
-            my $prop = $1;
-            my $val = $2;
-            # don't return empty values
-            $filtered->{$prop} = $val unless !($val);
-        }
-    }
-    no warnings 'uninitialized';
-
-    # if a key is deleted intentionally, set its value to ''
-    foreach my $prop (keys %$hash) {
-        if (!exists $filtered->{$prop} and $prop =~ !/$do_not_edit/) {
-            $filtered->{$prop} = '';
-        }
-    }
-
-    # filter out unchanged keys as they clutter changesets if they're set again
-    map { delete $filtered->{$_} if $hash->{$_} eq $filtered->{$_} } keys %$filtered;
-
-    return $filtered;
-}
-
-=head2 edit_props arg => str, defaults => hashref, ordering => arrayref
-
-Returns a hashref of the command's props mixed in with any default props.
-If the "arg" argument is specified, (default "edit", use C<undef> if you only
-want default arguments), then L</edit_hash> is invoked on the property list.
-
-If the C<ordering> argument is specified, properties will be presented in that
-order (with unspecified props following) if filtered through L</edit_hash>.
-
-=cut
-
-sub edit_props {
-    my $self = shift;
-    my %args = @_;
-    my $arg  = $args{'arg'} || 'edit';
-    my $defaults = $args{'defaults'};
-
-    my %props;
-    if ($defaults) {
-        %props = (%{ $defaults }, %{ $self->props });
-    } else {
-        %props = %{$self->props};
-    }
-
-    if ($self->has_arg($arg)) {
-        return $self->edit_hash(hash => \%props, ordering => $args{'ordering'});
-    }
-
-    return \%props;
-}
-
 __PACKAGE__->meta->make_immutable;
 no Moose;
 



More information about the Bps-public-commit mailing list