Implement named wikilinks
This commit is contained in:
parent
eeceee815e
commit
584593af70
25
src/main.rs
25
src/main.rs
|
@ -214,21 +214,36 @@ fn main() {
|
||||||
let link_re = Regex::new(r"\[\[(?<link>[^\[\]]+)\]\]").unwrap();
|
let link_re = Regex::new(r"\[\[(?<link>[^\[\]]+)\]\]").unwrap();
|
||||||
for page in page_map.values() {
|
for page in page_map.values() {
|
||||||
let original_content = content_map.get(&page.id).unwrap();
|
let original_content = content_map.get(&page.id).unwrap();
|
||||||
|
|
||||||
for cap in link_re.captures_iter(original_content.as_str()) {
|
for cap in link_re.captures_iter(original_content.as_str()) {
|
||||||
let name = String::from(cap.name("link").unwrap().as_str().trim().to_lowercase());
|
let link_content = cap.name("link").unwrap().as_str();
|
||||||
|
let page_id = match link_content.split_once("|") {
|
||||||
|
// It's a named wikilink
|
||||||
|
Some((fst, _snd)) => fst,
|
||||||
|
|
||||||
let incoming_pages = incoming_map.get_mut(&name).unwrap();
|
// It's a regular wikilink
|
||||||
|
None => link_content,
|
||||||
|
}.trim().to_lowercase();
|
||||||
|
|
||||||
|
let incoming_pages = incoming_map.get_mut(&page_id).unwrap();
|
||||||
|
|
||||||
incoming_pages.push(page);
|
incoming_pages.push(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
content_map.insert(page.id.clone(), link_re.replace_all(original_content.as_str(), |caps: &Captures| {
|
content_map.insert(page.id.clone(), link_re.replace_all(original_content.as_str(), |caps: &Captures| {
|
||||||
let permalink = page_map.get(&caps.name("link").unwrap().as_str().trim().to_lowercase())
|
let link_content = caps.name("link").unwrap().as_str();
|
||||||
|
let (page_id, link_text) = match link_content.split_once("|") {
|
||||||
|
// It's a named wikilink
|
||||||
|
Some((fst, snd)) => (fst.trim().to_lowercase(), snd),
|
||||||
|
|
||||||
|
// It's a regular wikilink
|
||||||
|
None => (link_content.trim().to_lowercase(), link_content)
|
||||||
|
};
|
||||||
|
|
||||||
|
let permalink = page_map.get(&page_id)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.permalink.as_str();
|
.permalink.as_str();
|
||||||
|
|
||||||
format!("<a href='{}'>{}</a>", permalink, &caps["link"])
|
format!("<a href='{}'>{}</a>", permalink, link_text)
|
||||||
}).to_string());
|
}).to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue