aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-04-17 06:57:19 +0000
committerFuwn <[email protected]>2023-04-17 06:57:19 +0000
commit3854c711b097b39e858d8ceabb4099a659f875a1 (patch)
treeeaeb6edb104306f17d2bbba3895ee9b93ec39036 /examples
parentchore(README): Update examples directory path (diff)
downloadgerm-3854c711b097b39e858d8ceabb4099a659f875a1.tar.xz
germ-3854c711b097b39e858d8ceabb4099a659f875a1.zip
refactor: remove seldom used procedural macros
Diffstat (limited to 'examples')
-rw-r--r--examples/ast.rs52
-rw-r--r--examples/ast_to_gemtext.rs53
-rw-r--r--examples/async_request.rs29
-rw-r--r--examples/convert.html6
-rw-r--r--examples/convert.md28
-rw-r--r--examples/html.rs54
-rw-r--r--examples/markdown.rs57
-rw-r--r--examples/meta.rs24
-rw-r--r--examples/request.rs24
-rw-r--r--examples/request_to_gemtext_from_ast.rs31
10 files changed, 358 insertions, 0 deletions
diff --git a/examples/ast.rs b/examples/ast.rs
new file mode 100644
index 0000000..884bd91
--- /dev/null
+++ b/examples/ast.rs
@@ -0,0 +1,52 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+const EXAMPLE_GEMTEXT: &str = r#"```This is alt-text
+Here goes the pre-formatted text.
+
+This continues the pre-formatted text on a new line after a blank line.
+```
+
+# This is a heading
+
+This is some text.
+
+This is more text after a blank line.
+
+* This is a single list item.
+* This is the next list item.
+
+* This is a new list.
+* This is the next item on the new list.
+
+## This is a sub-heading
+
+> This is a blockquote.
+
+### This is a sub-sub-heading.
+
+=> gemini://gem.rest/ This is a link to GemRest
+=> /somewhere
+
+That was a link without text."#;
+
+fn main() {
+ for node in germ::ast::Ast::from_string(EXAMPLE_GEMTEXT).inner() {
+ println!("{:?}", node);
+ }
+}
diff --git a/examples/ast_to_gemtext.rs b/examples/ast_to_gemtext.rs
new file mode 100644
index 0000000..5ceef21
--- /dev/null
+++ b/examples/ast_to_gemtext.rs
@@ -0,0 +1,53 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+const EXAMPLE_GEMTEXT: &str = r#"```This is alt-text
+Here goes the pre-formatted text.
+
+This continues the pre-formatted text on a new line after a blank line.
+```
+
+# This is a heading
+
+This is some text.
+
+This is more text after a blank line.
+
+* This is a single list item.
+* This is the next list item.
+
+* This is a new list.
+* This is the next item on the new list.
+
+## This is a sub-heading
+
+> This is a blockquote.
+
+### This is a sub-sub-heading.
+
+=> gemini://gem.rest/ This is a link to GemRest
+=> /somewhere
+
+That was a link without text."#;
+
+fn main() {
+ println!(
+ "{}",
+ germ::ast::Ast::from_string(EXAMPLE_GEMTEXT).to_gemtext()
+ );
+}
diff --git a/examples/async_request.rs b/examples/async_request.rs
new file mode 100644
index 0000000..604d6d4
--- /dev/null
+++ b/examples/async_request.rs
@@ -0,0 +1,29 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+#[tokio::main]
+async fn main() {
+ match germ::request::sync::request(
+ &url::Url::parse("gemini://fuwn.me").unwrap(),
+ )
+ .await
+ {
+ Ok(response) => println!("{:?}", response),
+ Err(_) => {}
+ }
+}
diff --git a/examples/convert.html b/examples/convert.html
new file mode 100644
index 0000000..cdfde66
--- /dev/null
+++ b/examples/convert.html
@@ -0,0 +1,6 @@
+<pre>Here goes the pre-formatted text.
+
+This continues the pre-formatted text on a new line after a blank line.
+</pre><h1>This is a heading</h1><p>This is some text.</p><p>This is more text after a blank line.</p><ul><li>This is a single list item.</li>
+<li>This is the next list item.</li></ul><ul><li>This is a new list.</li>
+<li>This is the next item on the new list.</li></ul><h2>This is a sub-heading</h2><blockquote>This is a blockquote.</blockquote><h3>This is a sub-sub-heading.</h3><a href="gemini://gem.rest/">This is a link to GemRest</a><br><a href="/somewhere">/somewhere</a><br><p>That was a link without text.</p> \ No newline at end of file
diff --git a/examples/convert.md b/examples/convert.md
new file mode 100644
index 0000000..ea553ee
--- /dev/null
+++ b/examples/convert.md
@@ -0,0 +1,28 @@
+```This is alt-text
+Here goes the pre-formatted text.
+
+This continues the pre-formatted text on a new line after a blank line.
+```
+
+# This is a heading
+
+This is some text.
+
+This is more text after a blank line.
+
+- This is a single list item.
+- This is the next list item.
+
+- This is a new list.
+- This is the next item on the new list.
+
+## This is a sub-heading
+
+> This is a blockquote.
+
+### This is a sub-sub-heading.
+
+[This is a link to GemRest](gemini://gem.rest/)
+</somewhere>
+
+That was a link without text.
diff --git a/examples/html.rs b/examples/html.rs
new file mode 100644
index 0000000..541c01e
--- /dev/null
+++ b/examples/html.rs
@@ -0,0 +1,54 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+const EXAMPLE_GEMTEXT: &str = r#"```This is alt-text
+Here goes the pre-formatted text.
+
+This continues the pre-formatted text on a new line after a blank line.
+```
+
+# This is a heading
+
+This is some text.
+
+This is more text after a blank line.
+
+* This is a single list item.
+* This is the next list item.
+
+* This is a new list.
+* This is the next item on the new list.
+
+## This is a sub-heading
+
+> This is a blockquote.
+
+### This is a sub-sub-heading.
+
+=> gemini://gem.rest/ This is a link to GemRest
+=> /somewhere
+
+That was a link without text."#;
+
+fn main() {
+ std::fs::write(
+ "examples/convert.html",
+ germ::convert::from_string(EXAMPLE_GEMTEXT, &germ::convert::Target::HTML),
+ )
+ .expect("could not write to file");
+}
diff --git a/examples/markdown.rs b/examples/markdown.rs
new file mode 100644
index 0000000..c14cdc5
--- /dev/null
+++ b/examples/markdown.rs
@@ -0,0 +1,57 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+const EXAMPLE_GEMTEXT: &str = r#"```This is alt-text
+Here goes the pre-formatted text.
+
+This continues the pre-formatted text on a new line after a blank line.
+```
+
+# This is a heading
+
+This is some text.
+
+This is more text after a blank line.
+
+* This is a single list item.
+* This is the next list item.
+
+* This is a new list.
+* This is the next item on the new list.
+
+## This is a sub-heading
+
+> This is a blockquote.
+
+### This is a sub-sub-heading.
+
+=> gemini://gem.rest/ This is a link to GemRest
+=> /somewhere
+
+That was a link without text."#;
+
+fn main() {
+ std::fs::write(
+ "examples/convert.md",
+ germ::convert::from_string(
+ EXAMPLE_GEMTEXT,
+ &germ::convert::Target::Markdown,
+ ),
+ )
+ .expect("could not write to file");
+}
diff --git a/examples/meta.rs b/examples/meta.rs
new file mode 100644
index 0000000..a9f4077
--- /dev/null
+++ b/examples/meta.rs
@@ -0,0 +1,24 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+fn main() {
+ println!(
+ "{:?}",
+ germ::meta::Meta::from_string("text/gemini; hi=2; hi2=string=2")
+ )
+}
diff --git a/examples/request.rs b/examples/request.rs
new file mode 100644
index 0000000..e33710f
--- /dev/null
+++ b/examples/request.rs
@@ -0,0 +1,24 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+fn main() {
+ match germ::request::request(&url::Url::parse("gemini://fuwn.me").unwrap()) {
+ Ok(response) => println!("{:?}", response),
+ Err(_) => {}
+ }
+}
diff --git a/examples/request_to_gemtext_from_ast.rs b/examples/request_to_gemtext_from_ast.rs
new file mode 100644
index 0000000..174abcf
--- /dev/null
+++ b/examples/request_to_gemtext_from_ast.rs
@@ -0,0 +1,31 @@
+// This file is part of Germ <https://github.com/gemrest/germ>.
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 3.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+//
+// Copyright (C) 2022-2022 Fuwn <[email protected]>
+// SPDX-License-Identifier: GPL-3.0-only
+
+fn main() {
+ match germ::request::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()
+ ),
+ Err(_) => {}
+ }
+}