Skip to content

Commit

Permalink
chapter 05: making fizzBuzz open for extension, step 1
Browse files Browse the repository at this point in the history
  • Loading branch information
devcorpio committed Mar 31, 2019
1 parent fbc4fb5 commit 9d5789d
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 0 deletions.
16 changes: 16 additions & 0 deletions chapter-05-the-dependency-inversion-principle/refactor/buzzRule.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
function buzzRule() {
function matches(number) {
return number % 5 === 0;
}

function getReplacement() {
return 'Buzz';
}

return {
matches,
getReplacement,
};
}

module.exports = buzzRule;
35 changes: 35 additions & 0 deletions chapter-05-the-dependency-inversion-principle/refactor/fizzBuzz.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
function fizzBuzz() {
function generateList(limit) {
const list = [];

for (let number = 1; number <= limit; number++) {
list.push(generateElement(number));
}

return list;
}

function generateElement(number) {
const fizzBuzzRule = fizzBuzzRule();

if (fizzBuzzRule.matches(number)) {
return fizzBuzzRule.getReplacement();
}

if (fizzRule.matches(number)) {
return fizzRule.getReplacement();
}

if (buzzRule.matches(number)) {
return buzzRule.getReplacement();
}

return number;
}

return {
generateList,
};
}

module.exports = fizzBuzz;
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
function fizzBuzzRule() {
function matches(number) {
return number % 3 && number && 5 === 0;
}

function getReplacement() {
return 'FizzBuzz';
}

return {
matches,
getReplacement,
};
}

module.exports = fizzBuzzRule;
16 changes: 16 additions & 0 deletions chapter-05-the-dependency-inversion-principle/refactor/fizzRule.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
function fizzRule() {
function matches(number) {
return number % 3 === 0;
}

function getReplacement() {
return 'Fizz';
}

return {
matches,
getReplacement,
};
}

module.exports = fizzRule;

0 comments on commit 9d5789d

Please sign in to comment.