From c81c44d32e58bf3f49dfb34341232bbe26c12cea Mon Sep 17 00:00:00 2001 From: einhverfr Date: Thu, 13 Nov 2008 22:19:16 +0000 Subject: Correcting t/42 tests and dbobject array parsing. git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2395 4979c152-3d1c-0410-bac9-87ea11338e46 --- LedgerSMB/DBObject.pm | 13 ++++--------- t/42-dbobject.t | 12 ++++++++++++ 2 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 t/42-dbobject.t diff --git a/LedgerSMB/DBObject.pm b/LedgerSMB/DBObject.pm index dade3ab8..6e7abfd4 100644 --- a/LedgerSMB/DBObject.pm +++ b/LedgerSMB/DBObject.pm @@ -260,14 +260,10 @@ sub _parse_array { $next = ""; $separator = ""; if ($value =~ /^\{"/){ - while ($next eq "" or ($next =~ /\\".$/)){ - $value =~ s/^\{("[^"]*".)/\{/; - $next .= $1; - $next =~ /(.)$/; - $separator = $1; - $next .= "quoted"; - } - $next =~ s/"(.*)"$separator$/$1/; + $value =~ s/^\{"(([^"]|\\")*[^\\])"/\{/; + $next = $1; + $next =~ /(.)$/; + $value =~ s/^{,/{/; } elsif ($value =~ /^{({+)/){ my $open_braces = $1; @@ -277,7 +273,6 @@ sub _parse_array { $value =~ /^{($open_braces[^}]*$close_braces)/; my $parse_next = $1; $value =~ s/^{$parse_next/{/; - $value =~ s/^{,/{/; @$next = $self->_parse_array($parse_next); } else { diff --git a/t/42-dbobject.t b/t/42-dbobject.t new file mode 100644 index 00000000..6eb42f2f --- /dev/null +++ b/t/42-dbobject.t @@ -0,0 +1,12 @@ +use LedgerSMB::DBObject; +use Test::More tests => 4; + +# Array parsing tests +my $test = '{test,"test2\"\",",test3,"test4"}'; +my @vals = ('test', 'test2"",', 'test3', 'test4'); +my $passes = 0; +for (LedgerSMB::DBObject->_parse_array($test)){ + is($_, shift @vals, "pass $pass, array parse test"); +} + + -- cgit v1.2.3