git-gemini-forge 0.6.4

A simple Gemini server that serves a read-only view of public repositories from a Git forge.
use super::truncate_spaces;
use crate::network::responses::*;
use urlencoding::encode as encode_uri_component;

/// Creates an internal page link in Gemtext for the given repo page.
pub fn repo_link(repo: &Repo) -> String {
	// Replace space with "_"
	let username_clean: String = truncate_spaces(&repo.owner.login);
	let username_link = encode_uri_component(&username_clean);

	let repo_link = encode_uri_component(&repo.name);
	let repo_name = truncate_spaces(&repo.name);

	let (icon, is_fork) = match &repo.parent {
		None => ("", ""),
		Some(_) => ("", " (fork)"),
	};

	// Create Gemini link
	format!("=> /{username_link}/{repo_link} {icon}{username_clean}/{repo_name}{is_fork}")
}