[source:refactor] DRY up github link selectors

This commit is contained in:
Maddison Hellstrom 2019-11-09 05:36:16 -08:00
parent 78d307101c
commit f8369a8405
1 changed files with 71 additions and 85 deletions

View File

@ -189,101 +189,87 @@ actions.gh.star = ({ toggle = false } = {}) => async () => {
Front.showBanner(`${star} Repository ${repo} ${verb} ${statusMsg}!`) Front.showBanner(`${star} Repository ${repo} ${verb} ${statusMsg}!`)
} }
actions.gh.openRepo = () => { actions.gh.isRepo = (href) => {
const elements = [...document.querySelectorAll("a[href]")] const u = new URL(href)
.filter((a) => { const [user, repo, ...rest] = u.pathname.split("/").filter((s) => s !== "")
const u = new URL(a.href) return (
const [user, repo, ...rest] = u.pathname.split("/").filter((s) => s !== "") u.origin === util.getCurrentLocation("origin")
return ( && typeof user === "string"
u.origin === util.getCurrentLocation("origin") && user.length > 0
&& typeof user === "string" && typeof repo === "string"
&& user.length > 0 && repo.length > 0
&& typeof repo === "string" && rest.length === 0
&& repo.length > 0 && /^([a-zA-Z0-9]+-?)+$/.test(user)
&& rest.length === 0 && !ghReservedNames.check(user)
&& /^([a-zA-Z0-9]+-?)+$/.test(user) )
&& !ghReservedNames.check(user)
)
})
Hints.create(elements, Hints.dispatchMouseClick)
} }
actions.gh.openUser = () => { actions.gh.isUser = (href) => {
const elements = [...document.querySelectorAll("a[href]")] const u = new URL(href)
.filter((a) => { const [user, ...rest] = u.pathname.split("/").filter((s) => s !== "")
const u = new URL(a.href) return (
const [user, ...rest] = u.pathname.split("/").filter((s) => s !== "") u.origin === util.getCurrentLocation("origin")
return ( && typeof user === "string"
u.origin === util.getCurrentLocation("origin") && user.length > 0
&& typeof user === "string" && rest.length === 0
&& user.length > 0 && /^([a-zA-Z0-9]+-?)+$/.test(user)
&& rest.length === 0 && !ghReservedNames.check(user)
&& /^([a-zA-Z0-9]+-?)+$/.test(user) )
&& !ghReservedNames.check(user)
)
})
Hints.create(elements, Hints.dispatchMouseClick)
} }
actions.gh.openFile = () => { actions.gh.isFile = (href) => {
const elements = [...document.querySelectorAll("a[href]")] const u = new URL(href)
.filter((a) => { const [user, repo, maybeBlob, ...rest] = u.pathname.split("/").filter((s) => s !== "")
const u = new URL(a.href) return (
const [user, repo, maybeBlob, ...rest] = u.pathname.split("/").filter((s) => s !== "") u.origin === util.getCurrentLocation("origin")
return ( && typeof user === "string"
u.origin === util.getCurrentLocation("origin") && user.length > 0
&& typeof user === "string" && typeof repo === "string"
&& user.length > 0 && repo.length > 0
&& typeof repo === "string" && typeof maybeBlob === "string"
&& repo.length > 0 && (maybeBlob === "blob" || maybeBlob === "tree")
&& typeof maybeBlob === "string" && rest.length !== 0
&& (maybeBlob === "blob" || maybeBlob === "tree") && /^([a-zA-Z0-9]+-?)+$/.test(user)
&& rest.length !== 0 && !ghReservedNames.check(user)
&& /^([a-zA-Z0-9]+-?)+$/.test(user) )
&& !ghReservedNames.check(user)
)
})
Hints.create(elements, Hints.dispatchMouseClick)
} }
actions.gh.openIssue = () => { actions.gh.isIssue = (href) => {
const elements = [...document.querySelectorAll("a[href]")] const u = new URL(href)
.filter((a) => { const [user, repo, maybeIssues] = u.pathname.split("/").filter((s) => s !== "")
const u = new URL(a.href) return (
const [user, repo, maybeIssues] = u.pathname.split("/").filter((s) => s !== "") u.origin === util.getCurrentLocation("origin")
return ( && typeof user === "string"
u.origin === util.getCurrentLocation("origin") && user.length > 0
&& typeof user === "string" && typeof repo === "string"
&& user.length > 0 && repo.length > 0
&& typeof repo === "string" && maybeIssues === "issues"
&& repo.length > 0 && /^([a-zA-Z0-9]+-?)+$/.test(user)
&& maybeIssues === "issues" && !ghReservedNames.check(user)
&& /^([a-zA-Z0-9]+-?)+$/.test(user) )
&& !ghReservedNames.check(user)
)
})
Hints.create(elements, Hints.dispatchMouseClick)
} }
actions.gh.openPull = () => { actions.gh.isPull = (href) => {
const elements = [...document.querySelectorAll("a[href]")] const u = new URL(href)
.filter((a) => { const [user, repo, maybePulls] = u.pathname.split("/").filter((s) => s !== "")
const u = new URL(a.href) return (
const [user, repo, maybePulls] = u.pathname.split("/").filter((s) => s !== "") u.origin === util.getCurrentLocation("origin")
return ( && typeof user === "string"
u.origin === util.getCurrentLocation("origin") && user.length > 0
&& typeof user === "string" && typeof repo === "string"
&& user.length > 0 && repo.length > 0
&& typeof repo === "string" && /^pulls?$/.test(maybePulls)
&& repo.length > 0 && /^([a-zA-Z0-9]+-?)+$/.test(user)
&& /^pulls?$/.test(maybePulls) && !ghReservedNames.check(user)
&& /^([a-zA-Z0-9]+-?)+$/.test(user) )
&& !ghReservedNames.check(user)
)
})
Hints.create(elements, Hints.dispatchMouseClick)
} }
actions.gh.openRepo = () => util.createHintsFiltered((a) => actions.gh.isRepo(a.href))
actions.gh.openUser = () => util.createHintsFiltered((a) => actions.gh.isUser(a.href))
actions.gh.openFile = () => util.createHintsFiltered((a) => actions.gh.isFile(a.href))
actions.gh.openIssue = () => util.createHintsFiltered((a) => actions.gh.isIssue(a.href))
actions.gh.openPull = () => util.createHintsFiltered((a) => actions.gh.isPull(a.href))
actions.gh.toggleLangStats = () => actions.gh.toggleLangStats = () =>
document.querySelector("summary[title='Click for language details']").click() document.querySelector("summary[title='Click for language details']").click()