mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Change level of extraction to objects
This commit is contained in:
parent
a7b54f052b
commit
125bb22b38
@ -1,19 +1,12 @@
|
|||||||
function updateQuality(item) {
|
const agedBrie = {
|
||||||
if (is(item)) {
|
regex_matcher: /aged brie/,
|
||||||
item.quality += getQualityChange(item);
|
qualityChange: (sellIn) => {
|
||||||
}
|
if (sellIn <= 0) {
|
||||||
}
|
|
||||||
|
|
||||||
function getQualityChange(item) {
|
|
||||||
if (item.sellIn <= 0) {
|
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function is(item) {
|
module.exports = { agedBrie };
|
||||||
return item.name.toLowerCase().match(/aged brie/);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = { updateQuality, is };
|
|
||||||
@ -1,23 +1,16 @@
|
|||||||
function updateQuality(item) {
|
const backstagePass = {
|
||||||
if (is(item)) {
|
regex_matcher: /backstage pass/,
|
||||||
item.quality += getQualityChange(item);
|
qualityChange: (sellIn, quality) => {
|
||||||
}
|
if (sellIn <= 0) {
|
||||||
}
|
return -quality;
|
||||||
|
} else if (sellIn <= 5) {
|
||||||
function getQualityChange(item) {
|
|
||||||
if (item.sellIn <= 0) {
|
|
||||||
return -item.quality;
|
|
||||||
} else if (item.sellIn <= 5) {
|
|
||||||
return 3;
|
return 3;
|
||||||
} else if (item.sellIn <= 10) {
|
} else if (sellIn <= 10) {
|
||||||
return 2;
|
return 2;
|
||||||
} else {
|
} else {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function is(item) {
|
module.exports = { backstagePass };
|
||||||
return item.name.toLowerCase().match(/backstage pass/);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = { updateQuality, is };
|
|
||||||
@ -1,7 +1,9 @@
|
|||||||
var standardItem = require('./standard_update.js')
|
const standardItem = require('./standard_update.js')
|
||||||
var backstagePass = require('./backstage_pass_update.js')
|
const backstagePass = require('./backstage_pass_update.js')
|
||||||
var agedBrie = require('./aged_brie_update.js')
|
const agedBrie = require('./aged_brie_update.js')
|
||||||
var sulfuras = require('./sulfuras_update.js')
|
const sulfuras = require('./sulfuras_update.js')
|
||||||
|
|
||||||
|
const itemTypes = [backstagePass.backstagePass, agedBrie.agedBrie, sulfuras.sulfuras]
|
||||||
|
|
||||||
class Shop {
|
class Shop {
|
||||||
constructor(items = []) {
|
constructor(items = []) {
|
||||||
@ -27,10 +29,12 @@ class Shop {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_conditionallyUpdateQuality(item) {
|
_conditionallyUpdateQuality(item) {
|
||||||
standardItem.updateQuality(item);
|
for (const itemType of itemTypes) {
|
||||||
backstagePass.updateQuality(item);
|
if (item.name.toLowerCase().match(itemType.regex_matcher)) {
|
||||||
agedBrie.updateQuality(item);
|
return item.quality += itemType.qualityChange(item.sellIn, item.quality);
|
||||||
sulfuras.updateQuality(item);
|
}
|
||||||
|
}
|
||||||
|
return item.quality += standardItem.standardItem.qualityChange(item.sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
_updateItemSellIn(item) {
|
_updateItemSellIn(item) {
|
||||||
|
|||||||
@ -1,23 +1,11 @@
|
|||||||
var backstagePass = require('./backstage_pass_update.js')
|
const standardItem = {
|
||||||
var agedBrie = require('./aged_brie_update.js')
|
qualityChange: (sellIn) => {
|
||||||
var sulfuras = require('./sulfuras_update.js')
|
if (sellIn <= 0) {
|
||||||
|
|
||||||
function updateQuality(item) {
|
|
||||||
if (is(item)) {
|
|
||||||
item.quality += getQualityChange(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getQualityChange(item) {
|
|
||||||
if (item.sellIn <= 0) {
|
|
||||||
return -2;
|
return -2;
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function is(item) {
|
module.exports = { standardItem };
|
||||||
return !(backstagePass.is(item) || agedBrie.is(item) || sulfuras.is(item))
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = { updateQuality };
|
|
||||||
@ -1,15 +1,8 @@
|
|||||||
function updateQuality(item) {
|
const sulfuras = {
|
||||||
if (is(item)) {
|
regex_matcher: /sulfuras/,
|
||||||
item.quality += getQualityChange(item);
|
qualityChange: () => {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getQualityChange(item) {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function is(item) {
|
module.exports = { sulfuras };
|
||||||
return item.name.toLowerCase().match(/sulfuras/);
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = { updateQuality, is };
|
|
||||||
Loading…
Reference in New Issue
Block a user