Created
July 30, 2012 14:27
-
-
Save katanacrimson/3207342 to your computer and use it in GitHub Desktop.
Minor script for horrific compaction of some ANSI art of mine...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(' ') | |
}) | |
}) | |
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