Skip to content

Instantly share code, notes, and snippets.

@katanacrimson
Created July 30, 2012 14:27
Show Gist options
  • Save katanacrimson/3207342 to your computer and use it in GitHub Desktop.
Save katanacrimson/3207342 to your computer and use it in GitHub Desktop.
Minor script for horrific compaction of some ANSI art of mine...
var fs = require('fs'),
start = new Date()
fs.readFile('flame.htm', 'utf8', function(err, data){
if(err) throw err
console.log('pre-parsing: extracting css color codes')
var re, hex, res = data.match(/h([0-9a-f]{3,6})/g).sort().unique(),
post = ['fff', 'fefefe', 'ffffff', 'fffefe', 'fffffe', 'fefeff'],
css = '/' + "*!\n * <3\n" + '*' + "/\n" + 'pre{font: 8px monospace;line-height: 3px;color: #ffffff;}'
console.log('parsing: compacting %d entries', res.length)
res.forEach(function(val, key, ar) {
hex = val.slice(1)
data = data.replace(new RegExp('<span class\="h' + hex + '">(#+)<\/span><span class="h' + hex + '">(#+)<\/span>', 'ig'), '<span class="h' + hex + '">$1$2</span>')
})
console.log('post parsing: crushing %d entries', post.length)
post.forEach(function(val, key, ar) {
data = data.replace(new RegExp('<span class="h' + val + '">(#+)<\/span>', 'gi'), function(match, group1) {
return new Array(group1.length + 1).join('&nbsp;')
})
})
fs.writeFile('flame_final.htm', data, 'utf8', function(err) {
if(err) throw err
console.log('HTML file parsed and saved successfully')
})
console.log('parsing: adding %d css classes', res.length)
res.forEach(function(val, key, ar) {
if(val in post) return
css = css + 'span.' + val + '{color:#' + val.slice(1) + '}'
})
fs.writeFile('shana_final.css', css, 'utf8', function(err) {
if(err) throw err
console.log('CSS file parsed and saved successfully')
})
console.log('done! %d seconds elapsed', (new Date().getTime() - start.getTime()) / 1000)
})
Array.prototype.unique = function() {
var a = [], l = this.length
for(var i=0; i<l; i++) {
for(var j=i+1; j<l; j++) {
if (this[i] === this[j]) j = ++i
}
a.push(this[i])
}
return a;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment