MCPcopy Create free account
hub / github.com/ZenNotes/zennotes / formatDateNotePattern

Function formatDateNotePattern

packages/app-core/src/lib/vault-layout.ts:271–312  ·  view source on GitHub ↗
(
  date: Date,
  pattern: string,
  locale: string,
  parts: { year?: number; week?: number } = {}
)

Source from the content-addressed store, hash-verified

269}
270
271function formatDateNotePattern(
272 date: Date,
273 pattern: string,
274 locale: string,
275 parts: { year?: number; week?: number } = {}
276): string {
277 const year = parts.year ?? date.getFullYear()
278 const week = parts.week ?? getISOWeek(date)
279 const month = date.getMonth() + 1
280 const day = date.getDate()
281 return parseDateNotePattern(pattern)
282 .map((part) => {
283 if (part.kind === 'literal') return part.value
284 switch (part.value) {
285 case 'yyyy':
286 return String(year)
287 case 'yy':
288 return pad2(year % 100)
289 case 'MMMM':
290 return localeDatePart(date, locale, { month: 'long' })
291 case 'MMM':
292 return localeDatePart(date, locale, { month: 'short' })
293 case 'MM':
294 return pad2(month)
295 case 'M':
296 return String(month)
297 case 'dd':
298 return pad2(day)
299 case 'd':
300 return String(day)
301 case 'EEEE':
302 return localeDatePart(date, locale, { weekday: 'long' })
303 case 'EEE':
304 return localeDatePart(date, locale, { weekday: 'short' })
305 case 'ww':
306 return pad2(week)
307 case 'w':
308 return String(week)
309 }
310 })
311 .join('')
312}
313
314interface DateNotePatternMatch {
315 year?: number

Callers 3

formatDirectoryPatternFunction · 0.85

Calls 4

getISOWeekFunction · 0.90
parseDateNotePatternFunction · 0.85
localeDatePartFunction · 0.85
pad2Function · 0.70

Tested by

no test coverage detected