(line)
| 17071 | } |
| 17072 | } |
| 17073 | function parseRrule(line) { |
| 17074 | var strippedLine = line.replace(/^RRULE:/i, ""); |
| 17075 | var options = parseDtstart(strippedLine); |
| 17076 | var attrs = line.replace(/^(?:RRULE|EXRULE):/i, "").split(";"); |
| 17077 | attrs.forEach(function(attr) { |
| 17078 | var _a = attr.split("="), key = _a[0], value = _a[1]; |
| 17079 | switch (key.toUpperCase()) { |
| 17080 | case "FREQ": |
| 17081 | options.freq = Frequency[value.toUpperCase()]; |
| 17082 | break; |
| 17083 | case "WKST": |
| 17084 | options.wkst = Days[value.toUpperCase()]; |
| 17085 | break; |
| 17086 | case "COUNT": |
| 17087 | case "INTERVAL": |
| 17088 | case "BYSETPOS": |
| 17089 | case "BYMONTH": |
| 17090 | case "BYMONTHDAY": |
| 17091 | case "BYYEARDAY": |
| 17092 | case "BYWEEKNO": |
| 17093 | case "BYHOUR": |
| 17094 | case "BYMINUTE": |
| 17095 | case "BYSECOND": |
| 17096 | var num = parseNumber(value); |
| 17097 | var optionKey = key.toLowerCase(); |
| 17098 | options[optionKey] = num; |
| 17099 | break; |
| 17100 | case "BYWEEKDAY": |
| 17101 | case "BYDAY": |
| 17102 | options.byweekday = parseWeekday(value); |
| 17103 | break; |
| 17104 | case "DTSTART": |
| 17105 | case "TZID": |
| 17106 | var dtstart = parseDtstart(line); |
| 17107 | options.tzid = dtstart.tzid; |
| 17108 | options.dtstart = dtstart.dtstart; |
| 17109 | break; |
| 17110 | case "UNTIL": |
| 17111 | options.until = untilStringToDate(value); |
| 17112 | break; |
| 17113 | case "BYEASTER": |
| 17114 | options.byeaster = Number(value); |
| 17115 | break; |
| 17116 | default: |
| 17117 | throw new Error("Unknown RRULE property '" + key + "'"); |
| 17118 | } |
| 17119 | }); |
| 17120 | return options; |
| 17121 | } |
| 17122 | function parseNumber(value) { |
| 17123 | if (value.indexOf(",") !== -1) { |
| 17124 | var values = value.split(","); |
no test coverage detected