-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
visualize.js
39 lines (27 loc) · 1.03 KB
/
visualize.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env node
'use strict';
var fs = require('fs')
, path = require('path')
, htmlTmpl = fs.readFileSync(path.join(__dirname, 'visualize.html'), 'utf8')
, log = require('npmlog')
function byIdThenDirection(a, b) {
var aid = parseInt(a.id)
, bid = parseInt(b.id)
if (aid < bid) return -1;
if (aid === bid && a.direction === '=>') return -1;
return 1;
}
var file = process.argv[2];
if (!file) return console.log('Usage: crdp-visualize ./path-to-file.json')
file = path.resolve(file);
var src = fs.readFileSync(file, 'utf8')
, json = '[\n' + src.slice(0, -2) + ']'
, obj = JSON.parse(json)
, sorted = obj.sort(byIdThenDirection)
, sortedJSON = JSON.stringify(sorted)
, outfile = file.slice(0, -path.extname(file).length) + '.html'
var html = htmlTmpl
.replace(/{{ROOT}}/g, __dirname)
.replace(/{{JSONMESSAGES}}/g, sortedJSON)
fs.writeFileSync(outfile, html, 'utf8')
log.info('crdp-visualize', 'Successfully wrote html visualization to "./%s"', path.relative(process.cwd(), outfile))