Trevor Parscal has uploaded a new change for review. https://gerrit.wikimedia.org/r/54875
Change subject: Remove more periods ...................................................................... Remove more periods Tags don't need periods at the end, these are not complete sentences. Change-Id: I8efa931862149e892d08b370e70aff8d86a6db7d --- M modules/ve/ce/nodes/ve.ce.AlienBlockNode.js M modules/ve/ce/nodes/ve.ce.AlienInlineNode.js M modules/ve/ce/nodes/ve.ce.AlienNode.js M modules/ve/ce/nodes/ve.ce.ImageNode.js M modules/ve/ce/nodes/ve.ce.MWEntityNode.js M modules/ve/ce/ve.ce.LeafNode.js M modules/ve/dm/ve.dm.Document.js M modules/ve/dm/ve.dm.MetaItemFactory.js M modules/ve/dm/ve.dm.MetaList.js M modules/ve/dm/ve.dm.NodeFactory.js M modules/ve/dm/ve.dm.Transaction.js M modules/ve/dm/ve.dm.TransactionProcessor.js M modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js M modules/ve/init/mw/ve.init.mw.Platform.js M modules/ve/init/sa/ve.init.sa.Platform.js M modules/ve/init/ve.init.Platform.js M modules/ve/test/dm/ve.dm.example.js M modules/ve/test/ve.qunit.js M modules/ve/ve.Factory.js M modules/ve/ve.OrderedHashSet.js M modules/ve/ve.Range.js M modules/ve/ve.js 22 files changed, 73 insertions(+), 66 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor refs/changes/75/54875/1 diff --git a/modules/ve/ce/nodes/ve.ce.AlienBlockNode.js b/modules/ve/ce/nodes/ve.ce.AlienBlockNode.js index 0d07d0b..e4cc7a0 100644 --- a/modules/ve/ce/nodes/ve.ce.AlienBlockNode.js +++ b/modules/ve/ce/nodes/ve.ce.AlienBlockNode.js @@ -11,7 +11,7 @@ * @class * @extends ve.ce.AlienNode * @constructor - * @param {ve.dm.AlienBlockNode} model Model to observe. + * @param {ve.dm.AlienBlockNode} model Model to observe */ ve.ce.AlienBlockNode = function VeCeAlienBlockNode( model ) { // Parent constructor diff --git a/modules/ve/ce/nodes/ve.ce.AlienInlineNode.js b/modules/ve/ce/nodes/ve.ce.AlienInlineNode.js index c598072..588ec2c 100644 --- a/modules/ve/ce/nodes/ve.ce.AlienInlineNode.js +++ b/modules/ve/ce/nodes/ve.ce.AlienInlineNode.js @@ -11,7 +11,7 @@ * @class * @extends ve.ce.AlienNode * @constructor - * @param {ve.dm.AlienInlineNode} model Model to observe. + * @param {ve.dm.AlienInlineNode} model Model to observe */ ve.ce.AlienInlineNode = function VeCeAlienInlineNode( model ) { // Parent constructor diff --git a/modules/ve/ce/nodes/ve.ce.AlienNode.js b/modules/ve/ce/nodes/ve.ce.AlienNode.js index ece777c..47d0c0e 100644 --- a/modules/ve/ce/nodes/ve.ce.AlienNode.js +++ b/modules/ve/ce/nodes/ve.ce.AlienNode.js @@ -11,7 +11,7 @@ * @class * @extends ve.ce.LeafNode * @constructor - * @param {ve.dm.AlienNode} model Model to observe. + * @param {ve.dm.AlienNode} model Model to observe */ ve.ce.AlienNode = function VeCeAlienNode( model ) { // Parent constructor diff --git a/modules/ve/ce/nodes/ve.ce.ImageNode.js b/modules/ve/ce/nodes/ve.ce.ImageNode.js index 1f6199c..8552051 100644 --- a/modules/ve/ce/nodes/ve.ce.ImageNode.js +++ b/modules/ve/ce/nodes/ve.ce.ImageNode.js @@ -11,7 +11,7 @@ * @class * @extends ve.ce.LeafNode * @constructor - * @param {ve.dm.ImageNode} model Model to observe. + * @param {ve.dm.ImageNode} model Model to observe */ ve.ce.ImageNode = function VeCeImageNode( model ) { // Parent constructor diff --git a/modules/ve/ce/nodes/ve.ce.MWEntityNode.js b/modules/ve/ce/nodes/ve.ce.MWEntityNode.js index 237c7ff..c55b84f 100644 --- a/modules/ve/ce/nodes/ve.ce.MWEntityNode.js +++ b/modules/ve/ce/nodes/ve.ce.MWEntityNode.js @@ -11,7 +11,7 @@ * @class * @extends ve.ce.LeafNode * @constructor - * @param {ve.dm.MWEntityNode} model Model to observe. + * @param {ve.dm.MWEntityNode} model Model to observe */ ve.ce.MWEntityNode = function VeCeMWEntityNode( model ) { // Parent constructor diff --git a/modules/ve/ce/ve.ce.LeafNode.js b/modules/ve/ce/ve.ce.LeafNode.js index 7bcc177..49b4c7a 100644 --- a/modules/ve/ce/ve.ce.LeafNode.js +++ b/modules/ve/ce/ve.ce.LeafNode.js @@ -41,7 +41,7 @@ /** * Get annotated HTML fragments. * - * @see ve.ce.ContentBranchNode. + * @see ve.ce.ContentBranchNode * * An HTML fragment can be: * - an HTML string diff --git a/modules/ve/dm/ve.dm.Document.js b/modules/ve/dm/ve.dm.Document.js index d630192..94d7cca 100644 --- a/modules/ve/dm/ve.dm.Document.js +++ b/modules/ve/dm/ve.dm.Document.js @@ -652,8 +652,8 @@ * Get plain text of a range. * * @method - * @param {ve.Range} [range] Range of data to get the text of. - * @returns {string|''} Selected text or an empty string. + * @param {ve.Range} [range] Range of data to get the text of + * @returns {string|''} Selected text or an empty string */ ve.dm.Document.prototype.getText = function ( range ) { var data = this.getData( range ), @@ -734,7 +734,7 @@ * * @param {number} offset Offset to begin looking forward and backward from * @param {Object} annotation Annotation to test for coverage with - * @returns {ve.Range|null} Range of content covered by annotation, or a copy of the range. + * @returns {ve.Range|null} Range of content covered by annotation, or a copy of the range */ ve.dm.Document.prototype.getAnnotatedRangeFromSelection = function ( range, annotation ) { var start = range.start, @@ -804,7 +804,7 @@ * * @method * @param {ve.Range} [range] Range of data to get, all data will be given by default - * @returns {Object} A new range if modified, otherwise returns passed range. + * @returns {Object} A new range if modified, otherwise returns passed range */ ve.dm.Document.prototype.trimOuterSpaceFromRange = function ( range ) { var start = range.start, diff --git a/modules/ve/dm/ve.dm.MetaItemFactory.js b/modules/ve/dm/ve.dm.MetaItemFactory.js index ce7aafe..1ebc773 100644 --- a/modules/ve/dm/ve.dm.MetaItemFactory.js +++ b/modules/ve/dm/ve.dm.MetaItemFactory.js @@ -28,7 +28,7 @@ * * @method * @param {string} type Meta item type - * @returns {boolean} Whether the item stores HTML attributes. + * @returns {boolean} Whether the item stores HTML attributes * @throws {Error} Unknown item type */ ve.dm.MetaItemFactory.prototype.doesItemStoreHtmlAttributes = function ( type ) { diff --git a/modules/ve/dm/ve.dm.MetaList.js b/modules/ve/dm/ve.dm.MetaList.js index 08e51c7..1092835 100644 --- a/modules/ve/dm/ve.dm.MetaList.js +++ b/modules/ve/dm/ve.dm.MetaList.js @@ -119,9 +119,11 @@ * * @param {number} offset Offset in the linear model * @param {number} index Index in the metadata array associated with that offset - * @param {string} [group] Group to search in. If not set, search in all groups. - * @param {boolean} [forInsertion] If the item is not found, return the index where it should have been rather than null - * @returns {number|null} Index into this.items or this.groups[group] where the item was found, or null if not found + * @param {string} [group] Group to search in. If not set, search in all groups + * @param {boolean} [forInsertion] If the item is not found, return the index where it should have + * been rather than null + * @returns {number|null} Index into this.items or this.groups[group] where the item was found, or + * null if not found */ ve.dm.MetaList.prototype.findItem = function ( offset, index, group, forInsertion ) { // Binary search for the item @@ -147,6 +149,7 @@ /** * Get the item at a given offset and index, if there is one. + * * @param {number} offset Offset in the linear model * @param {number} index Index in the metadata array * @returns {ve.dm.MetaItem|null} The item at (offset,index), or null if not found diff --git a/modules/ve/dm/ve.dm.NodeFactory.js b/modules/ve/dm/ve.dm.NodeFactory.js index 74277bd..dbb3133 100644 --- a/modules/ve/dm/ve.dm.NodeFactory.js +++ b/modules/ve/dm/ve.dm.NodeFactory.js @@ -191,7 +191,7 @@ * * @method * @param {string} type Node type - * @returns {boolean} Whether the node stores HTML attributes. + * @returns {boolean} Whether the node stores HTML attributes */ ve.dm.NodeFactory.prototype.doesNodeStoreHtmlAttributes = function ( type ) { if ( type in this.registry ) { diff --git a/modules/ve/dm/ve.dm.Transaction.js b/modules/ve/dm/ve.dm.Transaction.js index 1884740..92e1d0d 100644 --- a/modules/ve/dm/ve.dm.Transaction.js +++ b/modules/ve/dm/ve.dm.Transaction.js @@ -459,10 +459,10 @@ * * @param {ve.dm.Document} doc Document to generate a transaction for * @param {ve.Range} range Range to wrap/unwrap/replace around - * @param {Array} unwrapOuter Opening elements to unwrap. These must be immediately *outside* the range. - * @param {Array} wrapOuter Opening elements to wrap around the range. - * @param {Array} unwrapEach Opening elements to unwrap from each top-level element in the range. - * @param {Array} wrapEach Opening elements to wrap around each top-level element in the range. + * @param {Array} unwrapOuter Opening elements to unwrap. These must be immediately *outside* the range + * @param {Array} wrapOuter Opening elements to wrap around the range + * @param {Array} unwrapEach Opening elements to unwrap from each top-level element in the range + * @param {Array} wrapEach Opening elements to wrap around each top-level element in the range * @returns {ve.dm.Transaction} */ ve.dm.Transaction.newFromWrap = function ( doc, range, unwrapOuter, wrapOuter, unwrapEach, wrapEach ) { @@ -761,7 +761,7 @@ * * @method * @param {number} length Length of content data to retain - * @throws {Error} Cannot retain backwards. + * @throws {Error} Cannot retain backwards */ ve.dm.Transaction.prototype.pushRetain = function ( length ) { if ( length < 0 ) { @@ -786,7 +786,7 @@ * * @method * @param {number} length Length of content data to retain - * @throws {Error} Cannot retain backwards. + * @throws {Error} Cannot retain backwards */ ve.dm.Transaction.prototype.pushRetainMetadata = function ( length ) { if ( length < 0 ) { diff --git a/modules/ve/dm/ve.dm.TransactionProcessor.js b/modules/ve/dm/ve.dm.TransactionProcessor.js index 4a3ec15..e242fc8 100644 --- a/modules/ve/dm/ve.dm.TransactionProcessor.js +++ b/modules/ve/dm/ve.dm.TransactionProcessor.js @@ -92,7 +92,7 @@ * * @method * @param {Object} op Operation object to execute - * @throws {Error} Operation type is not supported. + * @throws {Error} Operation type is not supported */ ve.dm.TransactionProcessor.prototype.executeOperation = function ( op ) { if ( op.type in ve.dm.TransactionProcessor.processors ) { @@ -156,9 +156,9 @@ * * @method * @param {number} to Offset to stop annotating at, annotating starts at this.cursor - * @throws {Error} Cannot annotate a branch element. - * @throws {Error} Annotation to be set is already set. - * @throws {Error} Annotation to be cleared is not set. + * @throws {Error} Cannot annotate a branch element + * @throws {Error} Annotation to be set is already set + * @throws {Error} Annotation to be cleared is not set */ ve.dm.TransactionProcessor.prototype.applyAnnotations = function ( to ) { var item, element, type, annotated, annotations, i, range, selection, offset; @@ -341,7 +341,7 @@ * @param {string} op.method Annotation method, either 'set' to add or 'clear' to remove * @param {string} op.bias End point of marker, either 'start' to begin or 'stop' to end * @param {string} op.annotation Annotation object to set or clear from content - * @throws {Error} Invalid annotation method. + * @throws {Error} Invalid annotation method */ ve.dm.TransactionProcessor.processors.annotate = function ( op ) { var target; diff --git a/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js b/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js index 879de26..b19070a 100644 --- a/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js +++ b/modules/ve/init/mw/targets/ve.init.mw.ViewPageTarget.js @@ -1194,7 +1194,7 @@ * Swap state in the save dialog (forwards or backwards). * * @method - * @param {string} slide One of 'review', 'report' or 'save'. + * @param {string} slide One of 'review', 'report' or 'save' * @return {jQuery} The now active slide. * @throws {Error} Unknown saveDialog slide */ diff --git a/modules/ve/init/mw/ve.init.mw.Platform.js b/modules/ve/init/mw/ve.init.mw.Platform.js index c365622..266cdc8 100644 --- a/modules/ve/init/mw/ve.init.mw.Platform.js +++ b/modules/ve/init/mw/ve.init.mw.Platform.js @@ -115,7 +115,7 @@ * * @method * @param {string} key Message key - * @returns {string} Parsed localized message as HTML string. + * @returns {string} Parsed localized message as HTML string */ ve.init.mw.Platform.prototype.getParsedMessage = function ( key ) { if ( key in this.parsedMessages ) { @@ -130,7 +130,7 @@ * Gets client platform string from browser. * * @method - * @returns {string} Client platform string. + * @returns {string} Client platform string */ ve.init.mw.Platform.prototype.getSystemPlatform = function () { return $.client.profile().platform; @@ -140,7 +140,7 @@ * Gets the user language from the browser. * * @method - * @returns {string} User language string. + * @returns {string} User language string */ ve.init.mw.Platform.prototype.getUserLanguage = function () { return mw.config.get( 'wgUserLanguage' ); diff --git a/modules/ve/init/sa/ve.init.sa.Platform.js b/modules/ve/init/sa/ve.init.sa.Platform.js index c52ca0e..f70ee0d 100644 --- a/modules/ve/init/sa/ve.init.sa.Platform.js +++ b/modules/ve/init/sa/ve.init.sa.Platform.js @@ -112,7 +112,7 @@ * * @method * @param {string} key Message key - * @returns {string} Parsed localized message as HTML string. + * @returns {string} Parsed localized message as HTML string */ ve.init.sa.Platform.prototype.getParsedMessage = function ( key ) { if ( key in this.parsedMessages ) { @@ -140,7 +140,7 @@ * Gets client platform string from browser. * * @method - * @returns {string} Client platform string. + * @returns {string} Client platform string */ ve.init.sa.Platform.prototype.getSystemPlatform = function () { var platforms = ['win', 'mac', 'linux', 'sunos', 'solaris', 'iphone'], @@ -154,7 +154,7 @@ * Gets the user language from the browser. * * @method - * @returns {string} User language string. + * @returns {string} User language string */ ve.init.sa.Platform.prototype.getUserLanguage = function () { // IE or Firefox Safari Opera diff --git a/modules/ve/init/ve.init.Platform.js b/modules/ve/init/ve.init.Platform.js index 925d5cd..3cf14a4 100644 --- a/modules/ve/init/ve.init.Platform.js +++ b/modules/ve/init/ve.init.Platform.js @@ -61,7 +61,7 @@ * * @method * @abstract - * @param {Object} messages Containing plain message values. + * @param {Object} messages Containing plain message values */ ve.init.Platform.prototype.addMessages = function () { throw new Error( 've.init.Platform.addMessages must be overridden in subclass' ); @@ -98,7 +98,7 @@ * @method * @abstract * @param {string} key Message key - * @returns {string} Parsed localized message as HTML string. + * @returns {string} Parsed localized message as HTML string */ ve.init.Platform.prototype.getParsedMessage = function () { throw new Error( 've.init.Platform.getParsedMessage must be overridden in subclass' ); @@ -109,7 +109,7 @@ * * @method * @abstract - * @returns {string} Client platform string. + * @returns {string} Client platform string */ ve.init.Platform.prototype.getSystemPlatform = function () { throw new Error( 've.init.Platform.getSystemPlatform must be overridden in subclass' ); @@ -120,7 +120,7 @@ * * @method * @abstract - * @returns {string} User language string. + * @returns {string} User language string */ ve.init.Platform.prototype.getUserLanguage = function () { throw new Error( 've.init.Platform.getUserLanugage must be overridden in subclass' ); diff --git a/modules/ve/test/dm/ve.dm.example.js b/modules/ve/test/dm/ve.dm.example.js index 146e807..934afe0 100644 --- a/modules/ve/test/dm/ve.dm.example.js +++ b/modules/ve/test/dm/ve.dm.example.js @@ -25,7 +25,7 @@ * and an instance of ve.AnnotationSet instead of the array. * * @method - * @param {Array} data Linear model data. Will be modified. + * @param {Array} data Linear model data. Will be modified */ ve.dm.example.preprocessAnnotations = function ( data ) { var i, key; diff --git a/modules/ve/test/ve.qunit.js b/modules/ve/test/ve.qunit.js index fc75561..88714f5 100644 --- a/modules/ve/test/ve.qunit.js +++ b/modules/ve/test/ve.qunit.js @@ -90,7 +90,7 @@ * * @method * @private - * @param {HTMLElement} element Element to summarize. + * @param {HTMLElement} element Element to summarize * @returns {Object} Summary of element. */ function getDomElementSummary( element ) { diff --git a/modules/ve/ve.Factory.js b/modules/ve/ve.Factory.js index 0a54617..1936a4a 100644 --- a/modules/ve/ve.Factory.js +++ b/modules/ve/ve.Factory.js @@ -49,9 +49,9 @@ * constructor directly, so leaving one out will pass an undefined to the constructor. * * @method - * @param {string} name Object name. - * @param {Mixed...} [args] Arguments to pass to the constructor. - * @returns {Object} The new object. + * @param {string} name Object name + * @param {Mixed...} [args] Arguments to pass to the constructor + * @returns {Object} The new object * @throws {Error} Unknown object name */ ve.Factory.prototype.create = function ( name ) { diff --git a/modules/ve/ve.OrderedHashSet.js b/modules/ve/ve.OrderedHashSet.js index 76f28fe..38fa1be 100644 --- a/modules/ve/ve.OrderedHashSet.js +++ b/modules/ve/ve.OrderedHashSet.js @@ -144,7 +144,7 @@ * * @method * @param {Object} value Value to search for - * @returns {number} Index of value in the set, or -1 if value is not in the set. + * @returns {number} Index of value in the set, or -1 if value is not in the set */ ve.OrderedHashSet.prototype.indexOf = function ( value ) { var hash = this.hash( value ); @@ -274,7 +274,7 @@ * * @method * @param {number} index Index to remove item at. If negative, the counts from the end, see add() - * @throws {Error} Index out of bounds. + * @throws {Error} Index out of bounds */ ve.OrderedHashSet.prototype.removeAt = function ( index ) { if ( index < 0 ) { @@ -352,7 +352,7 @@ * This returns a copy, the original set is not modified. * * @method - * @returns {ve.OrderedHashSet} Copy of the set with the order reversed. + * @returns {ve.OrderedHashSet} Copy of the set with the order reversed */ ve.OrderedHashSet.prototype.reversed = function () { var newSet = this.clone(); diff --git a/modules/ve/ve.Range.js b/modules/ve/ve.Range.js index 1ac948f..e6681de 100644 --- a/modules/ve/ve.Range.js +++ b/modules/ve/ve.Range.js @@ -121,7 +121,7 @@ * * @method * @param {number} Length of the new range (negative for left-side truncation) - * @returns {ve.Range} A new range. + * @returns {ve.Range} A new range */ ve.Range.prototype.truncate = function ( length ) { if ( length >= 0 ) { @@ -141,7 +141,7 @@ * A collapsed range has equal start and end values making its length zero. * * @method - * @returns {boolean} Range is collapsed. + * @returns {boolean} Range is collapsed */ ve.Range.prototype.isCollapsed = function () { return this.from === this.to; diff --git a/modules/ve/ve.js b/modules/ve/ve.js index ebe4610..a71eb13 100644 --- a/modules/ve/ve.js +++ b/modules/ve/ve.js @@ -29,10 +29,10 @@ * Create an object that inherits from another object. * * @method - * @until ES5: Object.create. + * @until ES5: Object.create * @source <https://github.com/Krinkle/K-js> - * @param {Object} origin Object to inherit from. - * @return {Object} Empty object that inherits from origin. + * @param {Object} origin Object to inherit from + * @return {Object} Empty object that inherits from origin */ ve.createObject = Object.create || function ( origin ) { function O() {} @@ -160,7 +160,7 @@ * @method * @source <https://github.com/Krinkle/K-js> * @param {Object} origin - * @return {Object} Clone of origin. + * @return {Object} Clone of origin */ ve.cloneObject = function ( origin ) { var key, r; @@ -178,18 +178,20 @@ /** * Check to see if an object is a plain object (created using "{}" or "new Object"). + * * @method * @source <http://api.jquery.com/jQuery.isPlainObject/> - * @param {Object} obj The object that will be checked to see if it's a plain object. + * @param {Object} obj The object that will be checked to see if it's a plain object * @return {boolean} */ ve.isPlainObject = $.isPlainObject; /** * Check to see if an object is empty (contains no properties). + * * @method * @source <http://api.jquery.com/jQuery.isEmptyObject/> - * @param {Object} obj The object that will be checked to see if it's empty. + * @param {Object} obj The object that will be checked to see if it's empty * @return {boolean} */ ve.isEmptyObject = $.isEmptyObject; @@ -198,9 +200,10 @@ * Check whether given variable is an array. Should not use `instanceof` or * `constructor` due to the inability to detect arrays from a different * scope. + * * @method * @source <http://api.jquery.com/jQuery.isArray/> - * @until ES5: Array.isArray. + * @until ES5: Array.isArray * @param {Mixed} x * @return {boolean} */ @@ -214,25 +217,26 @@ * Performance optimization: http://jsperf.com/function-bind-shim-perf * * @method - * @until ES5: Function.prototype.bind. - * @param {Function} func Function to bind. - * @param {Object} context Context for the function. + * @until ES5: Function.prototype.bind + * @param {Function} func Function to bind + * @param {Object} context Context for the function * @param {Mixed...} [args] Variadic list of arguments to prepend to arguments - * to the bound function. - * @return {Function} The bound. + * to the bound function + * @return {Function} The bound */ ve.bind = $.proxy; /** * Wrapper for Array.prototype.indexOf. * + * Values are compared without type coercion. + * * @method * @until ES5 - * @param {Mixed} value Element to search for. - * @param {Array} array Array to search in. - * @param {number} [fromIndex=0] Index to being searching from. - * @return {number} Index of value in array, or -1 if not found. - * Values are compared without type coercion. + * @param {Mixed} value Element to search for + * @param {Array} array Array to search in + * @param {number} [fromIndex=0] Index to being searching from + * @return {number} Index of value in array, or -1 if not found */ ve.indexOf = $.inArray; @@ -274,10 +278,10 @@ * * @method * @param {boolean} [recursive=false] - * @param {Mixed} [target] Object that will receive the new properties. + * @param {Mixed} [target] Object that will receive the new properties * @param {Mixed...} [sources] Variadic list of objects containing properties * to be merged into the targe. - * @return {Mixed} Modified version of first or second argument. + * @return {Mixed} Modified version of first or second argument */ ve.extendObject = $.extend; -- To view, visit https://gerrit.wikimedia.org/r/54875 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8efa931862149e892d08b370e70aff8d86a6db7d Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/VisualEditor Gerrit-Branch: master Gerrit-Owner: Trevor Parscal <tpars...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits