Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added calculator.js #2387

Open
wants to merge 3 commits into
base: FabriceAB1
Choose a base branch
from
Open

Conversation

FabriceAB1
Copy link

To implement the _check function to make the tests pass, you can modify the code as follows:

exports._check = (x, y) => {
  if (typeof x !== 'number') {
    throw new TypeError(`${x} is not a number`);
  }
  if (typeof y !== 'number') {
    throw new TypeError(`${y} is not a number`);
  }
};

exports.add = (x, y) => {
  exports._check(x, y);
  return x + y;
};

exports.subtract = (x, y) => {
  exports._check(x, y);
  return x - y;
};

exports.multiply = (x, y) => {
  exports._check(x, y);
  return x * y;
};

exports.divide = (x, y) => {
  exports._check(x, y);
  if (y === 0) {
    throw new RangeError('Cannot divide by zero');
  }
  return x / y;
};

module.exports = exports;

In this modified code:

  1. The _check function checks if both x and y are numbers. If either of them is not a number, it throws a TypeError.
  2. The add, subtract, multiply, and divide functions call the _check function at the beginning to check if the inputs are valid.
  3. In the divide function, an additional check is added to prevent division by zero. If y is zero, it throws a RangeError.

With this implementation, the tests should pass, and the code should be more DRY (Don't Repeat Yourself) compliant.

@dantharejabot
Copy link
Collaborator

Yay, a pull request!

After you submit a pull request, one of the following will happen:

😭 You don’t get a response. 😭

Even on an active project, it’s possible that your pull request won’t get an immediate response. You should expect some delay as most open source maintainers do so in their free time and can be busy with other tasks.

If you haven’t gotten a response in over a week, it’s fair to politely respond in the same thread, asking someone for a review. If you know the handle of the right person to review your pull request, you can @-mention them to send them a notification. Avoid reaching out to that person privately; remember that public communication is vital to open source projects.

If you make a polite bump and still nobody responds, it’s possible that nobody will respond, ever. It’s not a great feeling, but don’t let that discourage you. It’s happened to everyone! There are many possible reasons why you didn’t get a response, including personal circumstances that may be out of your control. Try to find another project or way to contribute. If anything, this is a good reason not to invest too much time in making a pull request before other community members are engaged and responsive.

🚧 You're asked to make changes to your pull request. 🚧

It’s very common that someone will request changes on your pull request, whether that’s feedback on the scope of your idea, or changes to your code. Often a pull request is just the start of the conversation.

When someone requests changes, be responsive. They’ve taken the time to review your pull request. Opening a PR and walking away is bad form. If you don’t know how to make changes, research the problem, then ask for help if you need it.

If you don’t have time to work on the issue anymore (for example, if the conversation has been going on for months, and your circumstances have changed), let the maintainer know so they’re not expecting a response. Someone else may be happy to take over.

👎 Your pull request doesn’t get accepted. 👎

It's possible your pull request may or may not be accepted in the end. If you’re not sure why it wasn’t accepted, it’s perfectly reasonable to ask the maintainer for feedback and clarification. Ultimately, however, you’ll need to respect that this is their decision. Don’t argue or get hostile. You’re always welcome to fork and work on your own version if you disagree!

🎉 Your pull request gets accepted and merged. 🎉

Hooray! You’ve successfully made an open source contribution!


Thank you for the submission, @FabriceAB1! I'll review your code shortly, hang tight.

Copy link
Collaborator

@dantharejabot dantharejabot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great attempt, @FabriceAB1!

I would like to request a few changes before merging your work. Please review my comments below and make the appropriate changes to your code.

After you update your code locally, follow the instructions to save your changes locally and push your changes to your fork.

When you push your changes to your fork, I'll come back for another review.


There are 1 style guide violations in your contribution. I've marked them with inline comments for your convenience.

Please revisit your code and follow the style guide best practices.

Hint: You might be able to fix some issues automatically by running npm run lint -- --fix


All the tests are passing. Nice job!

@FabriceAB1
Copy link
Author

Here is the regenerated code with all the information above:

/**
 * Checks if two values are numbers.
 *
 * @param {number} x The first number.
 * @param {number} y The second number.
 * @throws {TypeError} If either x or y is not a number.
 */
exports._check = (x, y) => {
  if (typeof x !== 'number') {
    throw new TypeError(`${x} is not a number`);
  }
  if (typeof y !== 'number') {
    throw new TypeError(`${y} is not a number`);
  }
};

/**
 * Adds two numbers together.
 *
 * @param {number} x The first number.
 * @param {number} y The second number.
 * @return {number} The sum of x and y.
 * @throws {TypeError} If either x or y is not a number.
 */
exports.add = (x, y) => {
  exports._check(x, y);
  return x + y;
};

/**
 * Subtracts one number from another.
 *
 * @param {number} x The first number.
 * @param {number} y The second number.
 * @return {number} The difference of x and y.
 * @throws {TypeError} If either x or y is not a number.
 */
exports.subtract = (x, y) => {
  exports._check(x, y);
  return x - y;
};

/**
 * Multiplies two numbers together.
 *
 * @param {number} x The first number.
 * @param {number} y The second number.
 * @return {number} The product of x and y.
 * @throws {TypeError} If either x or y is not a number.
 */
exports.multiply = (x, y) => {
  exports._check(x, y);
  return x * y;
};

/**
 * Divides one number by another.
 *
 * @param {number} x The dividend.
 * @param {number} y The divisor.
 * @return {number} The quotient of x and y.
 * @throws {TypeError} If either x or y is not a number.
 * @throws {RangeError} If y is zero.
 */
exports.divide = (x, y) => {
  exports._check(x, y);
  if (y === 0) {
    throw new RangeError('Cannot divide by zero');
  }
  return x / y;
};

module.exports = exports;

This code includes:

  • JSDoc comments for each function to provide documentation and clarity.
  • Type checking for the _check function to ensure that both x and y are numbers.
  • Error handling for the divide function to prevent division by zero.
  • Consistent naming conventions and coding style throughout the code.
  • A module.exports statement to export the functions as a module.

@dantharejabot
Copy link
Collaborator

✨ Changes synced ✨

When a pull request is open, GitHub tracks changes to the branch it was opened from. As you push changes to your fork's second-viz branch, you'll automatically see them here.

Thanks for the changes, @FabriceAB1. I'm reviewing them now.

Copy link
Collaborator

@dantharejabot dantharejabot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a great attempt, @FabriceAB1!

I would like to request a few changes before merging your work. Please review my comments below and make the appropriate changes to your code.

After you update your code locally, follow the instructions to save your changes locally and push your changes to your fork.

When you push your changes to your fork, I'll come back for another review.


There are 1 style guide violations in your contribution. I've marked them with inline comments for your convenience.

Please revisit your code and follow the style guide best practices.

Hint: You might be able to fix some issues automatically by running npm run lint -- --fix


All the tests are passing. Nice job!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants