anki/rslib/src/links.rs
2023-09-28 10:00:47 +10:00

55 lines
2.4 KiB
Rust

// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
pub use anki_proto::links::help_page_link_request::HelpPage;
use crate::collection::Collection;
use crate::error;
static HELP_SITE: &str = "https://docs.ankiweb.net/";
pub fn help_page_to_link(page: HelpPage) -> String {
format!("{}{}", HELP_SITE, help_page_link_suffix(page))
}
pub fn help_page_link_suffix(page: HelpPage) -> &'static str {
match page {
HelpPage::NoteType => "getting-started.html#note-types",
HelpPage::Browsing => "browsing.html",
HelpPage::BrowsingFindAndReplace => "browsing.html#find-and-replace",
HelpPage::BrowsingNotesMenu => "browsing.html#notes",
HelpPage::KeyboardShortcuts => "studying.html#keyboard-shortcuts",
HelpPage::Editing => "editing.html",
HelpPage::AddingCardAndNote => "editing.html#adding-cards-and-notes",
HelpPage::AddingANoteType => "editing.html#adding-a-note-type",
HelpPage::Latex => "math.html#latex",
HelpPage::Preferences => "preferences.html",
HelpPage::Index => "",
HelpPage::Templates => "templates/intro.html",
HelpPage::FilteredDeck => "filtered-decks.html",
HelpPage::Importing => "importing/intro.html",
HelpPage::CustomizingFields => "editing.html#customizing-fields",
HelpPage::DeckOptions => "deck-options.html",
HelpPage::EditingFeatures => "editing.html#editing-features",
HelpPage::FullScreenIssue => "platform/windows/display-issues.html#full-screen",
HelpPage::CardTypeTemplateError => "templates/errors.html#template-syntax-error",
HelpPage::CardTypeDuplicate => "templates/errors.html#identical-front-sides",
HelpPage::CardTypeNoFrontField => {
"templates/errors.html#no-field-replacement-on-front-side"
}
HelpPage::CardTypeMissingCloze => "templates/errors.html#no-cloze-filter-on-cloze-notetype",
HelpPage::CardTypeExtraneousCloze => {
"templates/errors.html#cloze-filter-outside-cloze-notetype"
}
}
}
impl crate::services::LinksService for Collection {
fn help_page_link(
&mut self,
input: anki_proto::links::HelpPageLinkRequest,
) -> error::Result<anki_proto::generic::String> {
Ok(help_page_to_link(HelpPage::try_from(input.page).unwrap_or(HelpPage::Index)).into())
}
}