mirror of
https://github.com/vale981/tridactyl
synced 2025-03-04 17:11:40 -05:00
Change urlparentignoreindexhtml into urlparentignorepathregexp
Make user be able to customize the path to remove before go to the parent path.
This commit is contained in:
parent
dbcc21c425
commit
e375417cd4
3 changed files with 25 additions and 11 deletions
|
@ -2066,12 +2066,19 @@ export function urlroot() {
|
|||
//#content
|
||||
export function urlparent(count = 1) {
|
||||
const option = {}
|
||||
for (const key of "trailingSlash ignoreFragment ignoreSearch ignoreIndexHtml".split(" ")) {
|
||||
for (const key of "trailingSlash ignoreFragment ignoreSearch".split(" ")) {
|
||||
const configKey = ("urlparent" + key.toLowerCase()) as (
|
||||
keyof config.default_config
|
||||
)
|
||||
option[key] = config.get(configKey) === "true"
|
||||
}
|
||||
const regexpString = config.get("urlparentignorepathregexp")
|
||||
const regexpScan = regexpString.match(/^\/(.+)\/([a-z]*?)$/)
|
||||
if (regexpString && regexpScan) {
|
||||
option["ignorePathRegExp"] = new RegExp(
|
||||
regexpScan[1], regexpScan[2]
|
||||
)
|
||||
}
|
||||
|
||||
const parentUrl = UrlUtil.getUrlParent(window.location, option, count)
|
||||
|
||||
|
|
|
@ -1281,10 +1281,16 @@ export class default_config {
|
|||
urlparentignoresearch: "true" | "false" = "false"
|
||||
|
||||
/**
|
||||
* Whether remove the /\/index\.(html?|php|aspx?|jsp|cgi|pl|js)$/i
|
||||
* before remove any path.
|
||||
* RegExp to remove from the url pathname before go to any parent path.
|
||||
* To ignore "index.html" in "parent/index.html", set it to
|
||||
* "//index\.html/". The regexp flag is supported, and the escape of
|
||||
* the slashes inside the regexp is not required.
|
||||
*
|
||||
* An empty string will disable this feature.
|
||||
*
|
||||
* Suggested value: //index\.(html?|php|aspx?|jsp|cgi|pl|js)$/i
|
||||
*/
|
||||
urlparentignoreindexhtml: "true" | "false" = "false"
|
||||
urlparentignorepathregexp = ""
|
||||
|
||||
/**
|
||||
* Whether to enter visual mode when text is selected. Visual mode can always be entered with `:mode visual`.
|
||||
|
|
|
@ -54,13 +54,14 @@ export function getUrlRoot(url) {
|
|||
|
||||
/** Get the parent of the current URL. Parent is determined as:
|
||||
*
|
||||
* * if there is a hash fragment, strip that, or
|
||||
* * If there is a query string, strip that, or
|
||||
* * if there is a hash fragment and option.ignoreFragment is falsy, strip that, or
|
||||
* * If there is a query string and option.ignoreSearch is falsy, strip that, or
|
||||
* * If option.ignorePathRegExp match the path, strip that and
|
||||
* * Remove one level from the path if there is one, or
|
||||
* * Remove one subdomain from the front if there is one
|
||||
*
|
||||
* @param url the URL to get the parent of
|
||||
* @param option search option, boolean dict of trailingSlash, ignoreSearch, ignoreFragment and ignoreIndexHtml
|
||||
* @param option removal option. Boolean properties: trailingSlash, ignoreFragment and ignoreSearch. Regular Expression properties: ignorePathRegExp. All properties are optional.
|
||||
* @param count how many "generations" you wish to go back (1 = parent, 2 = grandparent, etc.)
|
||||
* @return the parent of the URL, or null if there is no parent
|
||||
*/
|
||||
|
@ -87,10 +88,10 @@ export function getUrlParent(url, option, count = 1) {
|
|||
return gup(parent, option, count)
|
||||
}
|
||||
|
||||
if (option.ignoreIndexHtml) {
|
||||
const indexHtml = /\/index\.(html?|php|aspx?|jsp|cgi|pl|js)$/i
|
||||
if (parent.pathname.match(indexHtml)) {
|
||||
parent.pathname = parent.pathname.replace(indexHtml, "/")
|
||||
if (option.ignorePathRegExp) {
|
||||
const re = option.ignorePathRegExp
|
||||
if (parent.pathname.match(re)) {
|
||||
parent.pathname = parent.pathname.replace(re, "/")
|
||||
return gup(parent, option, count)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue