text: '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 + 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()
    }
  }
  