Skip to content

Commit 2ef5cb1

Browse files
committed
feat(shorthands): add some type aliases
1 parent f14f834 commit 2ef5cb1

File tree

4 files changed

+94
-8
lines changed

4 files changed

+94
-8
lines changed

src/enclosed/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use derive_more::{Display, Error};
44
use split_char_from_str::SplitCharFromStr;
55

66
/// Parse a template string whose queries are placed between an opening bracket character and a closing bracket character,
7-
/// (such as [curly braces](crate::simple_curly_braces)).
7+
/// (such as [curly braces](crate::simple_curly_braces())).
88
#[derive(Debug, Clone, Copy)]
99
pub struct EnclosedTemplateParser<EscapeParser, QueryParser> {
1010
pub config: ParserConfig,

src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
//! # }
3737
//! ```
3838
//!
39-
//! _see more:_ [`simple_curly_braces`], [`lazy_parse`](crate::TemplateSystem::lazy_parse).
39+
//! _see more:_ [`mod@simple_curly_braces`], [`lazy_parse`](crate::TemplateSystem::lazy_parse).
4040
//!
4141
//! **Example 2:** Eagerly parse template:
4242
//!
@@ -71,7 +71,7 @@
7171
//! # }
7272
//! ```
7373
//!
74-
//! _see more:_ [`simple_curly_braces`], [`eager_parse`](crate::TemplateSystem::eager_parse).
74+
//! _see more:_ [`mod@simple_curly_braces`], [`eager_parse`](crate::TemplateSystem::eager_parse).
7575
//!
7676
#![cfg_attr(not(feature = "std"), no_std)]
7777

src/shorthands.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
mod simple_curly_braces;
1+
pub mod simple_curly_braces;
22

3-
pub use simple_curly_braces::*;
3+
pub use simple_curly_braces::{simple_curly_braces, SimpleCurlyBraces};

src/shorthands/simple_curly_braces.rs

Lines changed: 89 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
use crate::{
2-
enclosed::{self, SimpleEnclosedTemplateSystem, SimpleEscapeParser, SimpleQueryParser},
3-
IntoTemplateSystem,
2+
enclosed::{
3+
self, simple_escape, simple_query, SimpleEnclosedTemplateSystem, SimpleEscapeParser,
4+
SimpleQueryParser,
5+
},
6+
iter::{EagerParseIter, LazyParseIter, ParsedTemplate},
7+
EnclosedTemplateParser, IntoTemplateSystem, Template, TemplateApplicationError,
48
};
9+
use core::{convert::Infallible, fmt};
510

611
/// Create a simple template of string interpolation with curly braces.
712
///
@@ -44,9 +49,90 @@ use crate::{
4449
/// assert_eq!(actual, expected);
4550
/// # }
4651
/// ```
47-
pub fn simple_curly_braces<'a>() -> SimpleEnclosedTemplateSystem<'a> {
52+
pub fn simple_curly_braces<'a>() -> SimpleCurlyBraces<'a> {
4853
enclosed::Parser::curly_braces()
4954
.with_escape_parser(SimpleEscapeParser)
5055
.with_query_parser(SimpleQueryParser)
5156
.into_template_system()
5257
}
58+
59+
/// Return type of [`simple_curly_braces`].
60+
pub type SimpleCurlyBraces<'a> = SimpleEnclosedTemplateSystem<'a>;
61+
62+
/// Return type of [`SimpleCurlyBraces::lazy_parse`].
63+
pub type LazilyParsed<'a, Query> = Template<
64+
LazyParseIter<'a, EnclosedTemplateParser<SimpleEscapeParser, SimpleQueryParser>>,
65+
Query,
66+
>;
67+
68+
pub use LazilyParsed as LazilyParsedTemplate;
69+
70+
#[cfg_attr(
71+
feature = "std",
72+
doc = r"Error type of [`LazilyParsedTemplate::to_string`] and [`LazilyParsedTemplate::write_to`]."
73+
)]
74+
#[cfg_attr(
75+
not(feature = "std"),
76+
doc = r"Error type of [`LazilyParsedTemplate::write_to`]."
77+
)]
78+
pub type LazilyParsedApplicationError<QueryError> = TemplateApplicationError<
79+
enclosed::ParseError<simple_escape::ParseError, simple_query::ParseError>,
80+
QueryError,
81+
fmt::Error,
82+
>;
83+
84+
/// Value type of [`SimpleCurlyBraces::eager_parse`].
85+
pub type EagerlyParsed<SegmentContainer, Query> = ParsedTemplate<SegmentContainer, Query>;
86+
87+
/// Error type of [`SimpleCurlyBraces::eager_parse`].
88+
pub type EagerParseError =
89+
enclosed::ParseError<simple_escape::ParseError, simple_query::ParseError>;
90+
91+
/// Return type of [`EagerlyParsed::to_template`].
92+
pub type EagerlyParsedTemplate<SegmentIter, Query> = Template<EagerParseIter<SegmentIter>, Query>;
93+
94+
#[cfg_attr(
95+
feature = "std",
96+
doc = r"Error type of [`EagerlyParsedTemplate::to_string`] and [`EagerlyParsedTemplate::write_to`]."
97+
)]
98+
#[cfg_attr(
99+
not(feature = "std"),
100+
doc = r"Error type of [`EagerlyParsedTemplate::write_to`]."
101+
)]
102+
pub type EagerlyParsedApplicationError<QueryError> =
103+
TemplateApplicationError<Infallible, QueryError, fmt::Error>;
104+
105+
#[cfg(feature = "std")]
106+
#[cfg(test)]
107+
mod std_tests {
108+
use super::{
109+
simple_curly_braces, EagerParseError, EagerlyParsed, EagerlyParsedApplicationError,
110+
EagerlyParsedTemplate, LazilyParsed, LazilyParsedApplicationError, SimpleCurlyBraces,
111+
};
112+
use derive_more::{Display, Error};
113+
114+
#[test]
115+
fn using_type_aliases() {
116+
fn _type_check() {
117+
#[derive(Debug, Display, Error, Clone, Copy)]
118+
enum QueryError {}
119+
120+
let system: SimpleCurlyBraces<'static> = simple_curly_braces();
121+
122+
let lazy_parsed_template: LazilyParsed<'_, _> = system.lazy_parse("");
123+
let lazy_result: Result<String, LazilyParsedApplicationError<QueryError>> =
124+
lazy_parsed_template.to_string(|_| Ok::<_, QueryError>(""));
125+
drop(lazy_result);
126+
127+
let eager_parsed_template: Result<
128+
EagerlyParsed<Vec<crate::enclosed::Segment<&str>>, &str>,
129+
EagerParseError,
130+
> = system.eager_parse::<Vec<_>>("");
131+
let eager_parsed_template: EagerlyParsedTemplate<_, &str> =
132+
eager_parsed_template.as_ref().unwrap().to_template();
133+
let eager_result: Result<String, EagerlyParsedApplicationError<QueryError>> =
134+
eager_parsed_template.to_string(|_| Ok::<_, QueryError>(""));
135+
drop(eager_result);
136+
}
137+
}
138+
}

0 commit comments

Comments
 (0)