1+ use super :: exdate:: ExDate ;
2+ use super :: rdate:: RDate ;
13use super :: rrule:: RRule ;
24use crate :: rrule:: datetime:: DateTime ;
35use crate :: rrule:: dtstart:: DtStart ;
4- use crate :: rrule:: exdate:: ExDate ;
5- use crate :: rrule:: rdate:: RDate ;
66use crate :: rrule:: value_type:: ValueType ;
7- use crate :: rrule:: { rrule, rrule_set} ;
7+ use crate :: rrule:: { exdate , rdate , rrule, rrule_set} ;
88use napi:: bindgen_prelude:: { Array , Reference , SharedReference } ;
99use napi:: Env ;
1010use napi_derive:: napi;
@@ -24,8 +24,8 @@ impl RRuleSet {
2424 dtstart_value : Option < String > ,
2525 #[ napi( ts_arg_type = "(readonly RRule[]) | undefined | null" ) ] rrules : Option < Vec < & RRule > > ,
2626 #[ napi( ts_arg_type = "(readonly RRule[]) | undefined | null" ) ] exrules : Option < Vec < & RRule > > ,
27- #[ napi( ts_arg_type = "(readonly number []) | undefined | null" ) ] exdates : Option < Vec < i64 > > ,
28- #[ napi( ts_arg_type = "(readonly number []) | undefined | null" ) ] rdates : Option < Vec < i64 > > ,
27+ #[ napi( ts_arg_type = "(readonly ExDate []) | undefined | null" ) ] exdates : Option < Vec < & ExDate > > ,
28+ #[ napi( ts_arg_type = "(readonly RDate []) | undefined | null" ) ] rdates : Option < Vec < & RDate > > ,
2929 ) -> napi:: Result < Self > {
3030 let tzid: Option < chrono_tz:: Tz > = match tzid {
3131 Some ( tzid) => Some (
@@ -56,13 +56,13 @@ impl RRuleSet {
5656 . map ( |rrule| rrule. into ( ) )
5757 . collect ( ) ;
5858
59- let exdates: Vec < ExDate > = exdates
59+ let exdates: Vec < exdate :: ExDate > = exdates
6060 . unwrap_or_default ( )
6161 . into_iter ( )
6262 . map ( Into :: into)
6363 . collect ( ) ;
6464
65- let rdates: Vec < RDate > = rdates
65+ let rdates: Vec < rdate :: RDate > = rdates
6666 . unwrap_or_default ( )
6767 . into_iter ( )
6868 . map ( Into :: into)
@@ -121,44 +121,28 @@ impl RRuleSet {
121121 )
122122 }
123123
124- #[ napi( getter, ts_return_type = "number[]" ) ]
125- pub fn exdates ( & self ) -> napi:: Result < Vec < i64 > > {
126- let mut exdates = Vec :: < i64 > :: new ( ) ;
127-
128- for exdate in self . rrule_set . exdates ( ) {
129- let datetimes = exdate
130- . to_datetimes ( & self . rrule_set . dtstart ( ) )
131- . map_err ( |e| napi:: Error :: new ( napi:: Status :: GenericFailure , e) ) ?;
132-
133- for datetime in datetimes. iter ( ) {
134- let datetime = datetime. with_timezone ( & self . rrule_set . dtstart ( ) . derive_timezone ( ) ) ;
135- let datetime = DateTime :: from ( & datetime) ;
136-
137- exdates. push ( ( & datetime) . into ( ) ) ;
138- }
139- }
140-
141- Ok ( exdates)
124+ #[ napi( getter, ts_return_type = "ExDate[]" ) ]
125+ pub fn exdates ( & self ) -> napi:: Result < Vec < ExDate > > {
126+ Ok (
127+ self
128+ . rrule_set
129+ . exdates ( )
130+ . iter ( )
131+ . map ( |exdate| exdate. clone ( ) . into ( ) )
132+ . collect ( ) ,
133+ )
142134 }
143135
144- #[ napi( getter, ts_return_type = "number[]" ) ]
145- pub fn rdates ( & self ) -> napi:: Result < Vec < i64 > > {
146- let mut rdates = Vec :: < i64 > :: new ( ) ;
147-
148- for rdate in self . rrule_set . rdates ( ) {
149- let datetimes = rdate
150- . to_datetimes ( & self . rrule_set . dtstart ( ) )
151- . map_err ( |e| napi:: Error :: new ( napi:: Status :: GenericFailure , e) ) ?;
152-
153- for datetime in datetimes. iter ( ) {
154- let datetime = datetime. with_timezone ( & self . rrule_set . dtstart ( ) . derive_timezone ( ) ) ;
155- let datetime = DateTime :: from ( & datetime) ;
156-
157- rdates. push ( ( & datetime) . into ( ) ) ;
158- }
159- }
160-
161- Ok ( rdates)
136+ #[ napi( getter, ts_return_type = "RDate[]" ) ]
137+ pub fn rdates ( & self ) -> napi:: Result < Vec < RDate > > {
138+ Ok (
139+ self
140+ . rrule_set
141+ . rdates ( )
142+ . iter ( )
143+ . map ( |rdate| rdate. clone ( ) . into ( ) )
144+ . collect ( ) ,
145+ )
162146 }
163147
164148 #[ napi( factory, ts_return_type = "RRuleSet" ) ]
0 commit comments