MCPcopy Create free account
hub / github.com/chhoumann/quickadd / parseCaptureFileFilterTarget

Function parseCaptureFileFilterTarget

src/utils/captureFileFilterTarget.ts:56–90  ·  view source on GitHub ↗
(
	raw: string,
)

Source from the content-addressed store, hash-verified

54 * `property:` targets are intentionally parsed elsewhere before this helper.
55 */
56export function parseCaptureFileFilterTarget(
57 raw: string,
58): CaptureFileFilterTarget | null {
59 const trimmed = raw.trim();
60 if (!trimmed) return null;
61
62 if (trimmed.startsWith("#")) {
63 const parts = splitPipeParts(trimmed);
64 const tag = (parts.shift() ?? "")
65 .replace(/^#/, "")
66 .replace(/\.md$/i, "")
67 .trim();
68 if (!tag) return null;
69
70 const parsed = parts.length > 0
71 ? parsePipeFilters(parts.join("|"))
72 : { filter: {}, multiSelect: false };
73 return {
74 filter: {
75 ...parsed.filter,
76 tags: mergeTags(tag, parsed.filter.tags),
77 },
78 multiSelect: parsed.multiSelect,
79 };
80 }
81
82 const firstPart = splitPipeParts(trimmed)[0] ?? "";
83 const parsedFirstPart = parsePipeKeyValue(firstPart);
84 if (!parsedFirstPart || !FILTER_KEYS.has(parsedFirstPart.key)) {
85 return null;
86 }
87
88 const parsed = parsePipeFilters(trimmed);
89 return hasFileFilter(parsed.filter) ? parsed : null;
90}

Callers 4

resolveCaptureTargetFunction · 0.90
getCaptureTargetFeedbackFunction · 0.90

Calls 5

splitPipePartsFunction · 0.90
parsePipeKeyValueFunction · 0.90
parsePipeFiltersFunction · 0.85
mergeTagsFunction · 0.85
hasFileFilterFunction · 0.85

Tested by

no test coverage detected