Skip to content

Commit

Permalink
Merge da60046 into d18b943
Browse files Browse the repository at this point in the history
  • Loading branch information
anthony-redFox authored Oct 23, 2019
2 parents d18b943 + da60046 commit 9dbbcad
Showing 1 changed file with 15 additions and 32 deletions.
47 changes: 15 additions & 32 deletions lib/preprocessor.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,63 +70,46 @@ async function runProcessors (preprocessors, file, content) {
file.sha = CryptoUtils.sha1(content)
}

function createPriorityPreprocessor (config, preprocessorPriority, basePath, injector) {
function createPriorityPreprocessor (config = {}, preprocessorPriority, basePath, injector) {
const emitter = injector.get('emitter')
const alreadyDisplayedErrors = {}
const instances = {}
let patterns = Object.keys(config)
const instances = new Map()

function instantiatePreprocessor (name) {
if (alreadyDisplayedErrors[name]) {
return
}

let p = instances[name]
if (p) {
return p
if (instances.has(name)) {
return instances.get(name)
}

let p
try {
p = injector.get('preprocessor:' + name)
if (!p) {
log.error(`Failed to instantiate preprocessor ${name}`)
emitter.emit('load_error', 'preprocessor', name)
}
} catch (e) {
if (e.message.includes(`No provider for "preprocessor:${name}"`)) {
log.error(`Can not load "${name}", it is not registered!\n Perhaps you are missing some plugin?`)
} else {
log.error(`Can not load "${name}"!\n ` + e.stack)
}
alreadyDisplayedErrors[name] = true
emitter.emit('load_error', 'preprocessor', name)
}

if (!p && !alreadyDisplayedErrors[name]) {
alreadyDisplayedErrors[name] = true
log.error(`Failed to instantiate preprocessor ${name}`)
emitter.emit('load_error', 'preprocessor', name)
} else {
instances[name] = p
}

instances.set(name, p)
return p
}

let allPreprocessors = []
patterns.forEach((pattern) => {
allPreprocessors = _.union(allPreprocessors, config[pattern])
})
allPreprocessors.forEach(instantiatePreprocessor)
_.union.apply(_, Object.values(config)).forEach(instantiatePreprocessor)

return async function preprocess (file) {
patterns = Object.keys(config)

const buffer = await tryToRead(file.originalPath, log)
const isBinary = await isBinaryFile(buffer, buffer.length)

let preprocessorNames = []
patterns.forEach((pattern) => {
const preprocessorNames = Object.keys(config).reduce((res, pattern) => {
if (mm(file.originalPath, pattern, { dot: true })) {
preprocessorNames = _.union(preprocessorNames, config[pattern])
res = _.union(res, config[pattern])
}
})
return res
}, [])

// Apply preprocessor priority.
const preprocessors = preprocessorNames
Expand Down

0 comments on commit 9dbbcad

Please sign in to comment.