From: Charles McGarvey Date: Wed, 4 May 2022 01:07:22 +0000 (-0600) Subject: Rename group iterator accessors X-Git-Tag: v0.902~1 X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=b334578b1eb03deabcdcc02f324e7d2323c7965e;p=chaz%2Fp5-File-KDBX Rename group iterator accessors --- diff --git a/Changes b/Changes index 9f43e78..16a5ca3 100644 --- a/Changes +++ b/Changes @@ -3,6 +3,7 @@ Revision history for File-KDBX. {{$NEXT}} * Added support for 32-bit perls. + * API change: Rename iterator accessors on group to all_*. * Declared perl 5.10.0 prerequisite. I have no intention of supporting 5.8 or earlier. * Fixed more other broken tests -- thanks CPAN testers. diff --git a/lib/File/KDBX.pm b/lib/File/KDBX.pm index d62b5ea..5d188fb 100644 --- a/lib/File/KDBX.pm +++ b/lib/File/KDBX.pm @@ -342,7 +342,7 @@ might increase this value. For example, setting the KDF to Argon2 will increase least C (i.e. C<0x00040000>) because Argon2 was introduced with KDBX4. This method never returns less than C (i.e. C<0x00030001>). That file version is so -ubiquitious and well-supported, there are seldom reasons to dump in a lesser format nowadays. +ubiquitous and well-supported, there are seldom reasons to dump in a lesser format nowadays. B If you dump a database with a minimum version higher than the current L, the dumper will typically issue a warning and automatically upgrade the database. This seems like the safest behavior in order @@ -637,7 +637,7 @@ sub groups { my %args = @_ % 2 == 0 ? @_ : (base => shift, @_); my $base = delete $args{base} // $self->root; - return $base->groups_deeply(%args); + return $base->all_groups(%args); } ############################################################################## @@ -695,7 +695,7 @@ sub entries { my %args = @_ % 2 == 0 ? @_ : (base => shift, @_); my $base = delete $args{base} // $self->root; - return $base->entries_deeply(%args); + return $base->all_entries(%args); } ############################################################################## @@ -716,7 +716,7 @@ sub objects { my %args = @_ % 2 == 0 ? @_ : (base => shift, @_); my $base = delete $args{base} // $self->root; - return $base->objects_deeply(%args); + return $base->all_objects(%args); } sub __iter__ { $_[0]->objects } @@ -1909,22 +1909,27 @@ __END__ use File::KDBX; + # Create a new database from scratch my $kdbx = File::KDBX->new; + # Add some objects to the database my $group = $kdbx->add_group( name => 'Passwords', ); - my $entry = $group->add_entry( title => 'My Bank', + username => 'mreynolds', password => 's3cr3t', ); + # Save the database to the filesystem $kdbx->dump_file('passwords.kdbx', 'M@st3rP@ssw0rd!'); - $kdbx = File::KDBX->load_file('passwords.kdbx', 'M@st3rP@ssw0rd!'); + # Load the database from the filesystem into a new database instance + my $kdbx2 = File::KDBX->load_file('passwords.kdbx', 'M@st3rP@ssw0rd!'); - $kdbx->entries->each(sub { + # Iterate over database entries, print entry titles + $kdbx2->entries->each(sub { my ($entry) = @_; say 'Entry: ', $entry->title; }); diff --git a/lib/File/KDBX/Entry.pm b/lib/File/KDBX/Entry.pm index 8596aa2..be44ae7 100644 --- a/lib/File/KDBX/Entry.pm +++ b/lib/File/KDBX/Entry.pm @@ -1055,7 +1055,8 @@ There is also some metadata associated with an entry. Each entry in a database i a UUID. An entry can also have an icon associated with it, and there are various timestamps. Take a look at the attributes to see what's available. -A B is a subclass of L. +A B is a subclass of L. View its documentation to see other attributes +and methods available on entries. =head2 Placeholders diff --git a/lib/File/KDBX/Group.pm b/lib/File/KDBX/Group.pm index 1af2c81..9ef603b 100644 --- a/lib/File/KDBX/Group.pm +++ b/lib/File/KDBX/Group.pm @@ -121,9 +121,9 @@ sub entries { return $entries; } -=method entries_deeply +=method all_entries - \&iterator = $kdbx->entries_deeply(%options); + \&iterator = $kdbx->all_entries(%options); Get an L over I within a group. Supports the same options as L, plus some new ones: @@ -135,7 +135,7 @@ plus some new ones: =cut -sub entries_deeply { +sub all_entries { my $self = shift; my %args = @_; @@ -143,7 +143,7 @@ sub entries_deeply { my $auto_type = delete $args{auto_type}; my $history = delete $args{history}; - my $groups = $self->groups_deeply(%args); + my $groups = $self->all_groups(%args); my @entries; return File::KDBX::Iterator->new(sub { @@ -229,9 +229,9 @@ sub groups { return $groups; } -=method groups_deeply +=method all_groups - \&iterator = $group->groups_deeply(%options); + \&iterator = $group->all_groups(%options); Get an L over I within a groups, deeply. Options: @@ -241,7 +241,7 @@ Get an L over I within a groups, deeply. Options: =cut -sub groups_deeply { +sub all_groups { my $self = shift; my %args = @_; @@ -328,9 +328,9 @@ sub remove_group { ############################################################################## -=method objects_deeply +=method all_objects - \&iterator = $groups->objects_deeply(%options); + \&iterator = $groups->all_objects(%options); Get an L over I within a group, deeply. Groups and entries are considered objects, so this is essentially a combination of L and L. This won't often be useful, but @@ -338,7 +338,7 @@ it can be convenient for maintenance tasks. This method takes the same options a =cut -sub objects_deeply { +sub all_objects { my $self = shift; my %args = @_; @@ -346,7 +346,7 @@ sub objects_deeply { my $auto_type = delete $args{auto_type}; my $history = delete $args{history}; - my $groups = $self->groups_deeply(%args); + my $groups = $self->all_groups(%args); my @entries; return File::KDBX::Iterator->new(sub { @@ -633,4 +633,7 @@ There is also some metadata associated with a group. Each group in a database is a UUID. An entry can also have an icon associated with it, and there are various timestamps. Take a look at the attributes to see what's available. +A B is a subclass of L. View its documentation to see other attributes +and methods available on groups. + =cut diff --git a/t/database.t b/t/database.t index 8bed335..94e1ea8 100644 --- a/t/database.t +++ b/t/database.t @@ -133,7 +133,7 @@ subtest 'Recycle bin' => sub { is $kdbx->entries->size, 1, 'Database is not empty'; is $kdbx->entries(searching => 1)->size, 0, 'Database has no entries if searching'; - cmp_ok $bin->entries_deeply->size, '==', 1, 'Recycle bin has an entry'; + cmp_ok $bin->all_entries->size, '==', 1, 'Recycle bin has an entry'; $entry->recycle_or_remove; is $kdbx->entries->size, 0, 'Remove entry if it is already in the recycle bin';