Retrieve All Table Items from Inline Roll

Consider the following roll:
[[ 4t[MaleNames] ]]
That roll will retrieve four items from the rollable table named "MaleNames." However, only one of the returned items will be displayed in the chat, with the others only visible if you hover over the roll result:

This can be less than ideal.
With ZeroFrame's new .items syntax, you can extract all of the returned table items in the roll. It works much the same as the .value syntax, in that you append it as a suffix to an inline roll, but where .value retrieves the single, displayed return from the roll (either the calculated number from a math-based roll or the displayed return from a table-roll -- e.g., the "Underpunch" name from the above image), the .items syntax will retrieve all items returned from the table.
[[ 4t[MaleNames] ]].items
The Delimiter
The default joining delimiter is a comma:

You can declare a different delimiting string of characters by placing them inside parentheses immediately following the .items:
[[ 4t[MaleNames] ]].items(|)
The above would use a pipe as the delimiter:

The following option shows using " -- " as the delimiter:
[[ 4t[MaleNames] ]].items( -- )
All characters between the parentheses are utilized as the delimiter, so if you need to include a closing parentheses in your delimiting string, you will need to enclose it in one of the three quotation mark enclosures:
" ... " | quotation marks
' ... ' | apostrophes
` ... ` | ticks
For instance, if you wanted to present each option in the list of returns as enclosed by their own set of parentheses, you could use this formation:
([[4t[MaleNames]]].items(") ("))
Which you should read as outer parentheses enclosing the roll:
( ... )
...(which are really the opening parentheses of the first return and the closing parentheses of the last return), and the roll being joined by everything between the quotation marks -- a closing parentheses and opening parentheses pair. That formation would produce something like:

You do not need to utilize quotation mark enclosures simply for a space.
You can combine the joining of the table items returned from a roll with the new ZeroFrame tags. This is helpful if, for instance, you want to see all of the returned items on their own line. For this you would use one of the line break tags mentioned in the previous post: {&cr} or {&nl}
[[4t[MaleNames]]].items({&cr})

Delimiter Deferral
As with the .value syntax, this retrieval of items from an inline roll happens whenever the .items syntax is detected as affixed to a roll which has resolved. ZeroFrame searches for this pattern once before the loop of metascripts begins, once after every metascript has had a chance to modify the message during each loop, and once again as one of the first things that is done when the message is released to other scripts or the chat output.
The previous example, using the new carriage return tag, works because the carriage return tag is resolved only at the very end of processing. In other words, the tag is still present in the line when it comes time for the items returned from the table need to be joined with the delimiter... so they are joined with a carriage return, the items display on different lines, and there was peace and celebration in the land.
On the other hand, a metascript construction that is a part of the delimiting string could be detected and processed before the roll is ready. For instance, if the roll was deferred for one loop cycle, a metascript construction in the delimiting string could be detected and processed in the meantime. This might not be what you want; you may wish, instead, to have the unresolved metascript construction be the delimiter between returned table items, so that it can resolve at a later point in the set of loop cycles.
If you want to expose constructions in your delimiter only at the point that the delimiter is used to link the returned table items, use a single delimiter character followed by a pipe before your delimiting text. What follows the pipe will be the delimiting text, so use your declared deferral character to break up text constructions and delay their detection:
[[4t[MaleNames]]].items(^|"@^(selected.delim)")
The same rules apply for wrapping the delimiting text in some form of quotation marks, which would allow you to include a closing parentheses (as the above example shows, utilizing a Fetch construction). In a similar vein, if your delimiting text would have a pipe as the second character, ZeroFrame will interpret the first character not as part of the delimiting text but as a deferral character. This is another time when you would want to use some quote-enclosure to wrap the delimiting text so that the pipe is instead considered part of the intended delimiting text.
As an example, consider the difference between:
[[ 4t[MaleNames] ]].items(^|Some^Text)
...and...
[[ 4t[MaleNames] ]].items("^|Some^Text")
The first option will interpret the caret as a deferral character, and use as the delimiter:
SomeText
The second option will interpret the entire string as the delimiting text:
^|Some^Text
When are these detected?
As mentioned, the .items syntax is detected anytime it is attached (as a suffix) to an inline roll that has processed and has a value assigned to it. If the associated roll is never resolved or does not exist, this construction will return "0". If the associated roll does resolve but does not have table items, this construction will instead return the value of the roll. For instance:
[[1d20]].items
...is functionally equivalent to...
[[1d20]].value
Implication 1: Recursion
Under normal circumstances, items returned from a table are not processed for further parsing. This is the reason you can't typically expect an inline roll in a returned table item to be detected and processed. Instead, you'll see the roll in your return:

Since the .items construction unpacks all table items returned from the roll, any syntax will be detectable for further parsing. This includes inline rolls (like "[[1d8]]"):

.../r or /roll syntax (like "/r 1d8"):

...or other metascript constructions (like "@(selected.token_name)" ):

Thus, if you are returning an item from a rollable table which, itself, is a call to another roll against a table, you can use the .items syntax within the table item to return the items from *that* roll. For example, if you roll against the table RandomAction and unpack the return:
[[1t[RandomAction]].item
...and your returned item reads:
[[ 4t[MaleNames] ]].items({&cr})
...then you will receive 4 names from the MaleNames table, concatenated with a carriage return between them.