A file-based task manager

ADD: rawlink format

It allows you to have a bare link wrapping in < > to help the parser
identify them and allow you to "follow" them.

+14
+14
src/task.rs
··· 14 14 Linktext(usize), 15 15 // Started by `](`, terminated by `) `, must immedately follow a Linktext 16 16 Link(usize), 17 + RawLink(usize), 17 18 // Started by ` [[`, terminated by `]] ` 18 19 InternalLink(usize), 19 20 // Started by ` *`, terminated by `* ` ··· 114 115 links.push(ParsedLink::External(url)); 115 116 out.replace_range(linktextpos..end, &linktext); 116 117 } 118 + } 119 + ('>', ' ' | '\n' | '\r' | '.' | '!' | '?', Some(RawLink(hl))) => { 120 + state.pop(); 121 + let link = out.get(hl + 1..out.len() - 2)?; 122 + if let Ok(url) = Url::parse(link) { 123 + let linktext = 124 + format!("{}{}", link.blue(), super_num(links.len() + 1).purple()); 125 + links.push(ParsedLink::External(url)); 126 + out.replace_range(hl..end, &linktext); 127 + } 128 + } 129 + (' ' | '\r' | '\n', '<', _) => { 130 + state.push(RawLink(end)); 117 131 } 118 132 ('=', ' ' | '\n' | '\r' | '.' | '!' | '?', Some(Highlight(hl))) => { 119 133 state.pop();