mirror of https://github.com/antonmedv/fx
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
620 B
JavaScript
35 lines
620 B
JavaScript
5 years ago
|
'use strict'
|
||
|
const fs = require('fs')
|
||
|
|
||
|
const skip = Symbol('skip')
|
||
|
|
||
|
function select(cb) {
|
||
|
return json => {
|
||
|
if (!cb(json)) {
|
||
|
throw skip
|
||
|
}
|
||
|
return json
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function filter(cb) {
|
||
|
return json => {
|
||
|
if (cb(json)) {
|
||
|
throw skip
|
||
|
}
|
||
|
return json
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function save(json) {
|
||
|
if (!global.FX_FILENAME) {
|
||
|
throw "No filename provided.\nTo edit-in-place, specify JSON file as first argument."
|
||
|
}
|
||
|
fs.writeFileSync(global.FX_FILENAME, JSON.stringify(json, null, 2))
|
||
|
return json
|
||
|
}
|
||
|
|
||
|
Object.assign(exports, {skip, select, filter, save})
|
||
|
Object.assign(global, exports)
|
||
|
global.std = exports
|