in velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/LoopTool.java [409:452]
public Object get(String key)
{
// search all iterators in reverse
// (so nested ones take priority)
// for one that is responsible for synced
for (int i=iterators.size() - 1; i >= 0; i--)
{
ManagedIterator iterator = iterators.get(i);
if (iterator.isSyncedWith(key))
{
return iterator.get(key);
}
}
if (lastSyncedValues != null)
{
Object syncedValue = lastSyncedValues.get(key);
if (syncedValue != null)
{
return syncedValue;
}
}
// shortest key would be "last_X" where X is the loop name
if (key == null || key.length() < 6)
{
return null;
}
if (key.startsWith("last_"))
{
return isLast(key.substring(5, key.length()));
}
if (key.startsWith("count_"))
{
return getCount(key.substring(6, key.length()));
}
if (key.startsWith("index_"))
{
return getIndex(key.substring(6, key.length()));
}
if (key.startsWith("first_"))
{
return isFirst(key.substring(6, key.length()));
}
return null;
}