Skip to content

Commit

Permalink
Merge branch 'release/4.33.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
ecrmnn committed Apr 27, 2022
2 parents 2ab3ed6 + 88e6c52 commit 9964bc6
Show file tree
Hide file tree
Showing 10 changed files with 112 additions and 3 deletions.
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ All available methods
- [combine](#combine)
- [concat](#concat)
- [contains](#contains)
- [containsOneItem](#containsoneitem)
- [count](#count)
- [countBy](#countby)
- [crossJoin](#crossjoin)
Expand Down Expand Up @@ -379,6 +380,37 @@ collection.contains((value, key) => value > 5);
// false
```

#### `containsOneItem()`

The containsOneItem method returns true if the collection contains exactly one item; otherwise, false is returned:

```js
collect([1]).containsOneItem();
// true

collect({ firstname: 'Luis' }).containsOneItem();
// true

collect('value').containsOneItem();
// true

collect([1, 2, 3]).containsOneItem();
// false

collect({ firstname: 'Luis', lastname: 'Díaz' }).containsOneItem();
// false

collect().containsOneItem();
// false

collect([]).containsOneItem();
// false

collect({}).containsOneItem();
// false
```


#### `count()`

The count method returns the total number of items in the collection:
Expand Down
14 changes: 13 additions & 1 deletion build/collect.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/collect.min.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ Collection.prototype.collapse = require('./methods/collapse');
Collection.prototype.combine = require('./methods/combine');
Collection.prototype.concat = require('./methods/concat');
Collection.prototype.contains = require('./methods/contains');
Collection.prototype.containsOneItem = require('./methods/containsOneItem');
Collection.prototype.count = require('./methods/count');
Collection.prototype.countBy = require('./methods/countBy');
Collection.prototype.crossJoin = require('./methods/crossJoin');
Expand Down
5 changes: 5 additions & 0 deletions dist/methods/containsOneItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use strict';

module.exports = function containsOneItem() {
return this.count() === 1;
};
31 changes: 31 additions & 0 deletions docs/api/containsOneItem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# `containsOneItem()`

The containsOneItem method returns true if the collection contains exactly one item; otherwise, false is returned:

```js
collect([1]).containsOneItem();
// true

collect({ firstname: 'Luis' }).containsOneItem();
// true

collect('value').containsOneItem();
// true

collect([1, 2, 3]).containsOneItem();
// false

collect({ firstname: 'Luis', lastname: 'Díaz' }).containsOneItem();
// false

collect().containsOneItem();
// false

collect([]).containsOneItem();
// false

collect({}).containsOneItem();
// false
```

[View source on GitHub](https://github.com/ecrmnn/collect.js/blob/master/src/methods/containsOneItem.js)
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "collect.js",
"version": "4.32.0",
"version": "4.33.0",
"description": "Convenient and dependency free wrapper for working with arrays and objects.",
"main": "dist/index.js",
"typings": "index.d.ts",
Expand Down
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Collection.prototype.collapse = require('./methods/collapse');
Collection.prototype.combine = require('./methods/combine');
Collection.prototype.concat = require('./methods/concat');
Collection.prototype.contains = require('./methods/contains');
Collection.prototype.containsOneItem = require('./methods/containsOneItem');
Collection.prototype.count = require('./methods/count');
Collection.prototype.countBy = require('./methods/countBy');
Collection.prototype.crossJoin = require('./methods/crossJoin');
Expand Down
5 changes: 5 additions & 0 deletions src/methods/containsOneItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use strict';

module.exports = function containsOneItem() {
return this.count() === 1;
};
22 changes: 22 additions & 0 deletions test/methods/containsOneItem_test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';

module.exports = (it, expect, collect) => {
it('should test if collection contains one item', () => {
expect(collect().containsOneItem()).to.eql(false);
expect(collect([]).containsOneItem()).to.eql(false);
expect(collect({}).containsOneItem()).to.eql(false);

expect(collect([1]).containsOneItem()).to.eql(true);
expect(collect('').containsOneItem()).to.eql(true);
expect(collect('xo').containsOneItem()).to.eql(true);
expect(collect(['']).containsOneItem()).to.eql(true);
expect(collect('a', 'b').containsOneItem()).to.eql(true);
expect(collect('value').containsOneItem()).to.eql(true);
expect(collect(['value']).containsOneItem()).to.eql(true);
expect(collect({ key: 'value' }).containsOneItem()).to.eql(true);

expect(collect([1, 2, 3]).containsOneItem()).to.eql(false);
expect(collect({ key: 'value', value: 'key' }).containsOneItem()).to.eql(false);
expect(collect([{ key: 'value' }, { key: 'value' }]).containsOneItem()).to.eql(false);
});
};

0 comments on commit 9964bc6

Please sign in to comment.