UNPKG

docsify

Version:

A magical documentation generator.

58 lines (43 loc) 1.12 kB
import { cached } from '../util/core' const decode = decodeURIComponent const encode = encodeURIComponent export function parseQuery (query) { const res = {} query = query.trim().replace(/^(\?|#|&)/, '') if (!query) { return res } // Simple parse query.split('&').forEach(function (param) { const parts = param.replace(/\+/g, ' ').split('=') res[parts[0]] = parts[1] && decode(parts[1]) }) return res } export function stringifyQuery (obj) { const qs = [] for (const key in obj) { qs.push(obj[key] ? `${encode(key)}=${encode(obj[key])}`.toLowerCase() : encode(key)) } return qs.length ? `?${qs.join('&')}` : '' } export function getPath (...args) { return cleanPath(args.join('/')) } export const isAbsolutePath = cached(path => { return /(:|(\/{2}))/g.test(path) }) export const getParentPath = cached(path => { return /\/$/g.test(path) ? path : (path = path.match(/(\S*\/)[^\/]+$/)) ? path[1] : '' }) export const cleanPath = cached(path => { return path .replace(/^\/+/, '/') .replace(/([^:])\/{2,}/g, '$1/') })