zeatures
Version:
I just added every feature I want to use in a node package
118 lines (116 loc) • 4.51 kB
JavaScript
const chalk = require('chalk')
const readline = require('readline')
const request = require('request')
const htmltotext = require('html-to-text')
const fs = require('fs')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let Zeatures = {
machine: [
{
name: 'example',
price: 100
}
],
money: 100000000,
thing: true,
func: () => {
VM.machine.forEach((el, i) => {
console.log(chalk.whiteBright(`${i + 1}: ${el.name}, ${el.price}`))
});
rl.question(chalk.whiteBright(`Pick one`), (choice) => {
if (choice <= 0) {
} else {
choice--;
}
const tell = (name, price) => {
VM.money -= price;
console.log(chalk.greenBright(`You have bought ${name}. Your balance ${VM.money}`))
}
VM.machine.forEach((el, i) => i == choice ? VM.money >= el.price ? tell(el.name, el.price) : console.log(chalk.redBright(`Not enough money`)) : 0);
})
},
random: (limit, tf) => {
Number(limit);
if (tf == false) {
return Math.random() * limit
} else {
if (tf == true) {
return Math.floor(Math.random() * limit)
}
}
},
name: '',
names: (gender, nation, tf) => {
let url = 'https://www.behindthename.com/random/random.php?number=1&sets=1&gender=';
switch (gender) {
case 'male': url += 'm'; break;
case 'female': url += 'f'; break;
case 'both': url += 'both'; break
}
url += '&surname=&randomsurname=yes&norare=yes&nodiminutives=yes&'
switch (nation) {
case 'swedish': url += 'usage_swe=1'; break;
case 'spanish': url += 'usage_spa=1'; break;
case 'scottish': url += 'usage_sco=1'; break;
case 'russian': url += 'usage_rus=1'; break;
case 'romanian': url += 'usage_rmn=1'; break;
case 'nat-us': url += 'usage_ame=1'; break;
case 'korean': url += 'usage_kor=1'; break;
case 'japanese': url += 'usage_jap=1'; break;
case 'italian': url += 'usage_ita=1'; break;
case 'irish': url += 'usage_iri=1'; break;
case 'hawaiian': url += 'usage_haw=1'; break;
case 'greek': url += 'usage_gre=1'; break;
case 'german': url += 'usage_fre=1&usage_ger=1'; break;
case 'french': url += 'usage_fre=1'; break;
case 'dutch': url += 'usage_dut=1'; break;
case 'chinese': url += 'usage_chi=1'; break
case 'all': url += 'all=yes'; break;
case 'en': url += 'usage_eng=1'; break;
default: url += 'usage_eng=1'; break;
}
request(url, (err, res, bod) => {
let text = htmltotext.fromString(bod, {
wordwrap: 130
})
text = text.split(`\n`)
text = text[text.length - 2].split(' ')
text = `${text[0]} ${text[2]}`
VM.name = text
if (tf !== false) {
console.log(VM.name);
}
})
},
save: (savedInfo, name, save, show) => {
switch (save) {
case 'save': fs.appendFileSync(name, savedInfo, (err) => {
if (err) throw err;
setTimeout(() => {
if (show == true) {
console.log(savedInfo);
}
VM.saved = savedInfo;
}, 100)
}); break;
case 'delete': fs.unlinkSync(name); show == true ? console.log('Deleted') : show; break
case 'load': fs.readFile(`${__dirname}/${name}`, (err, data) => {
if (err) throw err;
data = JSON.parse(data)
if (show == true) {
console.log(data)
}
VM.saved = data;
}); break
}
},
saved: {},
pickOne: (list) => {
let tmp = Zeatures.random(list.length, true);
return list[tmp];
}
}
module.exports = Zeatures;