Skip to content

Commit 0a56a3b

Browse files
kborucinskikrystianborucinski
authored andcommitted
Add date/clone method (#39)
* Add clone method * Update after code review * Update after code review Co-authored-by: krystianborucinski <krystian.borucinski@sandstream.pl>
1 parent cab86fd commit 0a56a3b

File tree

9 files changed

+101
-0
lines changed

9 files changed

+101
-0
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,29 @@ Runs the given tasks in a sequence.
694694
```
695695
<!-- prettier-ignore-end -->
696696

697+
#### clone
698+
699+
Clones the given Date object.
700+
701+
##### Type signature
702+
703+
<!-- prettier-ignore-start -->
704+
```typescript
705+
(date: Date) => Date
706+
```
707+
<!-- prettier-ignore-end -->
708+
709+
##### Examples
710+
711+
<!-- prettier-ignore-start -->
712+
```javascript
713+
const date = new new Date('2019-04-24T13:54:33.232Z');
714+
const cloned = clone(date);
715+
716+
cloned !== date && cloned.valueOf() === date.valueOf(); // ⇒ true
717+
```
718+
<!-- prettier-ignore-end -->
719+
697720
#### dateDiff
698721

699722
##### Type signature

date/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,29 @@
3838
```
3939
<!-- prettier-ignore-end -->
4040

41+
# clone
42+
43+
Clones the given Date object.
44+
45+
## Type signature
46+
47+
<!-- prettier-ignore-start -->
48+
```typescript
49+
(date: Date) => Date
50+
```
51+
<!-- prettier-ignore-end -->
52+
53+
## Examples
54+
55+
<!-- prettier-ignore-start -->
56+
```javascript
57+
const date = new new Date('2019-04-24T13:54:33.232Z');
58+
const cloned = clone(date);
59+
60+
cloned !== date && cloned.valueOf() === date.valueOf(); // ⇒ true
61+
```
62+
<!-- prettier-ignore-end -->
63+
4164
# dateDiff
4265

4366
## Type signature

date/clone.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default date => new Date(+date);

date/clone.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "clone",
3+
"description": "Clones the given Date object.",
4+
"signature": "(date: Date) => Date",
5+
"examples": [
6+
{
7+
"language": "javascript",
8+
"content": "const date = new new Date('2019-04-24T13:54:33.232Z');\nconst cloned = clone(date);\n\ncloned !== date && cloned.valueOf() === date.valueOf(); // ⇒ true"
9+
}
10+
],
11+
"questions": ["TODO: List questions that may this function answer."]
12+
}

date/clone.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# clone
2+
3+
Clones the given Date object.
4+
5+
## Type signature
6+
7+
<!-- prettier-ignore-start -->
8+
```typescript
9+
(date: Date) => Date
10+
```
11+
<!-- prettier-ignore-end -->
12+
13+
## Examples
14+
15+
<!-- prettier-ignore-start -->
16+
```javascript
17+
const date = new new Date('2019-04-24T13:54:33.232Z');
18+
const cloned = clone(date);
19+
20+
cloned !== date && cloned.valueOf() === date.valueOf(); // ⇒ true
21+
```
22+
<!-- prettier-ignore-end -->

date/clone.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/* eslint-env jest */
2+
// @ts-ignore ambiguous import
3+
import clone from "./clone.ts";
4+
5+
describe("clone", () => {
6+
it("should return cloned date", () => {
7+
const date = new Date("2019-04-24T13:54:33.232Z");
8+
const cloned = clone(date);
9+
10+
expect(cloned).not.toBe(date);
11+
expect(cloned).toEqual(date);
12+
});
13+
});

date/clone.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export default (date: Date) => new Date(+date);

date/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import byDateWithFallback from "./byDateWithFallback.js";
22
import clamp from "./clamp.js";
3+
import clone from "./clone.js";
34
import dateDiff from "./dateDiff.js";
45
import dateInRange from "./dateInRange.js";
56
import dayRange from "./dayRange.js";
@@ -39,6 +40,7 @@ import valid from "./valid.js";
3940
export {
4041
byDateWithFallback,
4142
clamp,
43+
clone,
4244
dateDiff,
4345
dateInRange,
4446
dayRange,
@@ -79,6 +81,7 @@ export {
7981
export default {
8082
byDateWithFallback,
8183
clamp,
84+
clone,
8285
dateDiff,
8386
dateInRange,
8487
dayRange,

date/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import byDateWithFallback from "./byDateWithFallback";
22
import clamp from "./clamp";
3+
import clone from "./clone";
34
import dateDiff from "./dateDiff";
45
import dateInRange from "./dateInRange";
56
import dayRange from "./dayRange";
@@ -39,6 +40,7 @@ import valid from "./valid";
3940
export {
4041
byDateWithFallback,
4142
clamp,
43+
clone,
4244
dateDiff,
4345
dateInRange,
4446
dayRange,
@@ -79,6 +81,7 @@ export {
7981
export default {
8082
byDateWithFallback,
8183
clamp,
84+
clone,
8285
dateDiff,
8386
dateInRange,
8487
dayRange,

0 commit comments

Comments
 (0)