51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { resolveScript } = require('./resolveScript')
 | 
						|
 | 
						|
module.exports = function selectBlock(
 | 
						|
  descriptor,
 | 
						|
  scopeId,
 | 
						|
  options,
 | 
						|
  loaderContext,
 | 
						|
  query,
 | 
						|
  appendExtension
 | 
						|
) {
 | 
						|
  // template
 | 
						|
  if (query.type === `template`) {
 | 
						|
    if (appendExtension) {
 | 
						|
      loaderContext.resourcePath += '.' + (descriptor.template.lang || 'html')
 | 
						|
    }
 | 
						|
    loaderContext.callback(
 | 
						|
      null,
 | 
						|
      descriptor.template.content,
 | 
						|
      descriptor.template.map
 | 
						|
    )
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  // script
 | 
						|
  if (query.type === `script`) {
 | 
						|
    const script = resolveScript(descriptor, scopeId, options, loaderContext)
 | 
						|
    if (appendExtension) {
 | 
						|
      loaderContext.resourcePath += '.' + (script.lang || 'js')
 | 
						|
    }
 | 
						|
    loaderContext.callback(null, script.content, script.map)
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  // styles
 | 
						|
  if (query.type === `style` && query.index != null) {
 | 
						|
    const style = descriptor.styles[query.index]
 | 
						|
    if (appendExtension) {
 | 
						|
      loaderContext.resourcePath += '.' + (style.lang || 'css')
 | 
						|
    }
 | 
						|
    loaderContext.callback(null, style.content, style.map)
 | 
						|
    return
 | 
						|
  }
 | 
						|
 | 
						|
  // custom
 | 
						|
  if (query.type === 'custom' && query.index != null) {
 | 
						|
    const block = descriptor.customBlocks[query.index]
 | 
						|
    loaderContext.callback(null, block.content, block.map)
 | 
						|
    return
 | 
						|
  }
 | 
						|
}
 |