2022-06-08 23:24:19 +03:00
|
|
|
import { AnyNode, Attrs, E } from "ren/node.ts";
|
|
|
|
|
|
|
|
export function RepoLink(name: string, repo: string): AnyNode {
|
|
|
|
const gitBase = new URL("https://git.pleshevski.ru");
|
|
|
|
|
2022-06-22 00:35:55 +03:00
|
|
|
return Link(name, { href: new URL(repo, gitBase).toString() });
|
2022-06-08 23:24:19 +03:00
|
|
|
}
|
|
|
|
|
2022-06-22 00:35:55 +03:00
|
|
|
export function Link(
|
|
|
|
text: string,
|
|
|
|
sourceAttrs: Attrs | Attrs[],
|
|
|
|
): AnyNode {
|
|
|
|
const attrs = Array.isArray(sourceAttrs) ? sourceAttrs : [sourceAttrs];
|
|
|
|
const isExternal = attrs.some((attr) =>
|
|
|
|
typeof attr.href === "string" && attr.href?.startsWith("http")
|
|
|
|
);
|
|
|
|
|
|
|
|
if (isExternal) {
|
|
|
|
attrs.push({
|
|
|
|
target: "_blank",
|
|
|
|
rel: "external nofollow noopener noreferrer",
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-06-08 23:24:19 +03:00
|
|
|
return E("a", attrs, text);
|
|
|
|
}
|