jenkins-bot has submitted this change and it was merged.
Change subject: getAnnotationsFromRange should only ignore non-content data
......................................................................
getAnnotationsFromRange should only ignore non-content data
Currently ignores all non-element data, but element content (e.g.
images) can be annotated.
Added test cases and updated the test runner to only compare
store indexes for a more readable output.
Bug: 50127
Change-Id: I234586a28072811c8288aab56f6abaaa0da0c88d
---
M modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
M modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
2 files changed, 23 insertions(+), 7 deletions(-)
Approvals:
Catrope: Looks good to me, approved
jenkins-bot: Verified
diff --git a/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
b/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
index 688d9e5..91ff5fb 100644
--- a/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
+++ b/modules/ve/dm/lineardata/ve.dm.ElementLinearData.js
@@ -433,9 +433,7 @@
* @returns {ve.dm.AnnotationSet} All annotation objects range is covered by
*/
ve.dm.ElementLinearData.prototype.getAnnotationsFromRange = function ( range,
all ) {
- var i,
- left,
- right;
+ var i, left, right;
// Look at left side of range for annotations
left = this.getAnnotationsFromOffset( range.start );
// Shortcut for single character and zero-length ranges
@@ -444,8 +442,8 @@
}
// Iterator over the range, looking for annotations, starting at the
2nd character
for ( i = range.start + 1; i < range.end; i++ ) {
- // Skip non character data
- if ( this.isElementData( i ) ) {
+ // Skip non-content data
+ if ( this.isElementData( i ) &&
!ve.dm.nodeFactory.isNodeContent( this.getType( i ) ) ) {
continue;
}
// Current character annotations
diff --git a/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
b/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
index b82808f..4d0498e 100644
--- a/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
+++ b/modules/ve/test/dm/lineardata/ve.dm.ElementLinearData.test.js
@@ -215,6 +215,24 @@
'expected': []
},
{
+ 'msg': 'no common coverage due to un-annotated content
node',
+ 'data': [
+ ['a', [ { 'type': 'textStyle/bold' } ] ],
+ { 'type': 'image' },
+ { 'type': '/image' }
+ ],
+ 'expected': []
+ },
+ {
+ 'msg': 'branch node is ignored',
+ 'data': [
+ ['a', [ { 'type': 'textStyle/bold' } ] ],
+ { 'type': 'paragraph' },
+ { 'type': '/paragraph' }
+ ],
+ 'expected': [ { 'type': 'textStyle/bold' } ]
+ },
+ {
'msg': 'annotations are collected using all with
mismatched annotations',
'data': [
['a', [ { 'type': 'textStyle/bold' } ] ],
@@ -284,8 +302,8 @@
data = ve.dm.example.preprocessAnnotations( cases[i].data );
doc = new ve.dm.Document( data );
assert.deepEqual(
- doc.data.getAnnotationsFromRange( new ve.Range( 0,
cases[i].data.length ), cases[i].all ),
- ve.dm.example.createAnnotationSet( doc.getStore(),
cases[i].expected ),
+ doc.data.getAnnotationsFromRange( new ve.Range( 0,
cases[i].data.length ), cases[i].all ).getIndexes(),
+ ve.dm.example.createAnnotationSet( doc.getStore(),
cases[i].expected ).getIndexes(),
cases[i].msg
);
}
--
To view, visit https://gerrit.wikimedia.org/r/79919
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I234586a28072811c8288aab56f6abaaa0da0c88d
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Trevor Parscal <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits