1#[derive(Debug, Clone, Copy)]
2pub struct ParleyDoc {
3 pub title: &'static str,
4 pub slug: &'static str,
5 pub source_path: &'static str,
6 pub uri: &'static str,
7 pub body: &'static str,
8}
9
10pub const PARLEY_DOCS: &[ParleyDoc] = &[
11 ParleyDoc {
12 title: "Keybindings",
13 slug: "keybindings",
14 source_path: "docs/keybindings.md",
15 uri: "parley://docs/keybindings",
16 body: include_str!("../docs/keybindings.md"),
17 },
18 ParleyDoc {
19 title: "Overview",
20 slug: "overview",
21 source_path: "docs/overview.md",
22 uri: "parley://docs/overview",
23 body: include_str!("../docs/overview.md"),
24 },
25 ParleyDoc {
26 title: "Quickstart",
27 slug: "quickstart",
28 source_path: "docs/quickstart.md",
29 uri: "parley://docs/quickstart",
30 body: include_str!("../docs/quickstart.md"),
31 },
32 ParleyDoc {
33 title: "Workflow",
34 slug: "review-workflow",
35 source_path: "docs/review-workflow.md",
36 uri: "parley://docs/review-workflow",
37 body: include_str!("../docs/review-workflow.md"),
38 },
39 ParleyDoc {
40 title: "MCP",
41 slug: "mcp",
42 source_path: "docs/mcp.md",
43 uri: "parley://docs/mcp",
44 body: include_str!("../docs/mcp.md"),
45 },
46];
47
48#[must_use]
49pub fn find_doc(value: &str) -> Option<&'static ParleyDoc> {
50 let normalized = value.trim();
51 PARLEY_DOCS.iter().find(|doc| {
52 doc.uri == normalized
53 || doc.slug == normalized
54 || doc.source_path == normalized
55 || doc.title.eq_ignore_ascii_case(normalized)
56 })
57}