From ae30c7f7723dc93f23f8c0ff7ae1acaabb140db0 Mon Sep 17 00:00:00 2001 From: Dragon Fire Date: Fri, 13 Mar 2020 18:46:42 -0400 Subject: [PATCH] Refactor Zodiac Sign so it's less complex --- assets/json/zodiac-sign.json | 134 ++++++++++++++++++++++++++++++++ commands/analyze/zodiac-sign.js | 64 +++------------ package.json | 2 +- 3 files changed, 146 insertions(+), 54 deletions(-) create mode 100644 assets/json/zodiac-sign.json diff --git a/assets/json/zodiac-sign.json b/assets/json/zodiac-sign.json new file mode 100644 index 00000000..91431dcb --- /dev/null +++ b/assets/json/zodiac-sign.json @@ -0,0 +1,134 @@ +[ + { + "high": { + "month": 1, + "day": 19 + }, + "low": { + "month": 12, + "day": 22 + }, + "name": "Capricorn" + }, + { + "high": { + "month": 2, + "day": 18 + }, + "low": { + "month": 1, + "day": 20 + }, + "name": "Aquarius" + }, + { + "high": { + "month": 3, + "day": 20 + }, + "low": { + "month": 2, + "day": 19 + }, + "name": "Pisces" + }, + { + "high": { + "month": 4, + "day": 19 + }, + "low": { + "month": 3, + "day": 21 + }, + "name": "Aries" + }, + { + "high": { + "month": 5, + "day": 20 + }, + "low": { + "month": 4, + "day": 20 + }, + "name": "Taurus" + }, + { + "high": { + "month": 6, + "day": 20 + }, + "low": { + "month": 5, + "day": 21 + }, + "name": "Gemini" + }, + { + "high": { + "month": 7, + "day": 22 + }, + "low": { + "month": 6, + "day": 21 + }, + "name": "Cancer" + }, + { + "high": { + "month": 8, + "day": 22 + }, + "low": { + "month": 7, + "day": 23 + }, + "name": "Leo" + }, + { + "high": { + "month": 9, + "day": 22 + }, + "low": { + "month": 8, + "day": 23 + }, + "name": "Virgo" + }, + { + "high": { + "month": 10, + "day": 22 + }, + "low": { + "month": 9, + "day": 23 + }, + "name": "Libra" + }, + { + "high": { + "month": 11, + "day": 21 + }, + "low": { + "month": 10, + "day": 23 + }, + "name": "Scorpio" + }, + { + "high": { + "month": 12, + "day": 21 + }, + "low": { + "month": 11, + "day": 22 + }, + "name": "Sagittarius" + } +] diff --git a/commands/analyze/zodiac-sign.js b/commands/analyze/zodiac-sign.js index b930905d..ab5c1267 100644 --- a/commands/analyze/zodiac-sign.js +++ b/commands/analyze/zodiac-sign.js @@ -1,4 +1,6 @@ const Command = require('../../structures/Command'); +const signs = require('../../assets/json/zodiac-sign'); +const monthsWith30 = [4, 6, 9, 11]; module.exports = class ZodiacSignCommand extends Command { constructor(client) { @@ -28,60 +30,16 @@ module.exports = class ZodiacSignCommand extends Command { run(msg, { month, day }) { const sign = this.determineSign(month, day); if (!sign) return msg.reply('Invalid day.'); - return msg.say(`The Zodiac Sign for ${month}/${day} is ${sign}.`); + return msg.say(`The Zodiac Sign for ${month}/${day} is ${sign.name}.`); } - determineSign(month, day) { // eslint-disable-line complexity - if (month === 1) { - if (day >= 1 && day <= 19) return 'Capricorn'; - if (day >= 20 && day <= 31) return 'Aquarius'; - return null; - } else if (month === 2) { - if (day >= 1 && day <= 18) return 'Aquarius'; - if (day >= 19 && day <= 29) return 'Pisces'; - return null; - } else if (month === 3) { - if (day >= 1 && day <= 20) return 'Pisces'; - if (day >= 21 && day <= 31) return 'Aries'; - return null; - } else if (month === 4) { - if (day >= 1 && day <= 19) return 'Aries'; - if (day >= 20 && day <= 31) return 'Taurus'; - return null; - } else if (month === 5) { - if (day >= 1 && day <= 20) return 'Taurus'; - if (day >= 21 && day <= 31) return 'Gemini'; - return null; - } else if (month === 6) { - if (day >= 1 && day <= 20) return 'Gemini'; - if (day >= 21 && day <= 31) return 'Cancer'; - return null; - } else if (month === 7) { - if (day >= 1 && day <= 22) return 'Cancer'; - if (day >= 23 && day <= 31) return 'Leo'; - return null; - } else if (month === 8) { - if (day >= 1 && day <= 22) return 'Leo'; - if (day >= 23 && day <= 31) return 'Virgo'; - return null; - } else if (month === 9) { - if (day >= 1 && day <= 22) return 'Virgo'; - if (day >= 23 && day <= 31) return 'Libra'; - return null; - } else if (month === 10) { - if (day >= 1 && day <= 22) return 'Libra'; - if (day >= 23 && day <= 31) return 'Scorpio'; - return null; - } else if (month === 11) { - if (day >= 1 && day <= 21) return 'Scorpio'; - if (day >= 22 && day <= 31) return 'Sagittarius'; - return null; - } else if (month === 12) { - if (day >= 1 && day <= 21) return 'Sagittarius'; - if (day >= 22 && day <= 31) return 'Capricorn'; - return null; - } else { - return null; - } + determineSign(month, day) { + if (month === 2 && day > 29) return null; + if (monthsWith30.includes(month) && day > 30) return null; + return signs.find(sign => { + if (month === sign.high.month && day <= sign.high.day) return true; + if (month === sign.low.month && day >= sign.low.month) return true; + return false; + }); } }; diff --git a/package.json b/package.json index 03e1cd1e..52116229 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xiao", - "version": "112.5.1", + "version": "112.5.2", "description": "Your personal server companion.", "main": "Xiao.js", "scripts": {