Skip to content

Commit e547623

Browse files
committed
fix(links): unify link code
1 parent 717f770 commit e547623

File tree

2 files changed

+43
-37
lines changed

2 files changed

+43
-37
lines changed

Diff for: crates/rari-doc/src/helpers/subpages.rs

+30-28
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ use std::fmt::Write;
44
use std::path::PathBuf;
55

66
use memoize::memoize;
7-
use rari_types::fm_types::{FeatureStatus, PageType};
7+
use rari_types::fm_types::PageType;
88
use rari_types::globals::{cache_content, deny_warnings};
99
use rari_types::locale::Locale;
1010

1111
use super::l10n::l10n_json_data;
1212
use super::titles::api_page_title;
1313
use crate::error::DocError;
14+
use crate::html::links::{render_internal_link, LinkModifier};
1415
use crate::pages::page::{Page, PageLike, PageReader};
1516
use crate::redirects::resolve_redirect;
16-
use crate::templ::templs::badges::{write_deprecated, write_experimental, write_non_standard};
1717
use crate::utils::COLLATOR;
1818
use crate::walker::walk_builder;
1919

@@ -71,41 +71,43 @@ pub fn write_li_with_badges(
7171
} else {
7272
page
7373
};
74-
out.extend([
75-
"<li>",
76-
r#"<a href=""#,
74+
out.push_str("<li>");
75+
render_internal_link(
76+
out,
7777
locale_page.url(),
78-
r#"">"#,
79-
if code { "<code>" } else { "" },
78+
None,
8079
&html_escape::encode_safe(locale_page.short_title().unwrap_or(locale_page.title())),
81-
if code { "</code>" } else { "" },
82-
"</a>",
83-
]);
84-
add_inline_badges(out, page, locale)?;
80+
None,
81+
&LinkModifier {
82+
badges: page.status(),
83+
badge_locale: locale,
84+
code,
85+
only_en_us: locale_page.locale() != locale,
86+
},
87+
)?;
8588
if closed {
8689
write!(out, "</li>")?;
8790
}
8891
Ok(())
8992
}
9093

91-
pub fn add_inline_badges(out: &mut String, page: &Page, locale: Locale) -> Result<(), DocError> {
92-
if page.status().contains(&FeatureStatus::Experimental) {
93-
write_experimental(out, locale)?;
94-
}
95-
if page.status().contains(&FeatureStatus::NonStandard) {
96-
write_non_standard(out, locale)?;
97-
}
98-
if page.status().contains(&FeatureStatus::Deprecated) {
99-
write_deprecated(out, locale)?;
100-
}
101-
Ok(())
102-
}
103-
10494
pub fn write_parent_li(out: &mut String, page: &Page, locale: Locale) -> Result<(), DocError> {
105-
let title = l10n_json_data("Template", "overview", locale)?;
106-
write!(out, "<li><a href=\"{}\">{}</a>", page.url(), title)?;
107-
add_inline_badges(out, page, locale)?;
108-
write!(out, "</li>")?;
95+
let content = l10n_json_data("Template", "overview", locale)?;
96+
out.push_str("<li>");
97+
render_internal_link(
98+
out,
99+
page.url(),
100+
None,
101+
content,
102+
None,
103+
&LinkModifier {
104+
badges: page.status(),
105+
badge_locale: locale,
106+
code: false,
107+
only_en_us: page.locale() != locale,
108+
},
109+
)?;
110+
out.push_str("</li>");
109111
Ok(())
110112
}
111113

Diff for: crates/rari-doc/src/templ/templs/list_subpages_for_sidebar.rs

+13-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ use rari_templ_func::rari_f;
22
use rari_types::AnyArg;
33

44
use crate::error::DocError;
5-
use crate::helpers::subpages::{add_inline_badges, get_sub_pages, SubPagesSorter};
5+
use crate::helpers::subpages::{get_sub_pages, SubPagesSorter};
6+
use crate::html::links::{render_internal_link, LinkModifier};
67
use crate::pages::page::{Page, PageLike};
78
use crate::utils::{trim_after, trim_fefore};
89

@@ -37,16 +38,19 @@ pub fn list_subpages_for_sidebar(
3738
let title = locale_page.short_title().unwrap_or(locale_page.title());
3839
let title = trim_fefore(title, title_only_after.as_deref());
3940
let title = trim_after(title, title_only_before.as_deref());
40-
out.extend([
41-
r#"<li><a href=""#,
41+
render_internal_link(
42+
&mut out,
4243
locale_page.url(),
43-
r#"">"#,
44-
if code { "<code>" } else { "" },
44+
None,
4545
&html_escape::encode_safe(title),
46-
if code { "</code>" } else { "" },
47-
r#"</a>"#,
48-
]);
49-
add_inline_badges(&mut out, &page, env.locale)?;
46+
None,
47+
&LinkModifier {
48+
badges: page.status(),
49+
badge_locale: env.locale,
50+
code,
51+
only_en_us: locale_page.locale() != env.locale,
52+
},
53+
)?;
5054
out.push_str("</li>");
5155
}
5256
out.push_str("</ol>");

0 commit comments

Comments
 (0)