ListItem(String),
}
-/// Parses gemtext source code into a vector of GeminiLine elements.
+/// Parses gemtext source code into a vector of `GeminiLine` elements.
///
/// # Arguments
/// * `source` - A string slice that contains the gemtext
match line {
s if s.starts_with("###") => GeminiLine::Heading(3, s[3..].to_string()),
s if s.starts_with("##") => GeminiLine::Heading(2, s[2..].to_string()),
- s if s.starts_with("#") => GeminiLine::Heading(1, s[1..].to_string()),
+ s if s.starts_with('#') => GeminiLine::Heading(1, s[1..].to_string()),
s if s.starts_with("=>") => {
let content = s[2..].trim();
match content.split_once(char::is_whitespace) {
}
}
s if s.starts_with("* ") => GeminiLine::ListItem(s[2..].to_string()),
- s if s.starts_with(">") => GeminiLine::Quote(s[1..].to_string()),
+ s if s.starts_with('>') => GeminiLine::Quote(s[1..].to_string()),
s if s.starts_with("```") => GeminiLine::PreformattedToggle(true, s[3..].to_string()),
_ => GeminiLine::Text(line.to_string(), false),
}
parse_line("# Heading"),
GeminiLine::Heading(1, " Heading".to_string())
);
- assert_eq!(parse_line("###"), GeminiLine::Heading(3, "".to_string()));
+ assert_eq!(parse_line("###"), GeminiLine::Heading(3, String::new()));
assert_eq!(
parse_line("#####"),
GeminiLine::Heading(3, "##".to_string())
);
assert_eq!(
parse_line("=> /local/path"),
- GeminiLine::Link("/local/path".to_string(), "".to_string())
+ GeminiLine::Link("/local/path".to_string(), String::new())
);
assert_eq!(
parse_line("=>"),
- GeminiLine::Link("".to_string(), "".to_string())
+ GeminiLine::Link(String::new(), String::new())
);
assert_eq!(
parse_line("=> "),
- GeminiLine::Link("".to_string(), "".to_string())
+ GeminiLine::Link(String::new(), String::new())
);
assert_eq!(
parse_line("=> multiple spaces in text"),
GeminiLine::ListItem("List item".to_string())
);
- assert_eq!(parse_line("* "), GeminiLine::ListItem("".to_string()));
+ assert_eq!(parse_line("* "), GeminiLine::ListItem(String::new()));
assert_eq!(parse_line("*"), GeminiLine::Text("*".to_string(), false));
assert_eq!(
parse_line("*WithText"),
GeminiLine::Quote("Quote text".to_string())
);
- assert_eq!(parse_line(">"), GeminiLine::Quote("".to_string()));
+ assert_eq!(parse_line(">"), GeminiLine::Quote(String::new()));
assert_eq!(parse_line("> "), GeminiLine::Quote(" ".to_string()));
assert_eq!(
parse_line(">>Nested"),
assert_eq!(
parse_line("```"),
- GeminiLine::PreformattedToggle(true, "".to_string())
+ GeminiLine::PreformattedToggle(true, String::new())
);
assert_eq!(
parse_line("``` "),
assert_eq!(
parse_preformatted_line("```alt-text"),
- GeminiLine::PreformattedToggle(false, "".to_string())
+ GeminiLine::PreformattedToggle(false, String::new())
);
assert_eq!(
parse_preformatted_line("```"),
- GeminiLine::PreformattedToggle(false, "".to_string())
+ GeminiLine::PreformattedToggle(false, String::new())
);
}
);
// Edge cases
- assert_eq!(parse_line(""), GeminiLine::Text("".to_string(), false));
+ assert_eq!(parse_line(""), GeminiLine::Text(String::new(), false));
assert_eq!(parse_line(" "), GeminiLine::Text(" ".to_string(), false));
assert_eq!(parse_line(" "), GeminiLine::Text(" ".to_string(), false));
}
GeminiLine::Text("=> https://example.com Link text".to_string(), true),
GeminiLine::Text("* List item".to_string(), true),
GeminiLine::Text(">Quote".to_string(), true),
- GeminiLine::PreformattedToggle(false, "".to_string()),
+ GeminiLine::PreformattedToggle(false, String::new()),
]
);
}