Git Product home page Git Product logo

zodiac-signs's Introduction

License: MIT

Zodiac-signs

Provides a zodiac sign depending a birthday and much more.

This is based on Micah Akpan's package.

It's for example also possible to get:

  • a zodiac's emoji
  • a zodiac birthstone

Installation

$ npm install zodiac-signs

Example

Importing the module

const zodiac = require('zodiac-signs')('en');
// Require with a language (format xx-YY sets (format xx))
const zodiac = require('zodiac-signs')('en-US')
// Require without an argument sets 'en'
const zodiac = require('zodiac-signs')();

Getting a zodiac sign from a date

// Returns the zodiac sign's information of the actual day
console.log(zodiac.getSignByDate());
// Returns the zodiac sign's information of the 22 of June
console.log(zodiac.getSignByDate({ day: 22, month: 6 }));
// Overload the default language (format xx-YY sets (format xx))
console.log(zodiac.getSignByDate({ day: 22, month: 6 }, 'fr'));

Getting a zodiac sign from a name or symbol

// Returns the Cancer sign's information
console.log(zodiac.getSignByName('cancer');
console.log(zodiac.getSignBySymbol('♋️');
// Overload the default language (format xx-YY sets (format xx))
console.log(zodiac.getSignByName('cancer', 'fr'));
console.log(zodiac.getSignBySymbol('♋️', 'fr');

Others

// Returns an array of all zodiac symbols
console.log(zodiac.getSymbols());
// Returns an array of all the zodiac names
console.log(zodiac.getNames());
// Overload the default language (format xx-YY sets (format xx))
console.log(zodiac.getNames('fr'));

Error management

An integer is returned if the given parameter is wrong:

Type Values Error code
Day* [1;31] or [1;30] or [1;29] -1
Month [1;12] -1
Name zodiac signs' names -2
Symbol zodiac signs' symbols -2

*Depending on the month, the day's numbers interval can change.

Translation

Available languages

  • English (en)
  • Spanish (es)
  • French (fr)
  • Italian (it)
  • Russian (ru)
  • Swedish (sv)
  • Turkish (tr)

Obviously, you are free to participate to the translation in any other language.

Thanks

License

zodiac-signs's People

Contributors

alisincar avatar devmartynov avatar helmasaur avatar peter-rymdfabriken avatar vitomars avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

zodiac-signs's Issues

Suggestion

I really love this package it's so easy to use but I have a suggestion, you should include facts with each sign. Also, I would really love to help you with this project if you are up to!

Add keywords

Add keywords to:

  • the GitHub repository
  • package.json

Manage "fr-FR" format

The fr-FR language format isn't managed by the code, so it would always return the english string.

Way to not repeat "require(data.json)"

This piece of code appears many times:

let signsLocale;
try {
	signsLocale = Object.values(require(`./locales/${language}/zodiac.json`));
} catch {
	signsLocale = Object.values(require('./locales/en/zodiac.json'));
}

Is there a way where the file is imported once only?

The default language string is parsed at two different places

The default language is parsed at the beginning at the script then everytime the language is not overloaded.

zodiac-signs/index.js

Lines 1 to 9 in 2f265ac

const regex = new RegExp('^[a-z]{2}(-[A-Z]{2})?$'); // xx-YY
module.exports = defaultLanguage => {
// Language format verification
if (regex.test(defaultLanguage)) { // Language format (xx-YY) verification
defaultLanguage = defaultLanguage.substring(0, 2);
} else {
defaultLanguage = 'en';
}

zodiac-signs/index.js

Lines 153 to 162 in 2f265ac

const parseLanguage = language => {
const regex = new RegExp('^[a-z]{2}(-[A-Z]{2})?$'); // xx-YY
// Language format (xx-YY) verification
if (regex.test(language)) {
language = language.substring(0, 2);
}
return language;
}

(The regex is stored at two different places too.)

Parentheses missing in README

Several closing parenthesis are missing in the readme file. I suspect copy-pasting 👀.

// Require with a language (format xx-YY sets (format xx)

// Overload the default language (format xx-YY sets (format xx)

// Overload the default language (format xx-YY sets (format xx)

// Overload the default language (format xx-YY sets (format xx)

Correct test errors

The test file has been completed (#9) but undefined is returned for values which are linked through a key. It's the case for element.

The commented lines are the parts that have to be checked.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.