Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Rose::HTML::Form::FieRUser:Contributed:PerldDocumentationNAME
       Rose::HTML::Form::Field::Time::Split::HourMinuteSecond -	Compound field
       for times with separate text fields for hour, minute, and second, and a
       pop-up menu for selecting AM or PM.

SYNOPSIS
	   $field =
	     Rose::HTML::Form::Field::Time::Split::HourMinuteSecond->new(
	       label   => 'Time',
	       name    => 'time',
	       default => '8am');

	   print $field->field('hour')->internal_value;	# "08"

	   $field->input_value('13:00:00 PM');

	   # "AM/PM only valid with hours less than 12"
	   $field->validate or warn $field->error;

	   $field->input_value('blah');

	   # "Invalid time"
	   $field->validate or warn $field->error;

	   $field->input_value('6:30 a.m.');

	   print $field->internal_value; # "06:30:00 AM"

	   print $field->html;
	   ...

DESCRIPTION
       Rose::HTML::Form::Field::Time::Split::HourMinuteSecond is a compound
       field for times with separate text fields for hour, minute, and second,
       and a pop-up menu for selecting AM or PM.

       This class inherits (indirectly)	from both
       Rose::HTML::Form::Field::Time and Rose::HTML::Form::Field::Compound.
       This doesn't quite work out as expected without a bit of	tweaking.
       We'd like inflate_value() and validate()	methods	to be inherited	from
       Rose::HTML::Form::Field::Time, but everything else to be	inherited from
       Rose::HTML::Form::Field::Compound.

       To solve	this problem, there's an intermediate class that imports the
       correct set of methods.	This class then	inherits from the intermediate
       class.  To solve	this problem, there's an intermediate class that
       imports the correct set of methods.  This class then inherits from the
       intermediate class.  This works,	and isolates the tricky	bits to	a
       single intermediate class, but it also demonstrates the problems	that
       can crop	up when	multiple inheritance is	combined with a	strong
       aversion	to code	duplication.

       A simpler example of a compound field can be found in
       Rose::HTML::Form::Field::PhoneNumber::US::Split.	 It too	uses multiple
       inheritance, but	its family tree	is more	conveniently built, saving it
       from selective method importing shenanigans.

       This field also overrides the
       "is_full()|Rose::HTML::Form::Field::Compound/is_full" method.  A	valid
       time can	be extracted from the field as long as both the	hour and AM/PM
       subfields are not empty.	 All other empty fields	will be	treated	as if
       they contained zeros (00).

       It is important that this class (indirectly) inherits from
       Rose::HTML::Form::Field::Compound. See the
       Rose::HTML::Form::Field::Compound documentation for more	information.

AUTHOR
       John C. Siracusa	(siracusa@gmail.com)

LICENSE
       Copyright (c) 2010 by John C. Siracusa.	All rights reserved.  This
       program is free software; you can redistribute it and/or	modify it
       under the same terms as Perl itself.

perl v5.32.0	     Rose::HTML::Form::Field::Time::Split::HourMinuteSecond(3)

NAME | SYNOPSIS | DESCRIPTION | AUTHOR | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Rose::HTML::Form::Field::Time::Split::HourMinuteSecond&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help