2008/5/9 Michele Beltrame <[EMAIL PROTECTED]>:
> Hi Carl!
>
> Me again. ;-)
>
>> However, I've now changed element() so it does a shallow clone ( using
>> $hashref = {%$hashref} ) instead of dclone().
>> This avoids the immediate butchering by element(). Whether this has
>> any unwanted side-effects further down the line, we'll just have to
>> wait and see.
>
> As arleady noted, this works perfectly for single elements. However, I
> now discovered that something like this:
>
> my $empty_to_undef = sub {
> [...]
> };
>
> [...]
> element_defaults => {
> Text => {
> transformers => [{
> type => 'Callback',
> callback => $empty_to_undef,
> }],
> }
> },
> [...]
>
> triggers the:
>
> Can't store CODE items at
> /u/www/cheiron/cryo/Cryo/script/../lib/HTML/FormFu/ObjectUtil.pm line 108.
>
> error as before. It seems that coderefs are accepted if I place constraints
> or transformers or whatever inside single elements, but not if I place
> them as element_defaults.
Okay, the only way to get around this, while keeping the support for
closures, is to change clone() to only do a shallow hash copy of
default_elements() instead of a deep clone.
I've had to update all the element/processor/plugin builders to do a
shallow copy of any hashrefs passed to them, so they don't bork
structures that might need to be reused.
Hopefully this'll solve it properly now.
Cheers,
Carl
_______________________________________________
HTML-FormFu mailing list
[email protected]
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/html-formfu