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