Details
Description
ok, the motive of this feature request is that we shouldn't have to distinguish
between an $array and a $list when writing templates. this is already handled
to a degree in the #foreach() directive which transparently handles both arrays
and Lists (among other things), and it seems logically consistent with the way
VTL already hides the difference between primitives and their wrappers (int vs.
Integer).
so, in this same spirit, i propose that we should enable template authors to
access items by index, determine the size of, and manipulate (to a point) Lists
and arrays identically. here's an example that demonstrates how i think this
should work:
Access Item at Index 2:
$list.get(2) ##works already
$array.get(2) ##doesn't work right now
Determine size:
$list.size() ##works already
$array.size() ##wish this would work
you get the idea, right? basically, i would like to have all operations that
make sense for an array supported (which i believe means most List methods
except the add(), remove(), and clear() ones).
IMHO, this would simplify things for users noticeably and eliminate the need for
such things as an ArrayTool in the VelocityTools library.
at this point, i'm not sure what the best approach for implementing this is. it
may simply be the automatic, transparent wrapping of arrays inserted into the
context with some sort of ArrayList wrapper class. or i suppose it could
involve some crazy Uberspect trickery.
now all we need is someone with the time to whip up a patch...
Attachments
Issue Links
- duplicates
-
VELOCITY-533 Treat arrays like fixed-length lists
- Resolved
- is duplicated by
-
VELOCITY-232 Add support for array.length
- Resolved