UNPKG

@justjcurtis/difi

Version:

difi is a simple data manipulation, processing & cleaning utility for your command line

91 lines (82 loc) 2.32 kB
const fs = require('fs') let path = require('path'); let exec = require('child_process').exec; const cli = (args, cwd) =>{ return new Promise(resolve => { exec(`node ${path.resolve('./commands.js')} ${args.join(' ')}`, { cwd }, (error, stdout, stderr) => { resolve({ code: error && error.code ? error.code : 0, error, stdout, stderr }) }) })} const readFile = (path, input_delimiter) => { let raw = fs.readFileSync(path, {encoding:'utf-8'}); let rawLines = raw.split(input_delimiter) re = RegExp(input_delimiter) let lines = [] for(var i = 0; i< rawLines.length; i++){ let line = rawLines[i].replace(re, '') lines.push(line) } return lines } const removeDuplicates = lines =>{ let re = RegExp('^\s*$') return lines.filter((value, index, self) =>{ if(value.match(re)){return true} return self.indexOf(value) === index; }) } const removeBlanks = lines =>{ let re = RegExp('^\s*$') return lines.filter((value, index, self) =>{ return !value.match(re) }) } const lowerCase = lines =>{ return lines.map(line =>{ return line.toLowerCase() }) } const removeKeyword = (lines, keyword, ignoreCase)=>{ return lines.filter(line =>{ if(ignoreCase){ return !line.toLowerCase().includes(keyword.toLowerCase()) }else{ return !line.includes(keyword) } }) } const removeBeforeKeyword = (lines, keyword, ignoreCase)=>{ return lines.filter((value, index, self) =>{ if(index == self.length -1){return true} if(ignoreCase){ return !self[index + 1].toLowerCase().includes(keyword.toLowerCase()) }else{ return !self[index + 1].includes(keyword) } }) } const removeAfterKeyword = (lines, keyword, ignoreCase)=>{ return lines.filter((value, index, self) =>{ if(index == 0){return true} if(ignoreCase){ return !self[index - 1].toLowerCase().includes(keyword.toLowerCase()) }else{ return !self[index - 1].includes(keyword) } }) } module.exports = { readFile, removeDuplicates, removeBlanks, lowerCase, removeKeyword, removeBeforeKeyword, removeAfterKeyword, cli }