21 lines
		
	
	
		
			745 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
		
			745 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { Spec, parse, Problem } from 'comment-parser'
 | 
						|
 | 
						|
export const getTags = (source?: string): Spec[] => {
 | 
						|
  if (!source) return []
 | 
						|
  const blocks = parse(source)
 | 
						|
  const tags = blocks.reduce((acc, block) => acc.concat(block.tags), [] as Spec[])
 | 
						|
  return tags
 | 
						|
}
 | 
						|
 | 
						|
export const getErrors = (source?: string): Error | undefined => {
 | 
						|
  if (!source) return undefined
 | 
						|
  const blocks = parse(source)
 | 
						|
  const probs = blocks.reduce((acc, block) => acc.concat(block.problems), [] as Problem[])
 | 
						|
  if (!probs.length) return undefined
 | 
						|
  const errors = probs.map(prob => `[${prob.code}] on line ${prob.line}: ${prob.message}`)
 | 
						|
  const error = new Error(
 | 
						|
    `The following error(s) occurred while parsing JSDOC: \n${errors.join('\n')}`
 | 
						|
  )
 | 
						|
  return error
 | 
						|
}
 |