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.
72 lines
1.2 KiB
72 lines
1.2 KiB
import path from 'path'
|
|
import fs from 'fs'
|
|
|
|
/**
|
|
*
|
|
*
|
|
*
|
|
*/
|
|
|
|
class ResolverClass
|
|
{
|
|
/**
|
|
*
|
|
* @param {String} prefix
|
|
*
|
|
*/
|
|
constructor(prefix)
|
|
{
|
|
this.prefix = prefix
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
* @param {String} className
|
|
* @param {Boolean} [isCustom=false]
|
|
* @return {String}
|
|
*
|
|
*/
|
|
lookupPath(className, isCustom = false)
|
|
{
|
|
let custom = ''
|
|
|
|
if (isCustom) {
|
|
custom = '/custom/'
|
|
}
|
|
|
|
return path.join(path.resolve(), custom + this.prefix + '/' + className + '.js')
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {[type]} className
|
|
* @return {[type]} [description]
|
|
*/
|
|
find(className)
|
|
{
|
|
// getting
|
|
let classPath = this.lookupPath(className, true)
|
|
|
|
// results
|
|
let result = false
|
|
|
|
if (fs.existsSync(classPath)) {
|
|
result = classPath
|
|
} else {
|
|
classPath = this.lookupPath(className)
|
|
|
|
if (fs.existsSync(classPath)) {
|
|
result = classPath
|
|
}
|
|
}
|
|
|
|
if (!result) {
|
|
throw new Error('Class ' + className + ' not found!')
|
|
}
|
|
|
|
return result
|
|
}
|
|
}
|
|
|
|
export default ResolverClass |