diff options
Diffstat (limited to 'src/Components/ArrayObj.php')
-rw-r--r-- | src/Components/ArrayObj.php | 12 |
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 !== ')'))) { |