(iterResult, _rrule, _exrule, _rdate, _exdate, tzid)
| 17894 | return RRule2; |
| 17895 | }(); |
| 17896 | function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) { |
| 17897 | var _exdateHash = {}; |
| 17898 | var _accept = iterResult.accept; |
| 17899 | function evalExdate(after, before) { |
| 17900 | _exrule.forEach(function(rrule) { |
| 17901 | rrule.between(after, before, true).forEach(function(date) { |
| 17902 | _exdateHash[Number(date)] = true; |
| 17903 | }); |
| 17904 | }); |
| 17905 | } |
| 17906 | _exdate.forEach(function(date) { |
| 17907 | var zonedDate2 = new DateWithZone(date, tzid).rezonedDate(); |
| 17908 | _exdateHash[Number(zonedDate2)] = true; |
| 17909 | }); |
| 17910 | iterResult.accept = function(date) { |
| 17911 | var dt = Number(date); |
| 17912 | if (isNaN(dt)) |
| 17913 | return _accept.call(this, date); |
| 17914 | if (!_exdateHash[dt]) { |
| 17915 | evalExdate(new Date(dt - 1), new Date(dt + 1)); |
| 17916 | if (!_exdateHash[dt]) { |
| 17917 | _exdateHash[dt] = true; |
| 17918 | return _accept.call(this, date); |
| 17919 | } |
| 17920 | } |
| 17921 | return true; |
| 17922 | }; |
| 17923 | if (iterResult.method === "between") { |
| 17924 | evalExdate(iterResult.args.after, iterResult.args.before); |
| 17925 | iterResult.accept = function(date) { |
| 17926 | var dt = Number(date); |
| 17927 | if (!_exdateHash[dt]) { |
| 17928 | _exdateHash[dt] = true; |
| 17929 | return _accept.call(this, date); |
| 17930 | } |
| 17931 | return true; |
| 17932 | }; |
| 17933 | } |
| 17934 | for (var i = 0; i < _rdate.length; i++) { |
| 17935 | var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate(); |
| 17936 | if (!iterResult.accept(new Date(zonedDate.getTime()))) |
| 17937 | break; |
| 17938 | } |
| 17939 | _rrule.forEach(function(rrule) { |
| 17940 | iter(iterResult, rrule.options); |
| 17941 | }); |
| 17942 | var res = iterResult._result; |
| 17943 | sort(res); |
| 17944 | switch (iterResult.method) { |
| 17945 | case "all": |
| 17946 | case "between": |
| 17947 | return res; |
| 17948 | case "before": |
| 17949 | return res.length && res[res.length - 1] || null; |
| 17950 | case "after": |
| 17951 | default: |
| 17952 | return res.length && res[0] || null; |
| 17953 | } |
no test coverage detected