| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | /* global appdata, ROOTPATH */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 + appdata.regex.arabic + '/-]', '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()  }}
 |