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}