mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
	
	
		
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | module.exports = function(grunt) { | ||
|  |   "use strict"; | ||
|  | 
 | ||
|  |   function escapeRegExp(str) { | ||
|  |     return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); | ||
|  |   } | ||
|  | 
 | ||
|  |   function extractColour(line) { | ||
|  |     var regex = /\s*:\s*(#[a-fA-F0-9]{3,6})\s*(!default|!default;)?/; | ||
|  |     var matches = line.match(regex); | ||
|  |     return matches ? matches[1] : matches; | ||
|  |   } | ||
|  | 
 | ||
|  |   function extractVariable(line) { | ||
|  |     var matches = line.match(/(\$[0-9a-zA-Z_-]+)\s*(!default|!default;)?/) | ||
|  |     return matches ? matches[1] : matches | ||
|  |   } | ||
|  | 
 | ||
|  |   function readVars(file, obj) { | ||
|  |     var content = grunt.file.read(file); | ||
|  |     var lines = content.split('\n'); | ||
|  | 
 | ||
|  |     lines.forEach(function(line) { | ||
|  |       var variable = extractVariable(line); | ||
|  |       if (variable) { | ||
|  |         var color = extractColour(line, variable); | ||
|  |         if (color) { | ||
|  |           obj[variable] = color; | ||
|  |         } | ||
|  |       } | ||
|  |     }); | ||
|  |   } | ||
|  | 
 | ||
|  |   grunt.registerTask('styleguide', function() { | ||
|  |     var data = { | ||
|  |       dark: {}, light: {} | ||
|  |     }; | ||
|  | 
 | ||
|  |     readVars('public/sass/_variables.dark.scss', data.dark); | ||
|  |     readVars('public/sass/_variables.light.scss', data.light); | ||
|  | 
 | ||
|  |     var styleGuideJson = grunt.config().srcDir + '/build/styleguide.json'; | ||
|  |     grunt.file.write(styleGuideJson, JSON.stringify(data, null, 4)); | ||
|  | 
 | ||
|  |   }); | ||
|  | 
 | ||
|  | }; |