asimov_readwise_module/
lib.rs

1// This is free and unencumbered software released into the public domain.
2
3#![forbid(unsafe_code)]
4
5pub mod api;
6pub mod jq;
7pub mod output;
8pub mod providers;
9
10pub use providers::Provider;
11
12pub fn find_provider_for(url: impl AsRef<str>) -> Option<&'static Provider> {
13    let url = url.as_ref();
14    // Iterate in reverse to ensure that more specific URL patterns are matched first.
15    // This relies on URL_PREFIX_TO_PROVIDER being ordered from least to most specific.
16    for (url_pattern, provider) in providers::readwise::URL_PREFIX_TO_PROVIDER.iter().rev() {
17        if url.starts_with(url_pattern) {
18            return Some(provider);
19        }
20    }
21    None
22}