{{$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.
least C<KDBX_VERSION_4_0> (i.e. C<0x00040000>) because Argon2 was introduced with KDBX4.
This method never returns less than C<KDBX_VERSION_3_1> (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<WARNING:> If you dump a database with a minimum version higher than the current L</version>, the dumper will
typically issue a warning and automatically upgrade the database. This seems like the safest behavior in order
my %args = @_ % 2 == 0 ? @_ : (base => shift, @_);
my $base = delete $args{base} // $self->root;
- return $base->groups_deeply(%args);
+ return $base->all_groups(%args);
}
##############################################################################
my %args = @_ % 2 == 0 ? @_ : (base => shift, @_);
my $base = delete $args{base} // $self->root;
- return $base->entries_deeply(%args);
+ return $base->all_entries(%args);
}
##############################################################################
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 }
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;
});
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<File::KDBX::Entry> is a subclass of L<File::KDBX::Object>.
+A B<File::KDBX::Entry> is a subclass of L<File::KDBX::Object>. View its documentation to see other attributes
+and methods available on entries.
=head2 Placeholders
return $entries;
}
-=method entries_deeply
+=method all_entries
- \&iterator = $kdbx->entries_deeply(%options);
+ \&iterator = $kdbx->all_entries(%options);
Get an L<File::KDBX::Iterator> over I<entries> within a group. Supports the same options as L</groups>,
plus some new ones:
=cut
-sub entries_deeply {
+sub all_entries {
my $self = shift;
my %args = @_;
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 {
return $groups;
}
-=method groups_deeply
+=method all_groups
- \&iterator = $group->groups_deeply(%options);
+ \&iterator = $group->all_groups(%options);
Get an L<File::KDBX::Iterator> over I<groups> within a groups, deeply. Options:
=cut
-sub groups_deeply {
+sub all_groups {
my $self = shift;
my %args = @_;
##############################################################################
-=method objects_deeply
+=method all_objects
- \&iterator = $groups->objects_deeply(%options);
+ \&iterator = $groups->all_objects(%options);
Get an L<File::KDBX::Iterator> over I<objects> within a group, deeply. Groups and entries are considered
objects, so this is essentially a combination of L</groups> and L</entries>. This won't often be useful, but
=cut
-sub objects_deeply {
+sub all_objects {
my $self = shift;
my %args = @_;
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 {
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<File::KDBX::Group> is a subclass of L<File::KDBX::Object>. View its documentation to see other attributes
+and methods available on groups.
+
=cut
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';