Skip to content
This repository was archived by the owner on Jun 26, 2020. It is now read-only.

Commit 2e04af7

Browse files
author
Piotr Jasiun
authored
Merge pull request #1659 from ckeditor/t/1658
Feature: Introduced `Differ#getChangedMarkers`. Closes #1658.
2 parents 6c8e975 + 011c8ed commit 2e04af7

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

src/model/differ.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,23 @@ export default class Differ {
292292
return result;
293293
}
294294

295+
/**
296+
* Returns all markers which changed.
297+
*
298+
* @returns {Array.<Object>}
299+
*/
300+
getChangedMarkers() {
301+
return Array.from( this._changedMarkers ).map( item => (
302+
{
303+
name: item[ 0 ],
304+
data: {
305+
oldRange: item[ 1 ].oldRange,
306+
newRange: item[ 1 ].newRange
307+
}
308+
}
309+
) );
310+
}
311+
295312
/**
296313
* Checks whether some of the buffered changes affect the editor data.
297314
*

tests/model/differ.js

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,6 +1403,16 @@ describe( 'Differ', () => {
14031403
expect( differ.getMarkersToAdd() ).to.deep.equal( [
14041404
{ name: 'name', range }
14051405
] );
1406+
1407+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1408+
{
1409+
name: 'name',
1410+
data: {
1411+
oldRange: null,
1412+
newRange: range
1413+
}
1414+
}
1415+
] );
14061416
} );
14071417

14081418
it( 'remove marker', () => {
@@ -1413,6 +1423,16 @@ describe( 'Differ', () => {
14131423
] );
14141424

14151425
expect( differ.getMarkersToAdd() ).to.deep.equal( [] );
1426+
1427+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1428+
{
1429+
name: 'name',
1430+
data: {
1431+
oldRange: range,
1432+
newRange: null
1433+
}
1434+
}
1435+
] );
14161436
} );
14171437

14181438
it( 'change marker\'s range', () => {
@@ -1425,6 +1445,16 @@ describe( 'Differ', () => {
14251445
expect( differ.getMarkersToAdd() ).to.deep.equal( [
14261446
{ name: 'name', range: rangeB }
14271447
] );
1448+
1449+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1450+
{
1451+
name: 'name',
1452+
data: {
1453+
oldRange: range,
1454+
newRange: rangeB
1455+
}
1456+
}
1457+
] );
14281458
} );
14291459

14301460
it( 'add marker not affecting data', () => {
@@ -1445,6 +1475,8 @@ describe( 'Differ', () => {
14451475

14461476
expect( differ.getMarkersToRemove() ).to.deep.equal( [] );
14471477
expect( differ.getMarkersToAdd() ).to.deep.equal( [] );
1478+
expect( differ.getChangedMarkers() ).to.deep.equal( [] );
1479+
14481480
expect( differ.hasDataChanges() ).to.be.false;
14491481
} );
14501482

@@ -1457,6 +1489,16 @@ describe( 'Differ', () => {
14571489
expect( differ.getMarkersToAdd() ).to.deep.equal( [
14581490
{ name: 'name', range: rangeB }
14591491
] );
1492+
1493+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1494+
{
1495+
name: 'name',
1496+
data: {
1497+
oldRange: null,
1498+
newRange: rangeB
1499+
}
1500+
}
1501+
] );
14601502
} );
14611503

14621504
it( 'change marker to not affecting data', () => {
@@ -1475,6 +1517,17 @@ describe( 'Differ', () => {
14751517
] );
14761518

14771519
expect( differ.getMarkersToAdd() ).to.deep.equal( [] );
1520+
1521+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1522+
{
1523+
name: 'name',
1524+
data: {
1525+
oldRange: range,
1526+
newRange: null
1527+
}
1528+
}
1529+
] );
1530+
14781531
expect( differ.hasDataChanges() ).to.be.true;
14791532
} );
14801533

@@ -1489,6 +1542,16 @@ describe( 'Differ', () => {
14891542
expect( differ.getMarkersToAdd() ).to.deep.equal( [
14901543
{ name: 'name', range }
14911544
] );
1545+
1546+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1547+
{
1548+
name: 'name',
1549+
data: {
1550+
oldRange: range,
1551+
newRange: range
1552+
}
1553+
}
1554+
] );
14921555
} );
14931556

14941557
it( 'change marker to the same range', () => {
@@ -1501,6 +1564,16 @@ describe( 'Differ', () => {
15011564
expect( differ.getMarkersToAdd() ).to.deep.equal( [
15021565
{ name: 'name', range }
15031566
] );
1567+
1568+
expect( differ.getChangedMarkers() ).to.deep.equal( [
1569+
{
1570+
name: 'name',
1571+
data: {
1572+
oldRange: range,
1573+
newRange: range
1574+
}
1575+
}
1576+
] );
15041577
} );
15051578
} );
15061579

0 commit comments

Comments
 (0)