prosesmasher_adapters_outbound_fs/
lib.rs1mod config_dto;
4pub mod config_loader;
5pub mod file_reader;
6
7pub use config_loader::FsConfigLoader;
8pub use file_reader::FsFileReader;
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub struct PresetInfo {
12 pub name: &'static str,
13 pub description: &'static str,
14}
15
16const PRESETS: &[PresetInfo] = &[
17 PresetInfo {
18 name: "general-en",
19 description: "Baseline quality defaults with no document-shape policy.",
20 },
21 PresetInfo {
22 name: "article-en",
23 description: "Standard article structure with heading policy.",
24 },
25 PresetInfo {
26 name: "substack-en",
27 description: "Longer, looser newsletter/article structure.",
28 },
29 PresetInfo {
30 name: "email-en",
31 description: "Short prose body with no heading policy.",
32 },
33 PresetInfo {
34 name: "tweet-en",
35 description: "Very short prose body with no heading policy.",
36 },
37];
38
39#[must_use]
40pub const fn shipped_presets() -> &'static [PresetInfo] {
41 PRESETS
42}
43
44#[must_use]
45pub fn preset_contents(name: &str) -> Option<&'static str> {
46 match name {
47 "general-en" => Some(include_str!("../presets/general-en.json")),
48 "article-en" => Some(include_str!("../presets/article-en.json")),
49 "substack-en" => Some(include_str!("../presets/substack-en.json")),
50 "email-en" => Some(include_str!("../presets/email-en.json")),
51 "tweet-en" => Some(include_str!("../presets/tweet-en.json")),
52 _ => None,
53 }
54}
55
56#[must_use]
57pub const fn full_config_contents() -> &'static str {
58 include_str!("../presets/full-config-en.json")
59}