@@ -372,7 +372,7 @@ const exdateParameter = function (name) {
372
372
if ( typeof exdate [ name ] . toISOString === 'function' ) {
373
373
curr [ name ] [ exdate [ name ] . toISOString ( ) . slice ( 0 , 10 ) ] = exdate [ name ] ;
374
374
} else {
375
- throw new TypeError ( 'No toISOString function in exdate[name]' , exdate [ name ] ) ;
375
+ throw new TypeError ( 'No toISOString function in exdate[name] = ' + exdate [ name ] ) ;
376
376
}
377
377
}
378
378
}
@@ -548,7 +548,7 @@ module.exports = {
548
548
if ( typeof curr . recurrenceid . toISOString === 'function' ) {
549
549
par [ curr . uid ] . recurrences [ curr . recurrenceid . toISOString ( ) . slice ( 0 , 10 ) ] = recurrenceObject ;
550
550
} else { // Removed issue 56
551
- throw new TypeError ( 'No toISOString function in curr.recurrenceid' , curr . recurrenceid ) ;
551
+ throw new TypeError ( 'No toISOString function in curr.recurrenceid =' + curr . recurrenceid ) ;
552
552
}
553
553
}
554
554
@@ -623,10 +623,10 @@ module.exports = {
623
623
624
624
rule = rule . replace ( / \. \d { 3 } / , '' ) ;
625
625
} catch ( error ) { // This should not happen, issue #56
626
- throw new Error ( 'ERROR when trying to convert to ISOString' , error ) ;
626
+ throw new Error ( 'ERROR when trying to convert to ISOString ' + error ) ;
627
627
}
628
628
} else {
629
- throw new Error ( 'No toISOString function in curr.start' , curr . start ) ;
629
+ throw new Error ( 'No toISOString function in curr.start ' + curr . start ) ;
630
630
}
631
631
}
632
632
@@ -645,11 +645,23 @@ module.exports = {
645
645
URL : storeParameter ( 'url' ) ,
646
646
UID : storeParameter ( 'uid' ) ,
647
647
LOCATION : storeParameter ( 'location' ) ,
648
- DTSTART ( value , parameters , curr , stack ) {
649
- curr = dateParameter ( 'start' ) ( value , parameters , curr , stack ) ;
650
- return typeParameter ( 'datetype' ) ( value , parameters , curr ) ;
648
+ DTSTART ( value , parameters , curr , stack , line ) {
649
+ // If already defined, this is a duplicate for this event
650
+ if ( curr . start === undefined ) {
651
+ curr = dateParameter ( 'start' ) ( value , parameters , curr , stack ) ;
652
+ return typeParameter ( 'datetype' ) ( value , parameters , curr ) ;
653
+ }
654
+
655
+ throw new Error ( 'duplicate DTSTART encountered, line=' + line ) ;
656
+ } ,
657
+ DTEND ( value , parameters , curr , stack , line ) {
658
+ // If already defined, this is a duplicate for this event
659
+ if ( curr . end === undefined ) {
660
+ return dateParameter ( 'end' ) ( value , parameters , curr , stack ) ;
661
+ }
662
+
663
+ throw new Error ( 'duplicate DTEND encountered, line=' + line ) ;
651
664
} ,
652
- DTEND : dateParameter ( 'end' ) ,
653
665
EXDATE : exdateParameter ( 'exdate' ) ,
654
666
' CLASS' : storeParameter ( 'class' ) , // Should there be a space in this property?
655
667
TRANSP : storeParameter ( 'transparency' ) ,
0 commit comments