summaryrefslogtreecommitdiffstats
path: root/src/Components/ArrayObj.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Components/ArrayObj.php')
-rw-r--r--src/Components/ArrayObj.php12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Components/ArrayObj.php b/src/Components/ArrayObj.php
index ef0f79f..422c81c 100644
--- a/src/Components/ArrayObj.php
+++ b/src/Components/ArrayObj.php
@@ -56,11 +56,11 @@ class ArrayObj extends Component
* @param TokensList $list The list of tokens that are being parsed.
* @param array $options Parameters for parsing.
*
- * @return ArrayObj
+ * @return mixed
*/
public static function parse(Parser $parser, TokensList $list, array $options = array())
{
- $ret = new ArrayObj();
+ $ret = empty($options['type']) ? new ArrayObj() : array();
/**
* The state of the parser.
@@ -109,8 +109,12 @@ class ArrayObj extends Component
// Empty array.
break;
}
- $ret->values[] = $token->value;
- $ret->raw[] = $token->token;
+ if (empty($options['type'])) {
+ $ret->values[] = $token->value;
+ $ret->raw[] = $token->token;
+ } else {
+ $ret[] = $options['type']::parse($parser, $list);
+ }
$state = 2;
} elseif ($state === 2) {
if (($token->type !== Token::TYPE_OPERATOR) || (($token->value !== ',') && ($token->value !== ')'))) {