diff --git a/2011.ics b/2011.ics index e29cecb..e1b5490 100644 --- a/2011.ics +++ b/2011.ics @@ -30,16 +30,9 @@ END:VEVENT BEGIN:VEVENT SUMMARY:春节假期 DTSTART;VALUE=DATE:20110202 -DTEND;VALUE=DATE:20110203 -DTSTAMP;VALUE=DATE:20110202 -UID:2011-02-02/2011-02-03/NateScarlet/holiday-cn -END:VEVENT -BEGIN:VEVENT -SUMMARY:春节假期 -DTSTART;VALUE=DATE:20110208 DTEND;VALUE=DATE:20110209 -DTSTAMP;VALUE=DATE:20110208 -UID:2011-02-08/2011-02-09/NateScarlet/holiday-cn +DTSTAMP;VALUE=DATE:20110202 +UID:2011-02-02/2011-02-09/NateScarlet/holiday-cn END:VEVENT BEGIN:VEVENT SUMMARY:上班(补春节假期) diff --git a/2011.json b/2011.json index 58ecbdc..0a19a8d 100644 --- a/2011.json +++ b/2011.json @@ -31,6 +31,31 @@ "date": "2011-02-02", "isOffDay": true }, + { + "name": "春节", + "date": "2011-02-03", + "isOffDay": true + }, + { + "name": "春节", + "date": "2011-02-04", + "isOffDay": true + }, + { + "name": "春节", + "date": "2011-02-05", + "isOffDay": true + }, + { + "name": "春节", + "date": "2011-02-06", + "isOffDay": true + }, + { + "name": "春节", + "date": "2011-02-07", + "isOffDay": true + }, { "name": "春节", "date": "2011-02-08", diff --git a/fetch_holidays.py b/fetch_holidays.py index 7c3b32c..7090a92 100755 --- a/fetch_holidays.py +++ b/fetch_holidays.py @@ -281,6 +281,7 @@ class SentenceParser: yield self.parent.get_date(year=groups[0], month=groups[1], day=groups[2]) def _extract_dates_2(self, value: str) -> Iterator[date]: + value = re.sub(r"(.+?)", "", value) match = re.findall( r"(?:(\d+)年)?(?:(\d+)月)?(\d+)日(?:至|-|—)(?:(\d+)年)?(?:(\d+)月)?(\d+)日", value ) @@ -293,6 +294,7 @@ class SentenceParser: yield start + timedelta(days=i) def _extract_dates_3(self, value: str) -> Iterator[date]: + value = re.sub(r"(.+?)", "", value) match = re.findall( r"(?:(\d+)年)?(?:(\d+)月)?(\d+)日(?:([^)]+))?" r"(?:、(?:(\d+)年)?(?:(\d+)月)?(\d+)日(?:([^)]+))?)+", diff --git a/tests/description_parsing_cases.json b/tests/description_parsing_cases.json index 23cdefb..d651a8e 100644 --- a/tests/description_parsing_cases.json +++ b/tests/description_parsing_cases.json @@ -356,6 +356,21 @@ { "date": "2013-10-12", "isOffDay": false } ] }, + { + "year": 2011, + "description": "2月2日(农历除夕)至8日放假调休,共7天。1月30日(星期日)、2月12日(星期六)上班。", + "expected": [ + { "date": "2011-02-02", "isOffDay": true }, + { "date": "2011-02-03", "isOffDay": true }, + { "date": "2011-02-04", "isOffDay": true }, + { "date": "2011-02-05", "isOffDay": true }, + { "date": "2011-02-06", "isOffDay": true }, + { "date": "2011-02-07", "isOffDay": true }, + { "date": "2011-02-08", "isOffDay": true }, + { "date": "2011-01-30", "isOffDay": false }, + { "date": "2011-02-12", "isOffDay": false } + ] + }, { "year": 2008, "description": "2007年12月30日—2008年1月1日放假,共3天。其中,1月1日(星期二)为法定节假日,12月30日(星期日)为公休日,12月29日(星期六)公休日调至12月31日(星期一),12月29日(星期六)上班。",