| var Token = require('../../tokenizer/token'); | 
|   | 
| var serializeBody = require('../../writer/one-time').body; | 
| var serializeRules = require('../../writer/one-time').rules; | 
|   | 
| function removeDuplicates(tokens) { | 
|   var matched = {}; | 
|   var moreThanOnce = []; | 
|   var id, token; | 
|   var body, bodies; | 
|   | 
|   for (var i = 0, l = tokens.length; i < l; i++) { | 
|     token = tokens[i]; | 
|     if (token[0] != Token.RULE) | 
|       continue; | 
|   | 
|     id = serializeRules(token[1]); | 
|   | 
|     if (matched[id] && matched[id].length == 1) | 
|       moreThanOnce.push(id); | 
|     else | 
|       matched[id] = matched[id] || []; | 
|   | 
|     matched[id].push(i); | 
|   } | 
|   | 
|   for (i = 0, l = moreThanOnce.length; i < l; i++) { | 
|     id = moreThanOnce[i]; | 
|     bodies = []; | 
|   | 
|     for (var j = matched[id].length - 1; j >= 0; j--) { | 
|       token = tokens[matched[id][j]]; | 
|       body = serializeBody(token[2]); | 
|   | 
|       if (bodies.indexOf(body) > -1) | 
|         token[2] = []; | 
|       else | 
|         bodies.push(body); | 
|     } | 
|   } | 
| } | 
|   | 
| module.exports = removeDuplicates; |