diff options
author | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-12-04 22:13:25 +0000 |
---|---|---|
committer | einhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-12-04 22:13:25 +0000 |
commit | ee7d31ef17d83d0928587af8910a8d3d6e12fecc (patch) | |
tree | f41f2edf1c5ca1679d64228719a4a6712505a82a /LedgerSMB | |
parent | 2f087465e4bd4ffed8b295cf82d3cf48e69ca216 (diff) |
More Roles fixes
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1942 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB')
-rw-r--r-- | LedgerSMB/DBObject.pm | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/LedgerSMB/DBObject.pm b/LedgerSMB/DBObject.pm index be6ea7ef..145210eb 100644 --- a/LedgerSMB/DBObject.pm +++ b/LedgerSMB/DBObject.pm @@ -242,7 +242,7 @@ sub _parse_array { my @return_array; while ($value ne '{}') { - my $next = ""; + my $next; my $separator = ""; if ($value =~ /^\{"/){ while ($next eq "" or ($next =~ /\\".$/)){ @@ -250,17 +250,19 @@ sub _parse_array { $next .= $1; $next =~ /(.)$/; $separator = $1; + $next .= "quoted"; } $next =~ s/"(.*)"$separator$/$1/; - } elsif ($value =~ /^{({+})/){ + } elsif ($value =~ /^{({+)/){ my $open_braces = $1; my $close_braces = $open_braces; $close_braces =~ s/{/}/g; - $value =~ /^{($open_braces.*$close_braces)/; - $next = $1; - $value =~ s/^{$next/{/; - $next = $self->parse_array($next); + $value =~ /^{($open_braces[^}]*$close_braces)/; + my $parse_next = $1; + $value =~ s/^{$parse_next/{/; + $value =~ s/^{,/{/; + @$next = $self->_parse_array($parse_next); } else { $value =~ s/^\{([^,]*)(,|\})/\{/; |