From ee7d31ef17d83d0928587af8910a8d3d6e12fecc Mon Sep 17 00:00:00 2001 From: einhverfr Date: Tue, 4 Dec 2007 22:13:25 +0000 Subject: More Roles fixes git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1942 4979c152-3d1c-0410-bac9-87ea11338e46 --- LedgerSMB/DBObject.pm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'LedgerSMB') 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/^\{([^,]*)(,|\})/\{/; -- cgit v1.2.3