jenkins-bot has submitted this change and it was merged.
Change subject: Fix writing string with bad language tag.
......................................................................
Fix writing string with bad language tag.
Bug: T139687
Change-Id: I131ffae137a05096540f6a29f8124bd3f5a65d52
---
M src/N3RdfWriterBase.php
M src/XmlRdfWriter.php
M tests/data/Texts.nt
M tests/data/Texts.rdf
M tests/data/Texts.ttl
M tests/phpunit/RdfWriterTestBase.php
6 files changed, 18 insertions(+), 4 deletions(-)
Approvals:
Thiemo Mättig (WMDE): Looks good to me, approved
jenkins-bot: Verified
diff --git a/src/N3RdfWriterBase.php b/src/N3RdfWriterBase.php
index dfbe861..7d64aff 100644
--- a/src/N3RdfWriterBase.php
+++ b/src/N3RdfWriterBase.php
@@ -52,7 +52,8 @@
$value = $this->quoter->escapeLiteral( $text );
$this->write( '"' . $value . '"' );
- if ( $language !== null ) {
+ // preg_match is somewhat (12%) slower than strspn but more
readable
+ if ( $language !== null && preg_match( '/^[0-9A-Za-z-]+$/',
$language ) ) {
$this->write( '@' . $language );
}
}
diff --git a/src/XmlRdfWriter.php b/src/XmlRdfWriter.php
index dd6d244..7f417e9 100644
--- a/src/XmlRdfWriter.php
+++ b/src/XmlRdfWriter.php
@@ -174,7 +174,11 @@
}
protected function writeText( $text, $language = null ) {
- $attr = empty( $language ) ? array() : array( 'xml:lang' =>
$language );
+ if ( !empty( $language ) && preg_match( '/^[0-9A-Za-z-]+$/',
$language ) ) {
+ $attr = array( 'xml:lang' => $language );
+ } else {
+ $attr = array();
+ }
$this->write( "\t\t" );
$this->tag(
diff --git a/tests/data/Texts.nt b/tests/data/Texts.nt
index d927334..bf26a0e 100644
--- a/tests/data/Texts.nt
+++ b/tests/data/Texts.nt
@@ -1,2 +1,4 @@
<http://acme.test/Bongos> <http://acme.test/sounds> "Bom"@de .
<http://acme.test/Bongos> <http://acme.test/sounds> "Bam"@en .
+<http://acme.test/Bongos> <http://acme.test/sounds> "Como estas"@es-419 .
+<http://acme.test/Bongos> <http://acme.test/sounds> "What?" .
diff --git a/tests/data/Texts.rdf b/tests/data/Texts.rdf
index e6d14ed..1268d8c 100644
--- a/tests/data/Texts.rdf
+++ b/tests/data/Texts.rdf
@@ -3,5 +3,7 @@
<rdf:Description rdf:about="http://acme.test/Bongos">
<acme:sounds xml:lang="de">Bom</acme:sounds>
<acme:sounds xml:lang="en">Bam</acme:sounds>
+ <acme:sounds xml:lang="es-419">Como estas</acme:sounds>
+ <acme:sounds>What?</acme:sounds>
</rdf:Description>
</rdf:RDF>
\ No newline at end of file
diff --git a/tests/data/Texts.ttl b/tests/data/Texts.ttl
index ccb4c2a..a602818 100644
--- a/tests/data/Texts.ttl
+++ b/tests/data/Texts.ttl
@@ -3,4 +3,6 @@
@prefix acme: <http://acme.test/> .
acme:Bongos acme:sounds "Bom"@de,
- "Bam"@en .
+ "Bam"@en,
+ "Como estas"@es-419,
+ "What?" .
diff --git a/tests/phpunit/RdfWriterTestBase.php
b/tests/phpunit/RdfWriterTestBase.php
index 72d339d..965572b 100644
--- a/tests/phpunit/RdfWriterTestBase.php
+++ b/tests/phpunit/RdfWriterTestBase.php
@@ -217,7 +217,10 @@
$writer->about( 'acme', 'Bongos' )
->say( 'acme', 'sounds' )
->text( 'Bom', 'de' )
- ->text( 'Bam', 'en' );
+ ->text( 'Bam', 'en' )
+ ->text( 'Como estas', 'es-419' )
+ ->text( 'What?', 'bad tag' )
+ ;
$writer->finish();
$rdf = $writer->drain();
--
To view, visit https://gerrit.wikimedia.org/r/298109
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I131ffae137a05096540f6a29f8124bd3f5a65d52
Gerrit-PatchSet: 3
Gerrit-Project: purtle
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Smalyshev <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits