Skip to content

Commit 6069cff

Browse files
author
David Adam Justice
committed
add repl to executable
1 parent 3e78e12 commit 6069cff

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

fuck.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,38 @@
11
#!/usr/bin/env node
22

3+
var stream = require('stream');
4+
var util = require('util');
35
var lib = require("./jsfuck.js");
6+
var repl = require('repl');
47

58
if(process.argv.length !== 3) {
6-
console.error("Usage: jsfuck <js file>");
7-
return;
8-
}
99

10-
var data = require("fs").readFileSync(process.argv[2], "utf8");
11-
var output = lib.JSFuck.encode(data, false);
12-
console.log(output);
10+
function Stream() {
11+
stream.Transform.call(this);
12+
}
13+
util.inherits(Stream, stream.Transform);
14+
15+
Stream.prototype._transform = function (chunk, encoding, callback) {
16+
var script = lib.JSFuck.encode(chunk.toString());
17+
var lines = script.split(/\n+/);
18+
for (var i = 0; i < lines.length; i++) {
19+
// ignore empty lines
20+
if (lines[i] !== '') this.push(lines[i] + '\n');
21+
}
22+
callback();
23+
};
24+
25+
var fuckScript = new Stream();
26+
repl.start({
27+
prompt: "FUCK> ",
28+
input: fuckScript,
29+
useColors: true,
30+
output: process.stdout
31+
});
32+
33+
process.stdin.pipe(fuckScript);
34+
} else {
35+
var data = require("fs").readFileSync(process.argv[2], "utf8");
36+
var output = lib.JSFuck.encode(data, false);
37+
console.log(output);
38+
}

0 commit comments

Comments
 (0)