This repository has been archived on 2023-01-08. You can view files and clone it, but cannot push or open issues or pull requests.
ptrcports/node-print/index.js

51 lines
1.1 KiB
JavaScript

global.stdin = () => {
const fs = require('fs')
const out = fs.readFileSync(0).toString()
return out.tryParseJSON()
}
Object.prototype.map = function(cb) {
return cb(this)
}
String.prototype.lines = function() {
let res = this.split("\n")
return res.at(-1) === '' ? res.slice(0, -1) : res
}
String.prototype.reverse = function() {
return this.split('').reverse().join('')
}
String.prototype.tryParseJSON = function() {
const str = this.trim()
if (
(str.at(0) === '{' && str.at(-1) === '}') ||
(str.at(0) === '[' && str.at(-1) === ']')
) {
try {
return JSON.parse(str)
} catch (err) {
return this.toString()
}
}
return this.toString()
}
Buffer.prototype.tryParseJSON = function() {
const out = this.toString().tryParseJSON()
if (typeof out === 'string') {
return this
} else {
return out
}
}
global.exec = (command, args, options) => {
const child_process = require('child_process')
const res = child_process.spawnSync(command, args, options)
res.stdout = res.stdout.tryParseJSON()
res.stderr = res.stderr.tryParseJSON()
return res
}