aboutsummaryrefslogtreecommitdiff
path: root/examples/request_blocking_to_gemtext_from_ast.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-03-25 00:59:25 +0000
committerFuwn <[email protected]>2024-03-25 00:59:25 +0000
commit40680a3648cc7d598d428d6fe1752a2be9bfd547 (patch)
treec4ea43de3543995c0b81e1a982c8671479012fd5 /examples/request_blocking_to_gemtext_from_ast.rs
parentfeat(crate): bump version (diff)
downloadgerm-40680a3648cc7d598d428d6fe1752a2be9bfd547.tar.xz
germ-40680a3648cc7d598d428d6fe1752a2be9bfd547.zip
docs(examples): comment examples
Diffstat (limited to 'examples/request_blocking_to_gemtext_from_ast.rs')
-rw-r--r--examples/request_blocking_to_gemtext_from_ast.rs37
1 files changed, 27 insertions, 10 deletions
diff --git a/examples/request_blocking_to_gemtext_from_ast.rs b/examples/request_blocking_to_gemtext_from_ast.rs
index 6abfdfb..10ff6fb 100644
--- a/examples/request_blocking_to_gemtext_from_ast.rs
+++ b/examples/request_blocking_to_gemtext_from_ast.rs
@@ -16,17 +16,34 @@
// Copyright (C) 2022-2022 Fuwn <[email protected]>
// SPDX-License-Identifier: GPL-3.0-only
+//! This example demonstrates a chain of Germ's capabilities by fetching a
+//! Gemini capsule, parsing the response content into an abstract syntax tree,
+//! and converting the abstract syntax tree back to Gemtext, identical to the
+//! Gemini response content.
+
fn main() {
- match germ::request::blocking::request(
- &url::Url::parse("gemini://fuwn.me/").unwrap(),
- ) {
- Ok(response) => println!(
- "{}",
- germ::ast::Ast::from_string(
- &*response.content().clone().unwrap_or_else(|| "".to_string())
- )
- .to_gemtext()
- ),
+ // Form a valid URL to a Gemini capsule
+ let url = url::Url::parse("gemini://fuwn.me/").unwrap();
+ // Perform a blocking request to the Gemini capsule
+ let request = germ::request::blocking::request(&url);
+
+ match request {
+ // If the request was successful:
+ Ok(response) => {
+ // Obtain the content of the Gemini response
+ let response_content =
+ &*response.content().clone().unwrap_or_else(|| "".to_string());
+ // Parse the Gemini response content into an abstract syntax tree
+ let ast = germ::ast::Ast::from_string(response_content);
+ // Convert the abstract syntax tree back to Gemtext, identical to the
+ // Gemini response content, constructed from the parsed abstract syntax
+ // tree
+ let gemtext = ast.to_gemtext();
+
+ // Print the Gemtext
+ println!("{}", gemtext)
+ }
+ // If the request was unsuccessful, do nothing
Err(_) => {}
}
}