Skip to main content

aiagentskills_site_kit/
lib.rs

1pub const BASE_URL: &str = "https://aiagentskills.net";
2
3fn clean_slug(slug: &str) -> String {
4    slug.trim().trim_matches('/').to_string()
5}
6
7pub fn url_for(path: &str) -> String {
8    let clean = clean_slug(path);
9    if clean.is_empty() { BASE_URL.to_string() } else { format!("{}/{}/", BASE_URL, clean) }
10}
11
12pub fn home_url() -> &'static str { BASE_URL }
13pub fn skills_url() -> String { url_for("skills") }
14pub fn submit_url() -> String { url_for("submit") }
15pub fn blog_url() -> String { url_for("blog") }
16pub fn category_url(slug: &str) -> String { url_for(&format!("category/{}", clean_slug(slug))) }
17pub fn skill_url(slug: &str) -> String { url_for(&format!("skill/{}", clean_slug(slug))) }
18pub fn search_url(query: &str) -> String {
19    let value = query.trim().replace(' ', "%20");
20    if value.is_empty() { skills_url() } else { format!("{}/skills/?q={}", BASE_URL, value) }
21}
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26    #[test]
27    fn builds_links() {
28        assert_eq!(home_url(), "https://aiagentskills.net");
29        assert_eq!(skills_url(), "https://aiagentskills.net/skills/");
30        assert_eq!(submit_url(), "https://aiagentskills.net/submit/");
31        assert_eq!(blog_url(), "https://aiagentskills.net/blog/");
32        assert_eq!(category_url("agent-workflows"), "https://aiagentskills.net/category/agent-workflows/");
33        assert_eq!(skill_url("seo-article-writer"), "https://aiagentskills.net/skill/seo-article-writer/");
34        assert_eq!(search_url("codex skills"), "https://aiagentskills.net/skills/?q=codex%20skills");
35    }
36}