=head1 NAME
Mojolicious::Plugin::DomIdHelper - Mojolicious plugin to generate DOM IDs and CSS class names from your ORM objects
=head1 SYNOPSIS
# Mojolicious
$self->plugin('dom_id_helper');
# Or, your defaults
$self->plugin('dom_id_helper', delimiter => '-')
# Mojolicious::Lite
plugin 'dom_id_helper';
# Set defaults
plugin 'dom_id_helper', delimiter => '-'
# Your view
...
...
=head1 DESCRIPTION
DOM IDs are generated by joining an object's package name and its primary key with the character
specified by the L option. By default the primary key is retrieved via a method
named C. This can be modified, see L.
By default, given an instance of C with an ID of C<1>:
dom_id($user)
dom_class($user)
will generate:
user_1
user
For C, if the primary key is undefined only the package name is returned.
If C<$user> is not a reference C is returned.
Multi-column primary keys are not separated by the L option, they are concatenated.
For references that aren't blessed C and C return the reference type.
If Lingua::EN::Inflect is installed array references that contain a blessed reference will return
the pluralized form of the blessed reference.
For example, if Lingua::EN::Inflect is installed:
dom_id([$user])
dom_class([$user])
dom_id([])
dom_id({ user => $user })
dom_id({})
will generate:
users
users
array
hash
hash
If Lingua::EN::Inflect is not installed C will return C.
=head1 ORMs
The aim is to be ORM agnostic. Just set the L option to the name of the method used to
retrieve your object's primary key.
Multi-column primary keys returned as array references will cause problems (for now).
=head1 OPTIONS
=head2 C
plugin 'dom_id_helper', delimiter => '-'
The character used to delimit the object's package name from its primary key. Defaults to C<'_'>.
=head2 C
plugin 'dom_id_helper', method => 'name'
plugin 'dom_id_helper', method => [qw{first_name last_name}]
The method used to retrieve the object's primary key. Defaults to C<'id'>.
=head2 C
plugin 'dom_id_helper', keep_namespace => 1
Keep the full package name when generating the DOM ID. Defaults to C<0> (false).
=head1 AUTHOR
Skye Shaw
=head1 SEE ALSO
L and L
=head1 LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.