menu::parse, not menu::Menu::parse

pull/14/head
chris west 4 years ago
parent 9ce524dd1f
commit 07011b7175

@ -1,5 +1,5 @@
use phetch::{
args, gopher,
args, gopher, menu,
ui::{Mode, UI},
};
use std::{env, process};
@ -127,14 +127,9 @@ fn print_plain(url: &str, tls: bool, tor: bool) -> i32 {
match gopher::fetch_url(url, tls, tor) {
Ok((_, response)) => match typ {
gopher::Type::Menu => {
// TODO use parse_line()
for line in response.trim_end_matches(".\r\n").lines() {
let line = line.trim_end_matches('\r');
if let Some(desc) = line.splitn(2, '\t').nth(0) {
let desc = desc.trim();
out.push_str(&desc[1..]);
out.push('\n');
}
for line in menu::parse(url, response).lines {
out.push_str(&line.text);
out.push('\n');
}
}
gopher::Type::Text => println!("{}", response.trim_end_matches(".\r\n")),

@ -117,7 +117,7 @@ impl Menu {
Menu {
tls,
tor,
..Self::parse(url, response)
..parse(url, response)
}
}
@ -758,47 +758,47 @@ impl Menu {
_ => Action::Keypress(key),
}
}
}
/// Parse gopher response into a Menu object.
pub fn parse(url: &str, raw: String) -> Menu {
let mut lines = vec![];
let mut links = vec![];
let mut longest = 0;
/// Parse gopher response into a Menu object.
pub fn parse(url: &str, raw: String) -> Menu {
let mut lines = vec![];
let mut links = vec![];
let mut longest = 0;
for line in raw.split_terminator('\n') {
// Check for Gopher's weird "end of response" message.
if line == ".\r" || line == "." {
break;
}
for line in raw.split_terminator('\n') {
// Check for Gopher's weird "end of response" message.
if line == ".\r" || line == "." {
break;
}
if let Some(mut line) = parse_line(line) {
if line.text.len() > longest {
longest = line.text.len();
}
if line.typ.is_link() {
line.link = links.len();
links.push(lines.len());
}
lines.push(line);
if let Some(mut line) = parse_line(line) {
if line.text.len() > longest {
longest = line.text.len();
}
if line.typ.is_link() {
line.link = links.len();
links.push(lines.len());
}
lines.push(line);
}
}
Menu {
url: url.into(),
lines,
links,
longest,
raw,
input: String::new(),
link: 0,
mode: Default::default(),
scroll: 0,
searching: false,
size: (0, 0),
tls: false,
tor: false,
wide: false,
}
Menu {
url: url.into(),
lines,
links,
longest,
raw,
input: String::new(),
link: 0,
mode: Default::default(),
scroll: 0,
searching: false,
size: (0, 0),
tls: false,
tor: false,
wide: false,
}
}
@ -871,7 +871,7 @@ mod tests {
macro_rules! parse {
($s:literal) => {
Menu::parse("test", $s.to_string());
parse("test", $s.to_string());
};
}

Loading…
Cancel
Save