NAME
HTML::Object::ElementDataMap - HTML Object Element Data Map Class
SYNOPSIS
use HTML::Object::ElementDataMap;
my $map = HTML::Object::ElementDataMap->new( $html_element_object ) ||
die( HTML::Object::ElementDataMap->error, "\n" );
$map->dateOfBirth( '1989-12-01' );
# Related html element would now have an attribute data-date-of-birth set to 1989-12-01
VERSION
v0.2.0
DESCRIPTION
This module implements a data map for HTML element objects.
It provides read/write access to custom data attributes (data-*) on elements. It provides a map of strings with an entry for each data-* attribute.
Those class objects are instantiated from "dataset" in HTML::Object::Element
Name conversion
dash-style to camelCase conversion
A custom data attribute name is transformed to a key for the element data entry by the following:
- 1. Lowercase all ASCII capital letters (A to Z);
- 2. Remove the prefix data- (including the dash);
- 3. For any dash (U+002D) followed by an ASCII lowercase letter a to z, remove the dash and uppercase the letter;
- 4. Other characters (including other dashes) are left unchanged.
camelCase to dash-style conversion
The opposite transformation, which maps a key to an attribute name, uses the following:
- 1. Restriction: Before transformation, a dash must not be immediately followed by an ASCII lowercase letter a to z;
- 2. Add the data- prefix;
- 3. Add a dash before any ASCII uppercase letter A to Z, then lowercase the letter;
- 4. Other characters are left unchanged.
For example, a data-abc-def attribute corresponds to dataset.abcDef.
Accessing values
Attributes can be set and read by the camelCase name/key as an object property of the dataset:
$element-
dataset->keyname>Attributes can also be set and read using variable:
$element-
dataset->$keyname>You can check if a given attribute exists like so:
$element-
attributes->exists( 'data-keyname' )>
Setting values
When the attribute is set, its value is always stored as is, which means you can set reference and access them later.
To remove an attribute, you can use the "removeAttribute" in HTML::Object::Element method:
$element-
removeAttribute( 'data-keyname' )>
AUTHOR
Jacques Deguest <jack@deguest.jp>
SEE ALSO
COPYRIGHT & LICENSE
Copyright(c) 2021 DEGUEST Pte. Ltd.
All rights reserved
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.