hypershell_components/
presets.rs

1#[cgp::re_export_imports]
2mod preset {
3    use cgp::core::component::UseDelegate;
4    use cgp::extra::handler::{HandlerComponent, Promote};
5    use cgp::prelude::*;
6
7    use crate::components::{StringArgExtractorComponent, UrlArgExtractorComponent};
8    use crate::dsl::{BytesToString, ConvertTo, FieldArg, JoinArgs, Pipe, StaticArg, Use};
9    use crate::providers::{
10        DecodeUtf8Bytes, ExtractFieldArg, ExtractStaticArg, ExtractStringUrlArg, HandleConvert,
11        HandlePipe, HandleUseProvider, JoinStringArgs,
12    };
13
14    cgp_preset! {
15        HypershellBasePreset {
16            HandlerComponent:
17                BaseHandlerPreset::Provider,
18            StringArgExtractorComponent:
19                BaseStringArgExtractorPreset::Provider,
20            UrlArgExtractorComponent:
21                UrlArgExtractorPreset::Provider,
22        }
23    }
24
25    cgp_preset! {
26        #[wrap_provider(UseDelegate)]
27        BaseStringArgExtractorPreset {
28            <Arg> StaticArg<Arg>:
29                ExtractStaticArg,
30            <Tag> FieldArg<Tag>:
31                ExtractFieldArg,
32            <Args> JoinArgs<Args>:
33                JoinStringArgs,
34        }
35    }
36
37    cgp_preset! {
38        #[wrap_provider(UseDelegate)]
39        UrlArgExtractorPreset {
40            [
41                <Arg> StaticArg<Arg>,
42                <Args> JoinArgs<Args>,
43                <Tag> FieldArg<Tag>,
44            ]: ExtractStringUrlArg,
45        }
46    }
47
48    cgp_preset! {
49        #[wrap_provider(UseDelegate)]
50        BaseHandlerPreset {
51            BytesToString:
52                DecodeUtf8Bytes,
53            <T> ConvertTo<T>:
54                Promote<HandleConvert>,
55            <Handlers> Pipe<Handlers>:
56                HandlePipe,
57            <Provider, Code> Use<Provider, Code>:
58                HandleUseProvider,
59        }
60    }
61}