Skip to content

Commit

Permalink
Merge pull request #44 from drtimwright/immutable_stack
Browse files Browse the repository at this point in the history
Immutable stack
  • Loading branch information
glenjamin committed Jan 19, 2019
2 parents 6506429 + d8da0e9 commit 7e4144e
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
14 changes: 14 additions & 0 deletions index.js
Expand Up @@ -41,6 +41,9 @@ function createReaderHandlers(extras, recordMap, missingRecordHandler) {
iS: function(v) {
return Immutable.Set(v);
},
iStk: function(v) {
return Immutable.Stack(v);
},
iOS: function(v) {
return Immutable.OrderedSet(v);
},
Expand Down Expand Up @@ -103,6 +106,17 @@ function createWriterHandlers(extras, recordMap, predicate) {
return v.toArray();
}
}),
Immutable.Stack, transit.makeWriteHandler({
tag: function() {
return "iStk";
},
rep: function(v) {
if (predicate) {
v = v.filter(predicate);
}
return v.toArray();
}
}),
Immutable.Set, transit.makeWriteHandler({
tag: function() {
return "iS";
Expand Down
4 changes: 2 additions & 2 deletions test/shared.js
Expand Up @@ -9,6 +9,8 @@ exports.samples = Immutable.Map({

"Immutable": Immutable.Map({

"Stack": new Immutable.Stack([1, 2, 3]),

"Maps": Immutable.Map({"abc": "def\nghi"}),

"Maps with numeric keys": Immutable.Map().set(1, 2),
Expand Down Expand Up @@ -60,9 +62,7 @@ exports.samples = Immutable.Map({
a: Immutable.Map({1: 2}),
b: Immutable.Map({3: 4})
}

})

});

// This is a hack because records and maps are considered equivalent by
Expand Down
10 changes: 10 additions & 0 deletions test/test.js
Expand Up @@ -235,6 +235,16 @@ describe('transit', function() {
expect(result.size).to.eql(3);
});

it('can ignore Stack entries', function() {
var input = Immutable.Stack.of(1, 2, 3, 'a');
filter = transit.withFilter(function(val) {
return typeof val === 'number';
});
var result = filter.fromJSON(filter.toJSON(input));
expect(result.includes('a')).to.eql(false);
expect(result.size).to.eql(3);
});

it('can ignore OrderedSet entries', function() {
var input = Immutable.Set.of(1, 2, 3, 3, 'a');
filter = transit.withFilter(function(val) {
Expand Down

0 comments on commit 7e4144e

Please sign in to comment.