You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict'
const crypto = require('crypto') const path = require('path') const qs = require('querystring') const _ = require('lodash')
module.exports = { /** * Parse raw url path and make it safe * * @param {String} urlPath The url path * @return {String} Safe entry path */ parsePath (urlPath) { urlPath = qs.unescape(urlPath) let wlist = new RegExp('(?!([^a-z0-9]|' + appdata.regex.cjk.source + '|[/-]))', 'g')
urlPath = _.toLower(urlPath).replace(wlist, '')
if (urlPath === '/') { urlPath = 'home' }
let urlParts = _.filter(_.split(urlPath, '/'), (p) => { return !_.isEmpty(p) })
return _.join(urlParts, '/') },
/** * Gets the full original path of a document. * * @param {String} entryPath The entry path * @return {String} The full path. */ getFullPath (entryPath) { return path.join(appdata.repoPath, entryPath + '.md') },
/** * Gets the full cache path of a document. * * @param {String} entryPath The entry path * @return {String} The full cache path. */ getCachePath (entryPath) { return path.join(appdata.cachePath, crypto.createHash('md5').update(entryPath).digest('hex') + '.json') },
/** * Gets the entry path from full path. * * @param {String} fullPath The full path * @return {String} The entry path */ getEntryPathFromFullPath (fullPath) { let absRepoPath = path.resolve(ROOTPATH, appdata.repoPath) return _.chain(fullPath).replace(absRepoPath, '').replace('.md', '').replace(new RegExp('\\\\', 'g'), '/').value() } }
|