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.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							45 lines
						
					
					
						
							1.0 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
const rx = require('./rx')
 | 
						|
 | 
						|
module.exports = parse
 | 
						|
 | 
						|
function parse ({ paths }) {
 | 
						|
  const wildcards = []
 | 
						|
  var wcLen = 0
 | 
						|
  const secret = paths.reduce(function (o, strPath, ix) {
 | 
						|
    var path = strPath.match(rx).map((p) => p.replace(/'|"|`/g, ''))
 | 
						|
    const leadingBracket = strPath[0] === '['
 | 
						|
    path = path.map((p) => {
 | 
						|
      if (p[0] === '[') return p.substr(1, p.length - 2)
 | 
						|
      else return p
 | 
						|
    })
 | 
						|
    const star = path.indexOf('*')
 | 
						|
    if (star > -1) {
 | 
						|
      const before = path.slice(0, star)
 | 
						|
      const beforeStr = before.join('.')
 | 
						|
      const after = path.slice(star + 1, path.length)
 | 
						|
      const nested = after.length > 0
 | 
						|
      wcLen++
 | 
						|
      wildcards.push({
 | 
						|
        before,
 | 
						|
        beforeStr,
 | 
						|
        after,
 | 
						|
        nested
 | 
						|
      })
 | 
						|
    } else {
 | 
						|
      o[strPath] = {
 | 
						|
        path: path,
 | 
						|
        val: undefined,
 | 
						|
        precensored: false,
 | 
						|
        circle: '',
 | 
						|
        escPath: JSON.stringify(strPath),
 | 
						|
        leadingBracket: leadingBracket
 | 
						|
      }
 | 
						|
    }
 | 
						|
    return o
 | 
						|
  }, {})
 | 
						|
 | 
						|
  return { wildcards, wcLen, secret }
 | 
						|
}
 |