| 
									
										
										
										
											2019-04-12 16:44:14 +02:00
										 |  |  | const yaml = require('js-yaml'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							|  |  |  |   names: ['yaml-linter'], | 
					
						
							| 
									
										
										
										
											2019-06-21 15:22:14 +02:00
										 |  |  |   description: 'YAML code blocks should be valid', | 
					
						
							| 
									
										
										
										
											2019-04-12 16:44:14 +02:00
										 |  |  |   tags: ['yaml'], | 
					
						
							|  |  |  |   function: function rule(params, onError) { | 
					
						
							|  |  |  |     params.tokens | 
					
						
							|  |  |  |       .filter(param => param.type === 'fence') | 
					
						
							|  |  |  |       .filter(param => param.info === 'yml' || param.info === 'yaml') | 
					
						
							|  |  |  |       // TODO since the parser only looks for yml, should we reject yaml blocks?
 | 
					
						
							|  |  |  |       .forEach(codeBlock => { | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |           yaml.safeLoad(codeBlock.content); | 
					
						
							|  |  |  |         } catch (e) { | 
					
						
							|  |  |  |           onError({ | 
					
						
							|  |  |  |             lineNumber: codeBlock.lineNumber, | 
					
						
							|  |  |  |             detail: e.message, | 
					
						
							|  |  |  |             context: codeBlock.line | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }; |