From: <cw...@us...> - 2007-08-13 16:14:22
|
Revision: 517 http://rdfapi-php.svn.sourceforge.net/rdfapi-php/?rev=517&view=rev Author: cweiske Date: 2007-08-13 09:14:17 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Fix N3Parser to unescape quotes More tests Modified Paths: -------------- trunk/rdfapi-php/api/syntax/N3Parser.php trunk/rdfapi-php/api/syntax/N3Serializer.php trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php Modified: trunk/rdfapi-php/api/syntax/N3Parser.php =================================================================== --- trunk/rdfapi-php/api/syntax/N3Parser.php 2007-08-13 15:59:46 UTC (rev 516) +++ trunk/rdfapi-php/api/syntax/N3Parser.php 2007-08-13 16:14:17 UTC (rev 517) @@ -624,7 +624,8 @@ // print "++$lit++"; $lit=str_replace('\n', '\\n',$lit); - $lit=ereg_replace("[^\\]" . $chBase, "\\" . $chBase, $lit); + //$lit=ereg_replace("[^\\]" . $chBase, "\\" . $chBase, $lit); + $lit = stripslashes($lit); $list[$i] = $chBase . $lit . $chBase; } else { @@ -632,8 +633,9 @@ } } else { if (strstr($list[$i],"\n")) { - die('Newline in literal: '+$list[$i]); + die('Newline in literal: ' . $list[$i]); } + $list[$i] = stripslashes($list[$i]); } } } Modified: trunk/rdfapi-php/api/syntax/N3Serializer.php =================================================================== --- trunk/rdfapi-php/api/syntax/N3Serializer.php 2007-08-13 15:59:46 UTC (rev 516) +++ trunk/rdfapi-php/api/syntax/N3Serializer.php 2007-08-13 16:14:17 UTC (rev 517) @@ -423,10 +423,13 @@ $quoteChar = $long ? '"""' : '"'; } else if ($quoteDouble && !$quoteSingle) { $quoteChar = $long ? '\'\'\'' : '\''; - } else { + } else if ($quoteDouble && $quoteSingle) { //both quotation chars inside $quoteChar = $long ? '"""' : '"'; $l = addslashes($l); + } else { + //no quotation chars + $quoteChar = $long ? '"""' : '"'; } $out .= $quoteChar . $l . $quoteChar; Modified: trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php =================================================================== --- trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php 2007-08-13 15:59:46 UTC (rev 516) +++ trunk/rdfapi-php/test/unit/Syntax/n3Serializer_test.php 2007-08-13 16:14:17 UTC (rev 517) @@ -19,8 +19,8 @@ $mod->add(new Statement( new Resource("http://example.org/foo"), new Resource("http://example.org/bar"), - new Resource("mailto:fr...@ex...")) - ); + new Resource("mailto:fr...@ex...") + )); $ser = new N3Serializer(); $str = $ser->serialize($mod); @@ -43,6 +43,92 @@ + function testStringsSimple() + { + $mod = new MemModel(); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal('testliteral') + )); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test''literal") + )); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test\"\"literal") + )); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test\nliteral") + )); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test\"\nliteral") + )); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test'\nliteral") + )); + + $ser = new N3Serializer(); + $str = $ser->serialize($mod); + + $this->assertTrue(strpos($str, 'testliteral') > 0); + $this->assertTrue(strpos($str, "test''literal") > 0); + $this->assertTrue(strpos($str, 'test""literal') > 0); + $this->assertTrue(strpos($str, "test\nliteral") > 0); + $this->assertTrue(strpos($str, "'''test\"\nliteral'''") > 0); + $this->assertTrue(strpos($str, '"""test\'' . "\n" . 'literal"""') > 0); + + //test if it can be loaded + $par = new N3Parser(); + $mod2 = $par->parse2model($str, false); + //var_dump($str, $mod2->triples); + + $this->assertEqual($mod->size(), $mod2->size(), 'Original model size and loaded model size should equal'); + $this->assertTrue($mod->containsAll($mod2), 'Original model should contain all triples of loaded model'); + $this->assertTrue($mod2->containsAll($mod), 'Loaded model should contain all triples of original model'); + } + + + function testStringsAdvanced() + { + $mod = new MemModel(); + //up to now, we didn't trick the serializer + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test'\"literal") + )); + $mod->add(new Statement( + new Resource("http://example.org/foo"), + new Resource("http://example.org/bar"), + new Literal("test'\"\nliteral") + )); + + + $ser = new N3Serializer(); + $str = $ser->serialize($mod); + + $this->assertTrue(strpos($str, 'test\\\'\\"literal') > 0); + $this->assertTrue(strpos($str, 'test\\\'\\"' . "\n" . 'literal') > 0); + + //test if it can be loaded + $par = new N3Parser(); + $mod2 = $par->parse2model($str, false); + //var_dump($str, $mod2->triples); + + $this->assertEqual($mod->size(), $mod2->size(), 'Original model size and loaded model size should equal'); + $this->assertTrue($mod->containsAll($mod2), 'Original model should contain all triples of loaded model'); + $this->assertTrue($mod2->containsAll($mod), 'Loaded model should contain all triples of original model'); + } } ?> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |