aboutsummaryrefslogtreecommitdiff
path: root/src/convert
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-06-14 08:45:09 +0000
committerFuwn <[email protected]>2022-06-14 08:45:09 +0000
commitb5703a59c59bfe95143cf8dc6cc54f20f67fb4fd (patch)
tree44022e3944119c39df5b9082aaac3a77841c8c10 /src/convert
parentfix(ast): list ast construction (diff)
downloadgerm-b5703a59c59bfe95143cf8dc6cc54f20f67fb4fd.tar.xz
germ-b5703a59c59bfe95143cf8dc6cc54f20f67fb4fd.zip
feat(macros): general utility macros
Diffstat (limited to 'src/convert')
-rw-r--r--src/convert/html.rs75
-rw-r--r--src/convert/markdown.rs77
2 files changed, 0 insertions, 152 deletions
diff --git a/src/convert/html.rs b/src/convert/html.rs
deleted file mode 100644
index 7b1cafe..0000000
--- a/src/convert/html.rs
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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
-
-use crate::ast::Node;
-
-pub fn convert(source: &[Node]) -> String {
- let mut html = String::new();
-
- // Since we have an AST tree of the Gemtext, it is very easy to convert from
- // this AST tree to an alternative markup format.
- for node in source {
- match node {
- Node::Text(text) => html.push_str(&format!("<p>{}</p>", text)),
- Node::Link {
- to,
- text,
- } => {
- html.push_str(&format!(
- "<a href=\"{}\">{}</a><br>",
- to,
- text.clone().unwrap_or_else(|| to.clone())
- ));
- }
- Node::Heading {
- level,
- text,
- } => {
- html.push_str(&format!(
- "<{}>{}</{0}>",
- match level {
- 1 => "h1",
- 2 => "h2",
- 3 => "h3",
- _ => "p",
- },
- text
- ));
- }
- Node::List(items) =>
- html.push_str(&format!(
- "<ul>{}</ul>",
- items
- .iter()
- .map(|i| format!("<li>{}</li>", i))
- .collect::<Vec<String>>()
- .join("\n")
- )),
- Node::Blockquote(text) =>
- html.push_str(&format!("<blockquote>{}</blockquote>", text)),
- Node::PreformattedText {
- text, ..
- } => {
- html.push_str(&format!("<pre>{}</pre>", text));
- }
- Node::Whitespace => {}
- }
- }
-
- html
-}
diff --git a/src/convert/markdown.rs b/src/convert/markdown.rs
deleted file mode 100644
index a38da9f..0000000
--- a/src/convert/markdown.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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
-
-use crate::ast::Node;
-
-pub fn convert(source: &[Node]) -> String {
- let mut markdown = String::new();
-
- // Since we have an AST tree of the Gemtext, it is very easy to convert from
- // this AST tree to an alternative markup format.
- for node in source {
- match node {
- Node::Text(text) => markdown.push_str(&format!("{}\n", text)),
- Node::Link {
- to,
- text,
- } =>
- markdown.push_str(&*text.clone().map_or_else(
- || format!("<{}>\n", to),
- |text| format!("[{}]({})\n", text, to),
- )),
- Node::Heading {
- level,
- text,
- } => {
- markdown.push_str(&format!(
- "{} {}\n",
- match level {
- 1 => "#",
- 2 => "##",
- 3 => "###",
- _ => "",
- },
- text
- ));
- }
- Node::List(items) =>
- markdown.push_str(&format!(
- "{}\n",
- items
- .iter()
- .map(|i| format!("- {}", i))
- .collect::<Vec<String>>()
- .join("\n"),
- )),
- Node::Blockquote(text) => markdown.push_str(&format!("> {}\n", text)),
- Node::PreformattedText {
- alt_text,
- text,
- } => {
- markdown.push_str(&format!(
- "```{}\n{}```\n",
- alt_text.clone().unwrap_or_else(|| "".to_string()),
- text
- ));
- }
- Node::Whitespace => markdown.push('\n'),
- }
- }
-
- markdown
-}