This repository was archived by the owner on Nov 3, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathbench.js
More file actions
executable file
·79 lines (56 loc) · 1.75 KB
/
bench.js
File metadata and controls
executable file
·79 lines (56 loc) · 1.75 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
'use strict';
const Bench = require('bench');
const Metaphor = require('.');
const Wreck = require('wreck');
const parse = function (document) {
// Grab the head
const head = document.match(/<head[^>]*>([\s\S]*)<\/head\s*>/);
if (!head) {
return [];
}
// Remove scripts
const scripts = head[1].split('</script>'); // '<script>a</script>something<script>a</script>' -> ['<script>a', 'something<script>a', '']
const chunks = [];
scripts.forEach((chunk) => {
const pos = chunk.indexOf('<script');
if (pos !== -1) {
chunk = chunk.slice(0, pos);
}
chunks.push(chunk);
});
// Find meta tags
const elements = [];
chunks.forEach((chunk) => {
const parts = chunk.split('<meta ');
for (let i = 1; i < parts.length; ++i) {
elements.push(parts[i].slice(0, parts[i].indexOf('>')));
}
});
const tags = [];
for (let i = 0; i < elements.length; ++i) {
const element = elements[i];
const parsed = element.match(/\s*property\s*=\s*"og:([^":]*)(?:\:([^"]*))?"\s+content\s*=\s*"([^"]*)\s*"/);
if (parsed) {
tags.push({ key: parsed[1], sub: parsed[2], value: parsed[3] });
}
}
return tags;
};
let document;
exports.compare = {
metaphor: function (done) {
Metaphor.parse(document, done);
},
custom: function (done) {
parse(document);
return done();
}
};
Wreck.get('https://twitter.com/dalmaer/status/726624422237364226', {}, (ignoreErr1, res, payload) => {
document = payload.toString();
console.log(Metaphor.parse(document));
parse(document, (ignoreErr2, tags) => {
console.log(tags);
Bench.runMain();
});
});