Skip to content

Commit a15bb45

Browse files
committed
Remove weirdness from Fingerprint methods
Methods to add, set or remove terms and multiterms from a Fingerprint do not require a language code to be passed together with the term because the language can be derived from the term object. In the current state there can be inconsistencies in the datamodel allowing a wrong language code to be set for a term in another language.
1 parent 54c89dd commit a15bb45

File tree

1 file changed

+23
-54
lines changed

1 file changed

+23
-54
lines changed

src/Fingerprint.js

Lines changed: 23 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* @since 1.0
88
* @licence GNU GPL v2+
99
* @author H. Snater < mediawiki@snater.com >
10+
* @author Bene* < benestar.wikimedia@gmail.com >
1011
*
1112
* @constructor
1213
*
@@ -71,12 +72,11 @@ $.extend( SELF.prototype, {
7172
},
7273

7374
/**
74-
* @param {string} languageCode
7575
* @param {wikibase.datamodel.Term} label
7676
* @return {boolean}
7777
*/
78-
hasLabel: function( languageCode, label ) {
79-
return this._labels.hasItem( languageCode, label );
78+
hasLabel: function( label ) {
79+
return this._labels.hasItem( label.getLanguageCode(), label );
8080
},
8181

8282
/**
@@ -88,19 +88,17 @@ $.extend( SELF.prototype, {
8888
},
8989

9090
/**
91-
* @param {string} languageCode
92-
* @param {wikibase.datamodel.Term} term
91+
* @param {wikibase.datamodel.Term} label
9392
*/
94-
setLabel: function( languageCode, term ) {
95-
this._labels.setItem( languageCode, term );
93+
setLabel: function( label ) {
94+
this._labels.setItem( label.getLanguageCode(), label );
9695
},
9796

9897
/**
99-
* @param {string} languageCode
10098
* @param {wikibase.datamodel.Term} label
10199
*/
102-
removeLabel: function( languageCode, label ) {
103-
this._labels.removeItem( languageCode, label );
100+
removeLabel: function( label ) {
101+
this._labels.removeItem( label.getLanguageCode(), label );
104102
},
105103

106104
/**
@@ -126,12 +124,11 @@ $.extend( SELF.prototype, {
126124
},
127125

128126
/**
129-
* @param {string} languageCode
130127
* @param {wikibase.datamodel.Term} description
131128
* @return {boolean}
132129
*/
133-
hasDescription: function( languageCode, description ) {
134-
return this._descriptions.hasItem( languageCode, description );
130+
hasDescription: function( description ) {
131+
return this._descriptions.hasItem( description.getLanguageCode(), description );
135132
},
136133

137134
/**
@@ -143,19 +140,17 @@ $.extend( SELF.prototype, {
143140
},
144141

145142
/**
146-
* @param {string} languageCode
147-
* @param {wikibase.datamodel.Term} term
143+
* @param {wikibase.datamodel.Term} description
148144
*/
149-
setDescription: function( languageCode, term ) {
150-
this._descriptions.setItem( languageCode, term );
145+
setDescription: function( description ) {
146+
this._descriptions.setItem( description.getLanguageCode(), description );
151147
},
152148

153149
/**
154-
* @param {string} languageCode
155150
* @param {wikibase.datamodel.Term} description
156151
*/
157-
removeDescription: function( languageCode, description ) {
158-
this._descriptions.removeItem( languageCode, description );
152+
removeDescription: function( description ) {
153+
this._descriptions.removeItem( description.getLanguageCode(), description );
159154
},
160155

161156
/**
@@ -181,12 +176,11 @@ $.extend( SELF.prototype, {
181176
},
182177

183178
/**
184-
* @param {string} languageCode
185179
* @param {wikibase.datamodel.MultiTerm} aliases
186180
* @return {boolean}
187181
*/
188-
hasAliases: function( languageCode, aliases ) {
189-
return this._aliases.hasItem( languageCode, aliases );
182+
hasAliases: function( aliases ) {
183+
return this._aliases.hasItem( aliases.getLanguageCode(), aliases );
190184
},
191185

192186
/**
@@ -198,46 +192,21 @@ $.extend( SELF.prototype, {
198192
},
199193

200194
/**
201-
* @param {string|wikibase.datamodel.MultiTermMap} languageCodeOrAliases
202-
* @param {wikibase.datamodel.MultiTerm} [aliases]
203-
*
204-
* @throws {Error} when passing a MultiTerm without a language code.
205-
* @throws {Error} when passing a MultiTermMap with a language code.
206-
* @throws {Error} when neither passing a MultiTerm nor a MultiTermMap object.
195+
* @param {wikibase.datamodel.MultiTerm|wikibase.datamodel.MultiTermMap} aliases
207196
*/
208-
setAliases: function( languageCodeOrAliases, aliases ) {
209-
var languageCode;
210-
211-
if( typeof languageCodeOrAliases === 'string' ) {
212-
languageCode = languageCodeOrAliases;
213-
} else {
214-
aliases = languageCodeOrAliases;
215-
}
216-
217-
if( aliases instanceof wb.datamodel.MultiTerm ) {
218-
if( !languageCode ) {
219-
throw new Error( 'Language code the wb.datamodel.MultiTerm object should be set '
220-
+ 'for needs to be specified' );
221-
}
222-
this._aliases.setItem( languageCode, aliases );
223-
} else if( aliases instanceof wb.datamodel.MultiTermMap ) {
224-
if( languageCode ) {
225-
throw new Error( 'Unable to handle language code when setting a '
226-
+ 'wb.datamodel.MultiTermMap' );
227-
}
197+
setAliases: function( aliases ) {
198+
if( aliases instanceof wb.datamodel.MultiTermMap ) {
228199
this._aliases = aliases;
229200
} else {
230-
throw new Error( 'Aliases need to be specified as wb.datamodel.MultiTerm or '
231-
+ 'wb.datamodel.MultiTermMap instance' );
201+
this._aliases.setItem( aliases.getLanguageCode(), aliases );
232202
}
233203
},
234204

235205
/**
236-
* @param {string} languageCode
237206
* @param {wikibase.datamodel.MultiTerm} aliases
238207
*/
239-
removeAliases: function( languageCode, aliases ) {
240-
this._aliases.removeItem( languageCode, aliases );
208+
removeAliases: function( aliases ) {
209+
this._aliases.removeItem( aliases.getLanguageCode(), aliases );
241210
},
242211

243212
/**

0 commit comments

Comments
 (0)