49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var all = require('./helpers').all;
 | |
| 
 | |
| function store(serializeContext, token) {
 | |
|   var value = typeof token == 'string'
 | |
|     ? token
 | |
|     : token[1];
 | |
|   var wrap = serializeContext.wrap;
 | |
| 
 | |
|   wrap(serializeContext, value);
 | |
|   track(serializeContext, value);
 | |
|   serializeContext.output.push(value);
 | |
| }
 | |
| 
 | |
| function wrap(serializeContext, value) {
 | |
|   if (serializeContext.column + value.length > serializeContext.format.wrapAt) {
 | |
|     track(serializeContext, serializeContext.format.breakWith);
 | |
|     serializeContext.output.push(serializeContext.format.breakWith);
 | |
|   }
 | |
| }
 | |
| 
 | |
| function track(serializeContext, value) {
 | |
|   var parts = value.split('\n');
 | |
| 
 | |
|   serializeContext.line += parts.length - 1;
 | |
|   serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length);
 | |
| }
 | |
| 
 | |
| function serializeStyles(tokens, context) {
 | |
|   var serializeContext = {
 | |
|     column: 0,
 | |
|     format: context.options.format,
 | |
|     indentBy: 0,
 | |
|     indentWith: '',
 | |
|     line: 1,
 | |
|     output: [],
 | |
|     spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace,
 | |
|     store: store,
 | |
|     wrap: context.options.format.wrapAt
 | |
|       ? wrap
 | |
|       : function() { /* noop */ }
 | |
|   };
 | |
| 
 | |
|   all(serializeContext, tokens);
 | |
| 
 | |
|   return { styles: serializeContext.output.join('') };
 | |
| }
 | |
| 
 | |
| module.exports = serializeStyles;
 |