Total Complexity | 6 |
Complexity/F | 6 |
Lines of Code | 46 |
Function Count | 1 |
Duplicated Lines | 46 |
Ratio | 100 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | /* eslint-env node */ |
||
3 | View Code Duplication | 'use strict'; |
|
|
|||
4 | |||
5 | const jsonfile = require('jsonfile'); |
||
6 | const template = require('lodash.template'); |
||
7 | |||
8 | const args = process.argv.slice(2); |
||
9 | |||
10 | let upgrades = jsonfile.readFileSync(args[0]+'/data/exotic_upgrades.json'); |
||
11 | let generators = jsonfile.readFileSync(args[0]+'/data/generators.json'); |
||
12 | |||
13 | for(let key in upgrades){ |
||
14 | let upgrade = upgrades[key]; |
||
15 | if(!upgrade.prices){ |
||
16 | continue; |
||
17 | } |
||
18 | let nameTemplate = template(upgrade.name); |
||
19 | let descriptionTemplate = template(upgrade.description); |
||
20 | for(let i in upgrade.prices){ |
||
21 | let generatedUpgrade = clone(upgrade); |
||
22 | delete generatedUpgrade.prices; |
||
23 | let price = upgrade.prices[i]; |
||
24 | generatedUpgrade.price = price; |
||
25 | generatedUpgrade.name = nameTemplate({'id': i}); |
||
26 | generatedUpgrade.description = descriptionTemplate({'id': i}); |
||
27 | for(let index in generatedUpgrade.function){ |
||
28 | generatedUpgrade.function[index] = template(generatedUpgrade.function[index])({'id': i}); |
||
29 | } |
||
30 | for(let index in generatedUpgrade.exotic_deps){ |
||
31 | generatedUpgrade.exotic_deps[index] = template(generatedUpgrade.exotic_deps[index])({'id': i}); |
||
32 | } |
||
33 | let id = key+'-'+i; |
||
34 | upgrades[id] = generatedUpgrade; |
||
35 | } |
||
36 | delete upgrades[key]; |
||
37 | } |
||
38 | |||
39 | function clone(a) { |
||
40 | return JSON.parse(JSON.stringify(a)); |
||
41 | } |
||
42 | |||
43 | jsonfile.writeFileSync(args[0] + '/data/exotic_upgrades.json', upgrades, { |
||
44 | spaces: 2 |
||
45 | }); |
||
46 | jsonfile.writeFileSync(args[0] + '/data/generators.json', generators, { |
||
47 | spaces: 2 |
||
48 | }); |
||
49 |