Change level of extraction to objects

This commit is contained in:
Dan Holmes 2020-12-04 08:00:37 +00:00
parent a7b54f052b
commit 125bb22b38
5 changed files with 47 additions and 76 deletions

View File

@ -1,19 +1,12 @@
function updateQuality(item) {
if (is(item)) {
item.quality += getQualityChange(item);
const agedBrie = {
regex_matcher: /aged brie/,
qualityChange: (sellIn) => {
if (sellIn <= 0) {
return 2;
} else {
return 1;
}
}
}
function getQualityChange(item) {
if (item.sellIn <= 0) {
return 2;
} else {
return 1;
}
}
function is(item) {
return item.name.toLowerCase().match(/aged brie/);
};
module.exports = { updateQuality, is };
module.exports = { agedBrie };

View File

@ -1,23 +1,16 @@
function updateQuality(item) {
if (is(item)) {
item.quality += getQualityChange(item);
const backstagePass = {
regex_matcher: /backstage pass/,
qualityChange: (sellIn, quality) => {
if (sellIn <= 0) {
return -quality;
} else if (sellIn <= 5) {
return 3;
} else if (sellIn <= 10) {
return 2;
} else {
return 1;
}
}
}
function getQualityChange(item) {
if (item.sellIn <= 0) {
return -item.quality;
} else if (item.sellIn <= 5) {
return 3;
} else if (item.sellIn <= 10) {
return 2;
} else {
return 1;
}
}
function is(item) {
return item.name.toLowerCase().match(/backstage pass/);
};
module.exports = { updateQuality, is };
module.exports = { backstagePass };

View File

@ -1,7 +1,9 @@
var standardItem = require('./standard_update.js')
var backstagePass = require('./backstage_pass_update.js')
var agedBrie = require('./aged_brie_update.js')
var sulfuras = require('./sulfuras_update.js')
const standardItem = require('./standard_update.js')
const backstagePass = require('./backstage_pass_update.js')
const agedBrie = require('./aged_brie_update.js')
const sulfuras = require('./sulfuras_update.js')
const itemTypes = [backstagePass.backstagePass, agedBrie.agedBrie, sulfuras.sulfuras]
class Shop {
constructor(items = []) {
@ -27,10 +29,12 @@ class Shop {
}
_conditionallyUpdateQuality(item) {
standardItem.updateQuality(item);
backstagePass.updateQuality(item);
agedBrie.updateQuality(item);
sulfuras.updateQuality(item);
for (const itemType of itemTypes) {
if (item.name.toLowerCase().match(itemType.regex_matcher)) {
return item.quality += itemType.qualityChange(item.sellIn, item.quality);
}
}
return item.quality += standardItem.standardItem.qualityChange(item.sellIn);
}
_updateItemSellIn(item) {

View File

@ -1,23 +1,11 @@
var backstagePass = require('./backstage_pass_update.js')
var agedBrie = require('./aged_brie_update.js')
var sulfuras = require('./sulfuras_update.js')
function updateQuality(item) {
if (is(item)) {
item.quality += getQualityChange(item);
const standardItem = {
qualityChange: (sellIn) => {
if (sellIn <= 0) {
return -2;
} else {
return -1;
}
}
}
function getQualityChange(item) {
if (item.sellIn <= 0) {
return -2;
} else {
return -1;
}
}
function is(item) {
return !(backstagePass.is(item) || agedBrie.is(item) || sulfuras.is(item))
};
module.exports = { updateQuality };
module.exports = { standardItem };

View File

@ -1,15 +1,8 @@
function updateQuality(item) {
if (is(item)) {
item.quality += getQualityChange(item);
const sulfuras = {
regex_matcher: /sulfuras/,
qualityChange: () => {
return 0;
}
}
function getQualityChange(item) {
return 0;
}
function is(item) {
return item.name.toLowerCase().match(/sulfuras/);
};
module.exports = { updateQuality, is };
module.exports = { sulfuras };