|
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.
|