diff options
Diffstat (limited to 'src/lib/schedule-dates.ts')
| -rw-r--r-- | src/lib/schedule-dates.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/schedule-dates.ts b/src/lib/schedule-dates.ts index 5f0900b..719a9c6 100644 --- a/src/lib/schedule-dates.ts +++ b/src/lib/schedule-dates.ts @@ -128,3 +128,23 @@ export function parseDates(raw: string): string[] { return [...dates].sort(); } + +/** + * 行事予定1行分の開催日を求める。 + * - 会議:日付セルに加えて、時間・会場セル内の日付も拾う(「毎月1回(11月12日も開催)」など) + * - イベント:時間セルの「(11月4日を除く)」を反映する + * カレンダー(ブラウザ)と月別アーカイブ(ビルド時)で同じ結果になるよう、ここに集約する。 + */ +export function entryDates( + type: 'meeting' | 'event', + dateText: string, + placeText: string, +): string[] { + const dates = new Set(parseDates(dateText)); + if (type === 'meeting') { + for (const key of parseDates(placeText)) dates.add(key); + } else { + applyExclusions(dates, placeText); + } + return [...dates].sort(); +} |
