Skip to content

Commit 3ffe010

Browse files
Add support for serialization of snak hashes
SnakSerializer and SnakDeserializer gain support for serializing / deserializing the hash of a snak. (Serializing hashes is not required when sending serializations to the API, but the Wikibase view code assumes that serialization+deserialization is a lossless roundtrip, so if we don’t serialize it, the hash is lost when setting a new snak on a snakview.)
1 parent fbc9f67 commit 3ffe010

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ version 2.0 of this package:
2626
* Updated the MediaWiki entry point to use the extension.json format.
2727
* Added code sniffers for JavaScript as well as PHP.
2828
* Dropped compatibility with PHP 5.3.
29+
* Added support for deserializing snak hashes.
2930

3031
### 2.0.8 (2016-09-09)
3132

src/Deserializers/SnakDeserializer.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ MODULE.SnakDeserializer = util.inherit( 'WbSnakDeserializer', PARENT, {
2424
*/
2525
deserialize: function( serialization ) {
2626
if( serialization.snaktype === 'novalue' ) {
27-
return new wb.datamodel.PropertyNoValueSnak( serialization.property );
27+
return new wb.datamodel.PropertyNoValueSnak( serialization.property, serialization.hash );
2828
} else if( serialization.snaktype === 'somevalue' ) {
29-
return new wb.datamodel.PropertySomeValueSnak( serialization.property );
29+
return new wb.datamodel.PropertySomeValueSnak( serialization.property, serialization.hash );
3030
} else if( serialization.snaktype === 'value' ) {
3131
var dataValue = null,
3232
type = serialization.datavalue.type,
@@ -38,7 +38,7 @@ MODULE.SnakDeserializer = util.inherit( 'WbSnakDeserializer', PARENT, {
3838
dataValue = new dv.UnDeserializableValue( value, type, error.message );
3939
}
4040

41-
return new wb.datamodel.PropertyValueSnak( serialization.property, dataValue );
41+
return new wb.datamodel.PropertyValueSnak( serialization.property, dataValue, serialization.hash );
4242
}
4343

4444
throw new Error( 'Incompatible snak type' );

src/Serializers/SnakSerializer.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ MODULE.SnakSerializer = util.inherit( 'WbSnakSerializer', PARENT, {
3232
property: snak.getPropertyId()
3333
};
3434

35+
if( snak.getHash() !== null ) {
36+
serialization.hash = snak.getHash();
37+
}
38+
3539
if( snak instanceof wikibase.datamodel.PropertyValueSnak ) {
3640
var dataValue = snak.getValue();
3741

0 commit comments

Comments
 (0)