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

Function parseDateNotePattern

packages/app-core/src/lib/vault-layout.ts:224–265  ·  view source on GitHub ↗
(pattern: string)

Source from the content-addressed store, hash-verified

222 | { kind: 'token'; value: DateNotePatternToken }
223
224function parseDateNotePattern(pattern: string): DateNotePatternPart[] {
225 const parts: DateNotePatternPart[] = []
226 let literal = ''
227 let quoted = false
228
229 const flushLiteral = (): void => {
230 if (!literal) return
231 parts.push({ kind: 'literal', value: literal })
232 literal = ''
233 }
234
235 for (let i = 0; i < pattern.length; ) {
236 const ch = pattern[i]
237 if (ch === "'") {
238 if (pattern[i + 1] === "'") {
239 literal += "'"
240 i += 2
241 continue
242 }
243 quoted = !quoted
244 i += 1
245 continue
246 }
247
248 if (!quoted) {
249 const token = DATE_NOTE_PATTERN_TOKENS.find((candidate) =>
250 pattern.startsWith(candidate, i)
251 )
252 if (token) {
253 flushLiteral()
254 parts.push({ kind: 'token', value: token })
255 i += token.length
256 continue
257 }
258 }
259
260 literal += ch
261 i += 1
262 }
263 flushLiteral()
264 return parts
265}
266
267function pad2(value: number): string {
268 return String(value).padStart(2, '0')

Callers 4

formatDateNotePatternFunction · 0.85
matchDateNotePatternFunction · 0.85

Calls 1

flushLiteralFunction · 0.85

Tested by

no test coverage detected