]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Fix #4078: Implement a clone method for durations
authorAsh Searle <ash@hexmen.com>
Fri, 21 Jul 2017 17:30:12 +0000 (18:30 +0100)
committerIskren Chernev <iskren.chernev@gmail.com>
Mon, 7 Aug 2017 18:52:33 +0000 (21:52 +0300)
src/lib/duration/clone.js [new file with mode: 0644]
src/lib/duration/prototype.js
src/test/moment/duration.js

diff --git a/src/lib/duration/clone.js b/src/lib/duration/clone.js
new file mode 100644 (file)
index 0000000..56008d1
--- /dev/null
@@ -0,0 +1,6 @@
+import { createDuration } from './create';
+
+export function clone () {
+    return createDuration(this);
+}
+
index d923375cbe80c8531aafad0b49aa09edddc99f69..dd5470d38b281bb2370622b323373b714df6a628 100644 (file)
@@ -6,6 +6,7 @@ import { abs } from './abs';
 import { add, subtract } from './add-subtract';
 import { as, asMilliseconds, asSeconds, asMinutes, asHours, asDays, asWeeks, asMonths, asYears, valueOf } from './as';
 import { bubble } from './bubble';
+import { clone } from './clone';
 import { get, milliseconds, seconds, minutes, hours, days, months, years, weeks } from './get';
 import { humanize } from './humanize';
 import { toISOString } from './iso-string';
@@ -27,6 +28,7 @@ proto.asMonths       = asMonths;
 proto.asYears        = asYears;
 proto.valueOf        = valueOf;
 proto._bubble        = bubble;
+proto.clone          = clone;
 proto.get            = get;
 proto.milliseconds   = milliseconds;
 proto.seconds        = seconds;
index da20edeeeeb65f119685a068a067860dd534126a..9d34cd249010d35e88d01d23ff1ef51824bcfd20 100644 (file)
@@ -148,6 +148,14 @@ test('instantiation from another duration', function (assert) {
     assert.deepEqual(moment.duration(modified), modified, 'cloning modified duration works');
 });
 
+test('explicit cloning', function (assert) {
+    var durationA = moment.duration(5, 'milliseconds');
+    var durationB = durationA.clone();
+    durationA.add(5, 'milliseconds');
+    assert.equal(durationB.milliseconds(), 5, 'Calling duration.clone() on a duration will create a clone');
+    assert.equal(durationA.milliseconds(), 10, 'Calling duration.clone() on a duration will create a clone');
+});
+
 test('instantiation from 24-hour time zero', function (assert) {
     assert.equal(moment.duration('00:00').years(), 0, '0 years');
     assert.equal(moment.duration('00:00').days(), 0, '0 days');