Ganon is a functional javascript library designed and built by open source contributors.
A very special thanks to @csleong98 for designing this logo!
$ yarn add ganon
const { sum } = require('ganon');
const sumOfOneAndTwo = sum(1, 2);
=> 3
To build a suite of javascript methods by the time hacktoberfest ends! Let's get some T-shirts!!
Ganon is designed to get as many people involved as possible, so our objective here is to fix or improve an existing method and then write the skeleton of a desired method for someone else to build. In the spirit of getting everyone involved, please only fix one or two methods and make sure to push up something for someone else to work on!
This project was created to have fun.
All methods will live in the lib
directory of the project. They should be written as [methodName].js, required and exported in lib/index.js
.
All tests will live in the test
directory. A test file should be formatted [methodName].test.js
to reflect what method is being tested.
Please read our Contributing Guide for information on how to contribute to this project! All skill levels are more than welcome to participate in this project!
We're going to walk through the process of taking on an issue, resolving it, writing a new issue, and shipping some code.
The method we are going to resolve is called sum
:
// lib/sum.js
function sum(a, b) {
// Your code goes here.
}
module.exports = sum;
In order to test this method, we will first run yarn test sum
:
$ yarn test sum
FAIL problems/sum.test.js
✕ adds 1 + 2 to equal 3 (8ms)
✕ adds 3 + 4 to equal 7 (1ms)
● adds 1 + 2 to equal 3
expect(received).toBe(expected)
Expected value to be (using ===):
3
Received:
undefined
As you can see, there is something wrong with the function sum, so let's resolve it:
// lib/sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
Run the test again:
$ yarn test sum
PASS problems/sum.test.js
✓ adds 1 + 2 to equal 3 (6ms)
✓ adds 3 + 4 to equal 7 (1ms)
Now that I have fixed the sum function to return the desired value, I need to write the skeleton of a new method for other contributors to work on. Let's write one called difference
:
// lib/difference.js
// Write a function that returns the difference of the first two parameters
function difference(a, b) {
// Your code goes here.
}
module.exports = difference;
We will need to accompany this method with a test(s) to ensure it returns the proper value:
// test/difference.test.js
const { difference } = require("../lib");
describe("difference", () => {
test("subtracts 1 - 3 to equal -2", () => {
expect(difference(1, 3)).toBe(-2);
});
test("subtracts 10 - 3 to equal 7", () => {
expect(difference(10, 3)).toBe(7);
});
});
Now that we have fixed a method, written the skeleton of a new method, and a test to accompany it, we can push up our changes and open a pull request. 🔥 🔥 🔥