Skip to content

Commit ae41f15

Browse files
author
Badacadabra
committed
Refactor idiomatic patterns using modules
1 parent e838eaf commit ae41f15

File tree

245 files changed

+3831
-3393
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

245 files changed

+3831
-3393
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
'use strict'
2+
3+
# ==============================
4+
# GO GO GO!
5+
# ==============================
6+
7+
go = (nextRelay) ->
8+
res = ""
9+
if nextRelay? then res += nextRelay.go() else res += ""
10+
res
11+
12+
# ==============================
13+
# RACERS
14+
# ==============================
15+
16+
walker =
17+
go: ->
18+
"""
19+
Walker: go!
20+
#{go(@nextRelay)}
21+
"""
22+
23+
runner =
24+
go: ->
25+
"""
26+
Runner: go!
27+
#{go(@nextRelay)}
28+
"""
29+
30+
swimmer =
31+
go: ->
32+
"""
33+
Swimmer: go!
34+
#{go(@nextRelay)}
35+
"""
36+
37+
module.exports =
38+
walker: walker
39+
runner: runner
40+
swimmer: swimmer
Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,12 @@
11
'use strict'
22

3-
go = (nextRelay) ->
4-
res = ""
5-
if nextRelay? then res += nextRelay.go() else res += ""
6-
res
3+
race = require './API/race'
74

85
# ==============================
9-
# RACERS
6+
# CLIENT CODE
107
# ==============================
118

12-
walker =
13-
go: ->
14-
"""
15-
Walker: go!
16-
#{go(@nextRelay)}
17-
"""
9+
race.walker.nextRelay = race.runner
10+
race.runner.nextRelay = race.swimmer
1811

19-
runner =
20-
go: ->
21-
"""
22-
Runner: go!
23-
#{go(@nextRelay)}
24-
"""
25-
26-
swimmer =
27-
go: ->
28-
"""
29-
Swimmer: go!
30-
#{go(@nextRelay)}
31-
"""
32-
33-
# ==============================
34-
# TEST
35-
# ==============================
36-
37-
walker.nextRelay = runner
38-
runner.nextRelay = swimmer
39-
40-
console.log walker.go()
12+
console.log race.walker.go()
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'use strict';
2+
3+
// ==============================
4+
// GO GO GO!
5+
// ==============================
6+
7+
var go = function (nextRelay) {
8+
var res = "";
9+
if (nextRelay === undefined) {
10+
res += "";
11+
} else {
12+
res += nextRelay.go();
13+
}
14+
return res;
15+
};
16+
17+
// ==============================
18+
// RACERS
19+
// ==============================
20+
21+
var walker = {
22+
go: function () {
23+
return "Walker: go!\n" + go(this.nextRelay);
24+
}
25+
};
26+
27+
var runner = {
28+
go: function () {
29+
return "Runner: go!\n" + go(this.nextRelay);
30+
}
31+
};
32+
33+
var swimmer = {
34+
go: function () {
35+
return "Swimmer: go!\n" + go(this.nextRelay);
36+
}
37+
};
38+
39+
module.exports = {
40+
walker: walker,
41+
runner: runner,
42+
swimmer: swimmer
43+
};
Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,12 @@
11
'use strict';
22

3-
var go = function (nextRelay) {
4-
var res = "";
5-
if (nextRelay === undefined) {
6-
res += "";
7-
} else {
8-
res += nextRelay.go();
9-
}
10-
return res;
11-
};
3+
var race = require('./API/race');
124

135
// ==============================
14-
// RACERS
6+
// CLIENT CODE
157
// ==============================
168

17-
var walker = {
18-
go: function () {
19-
return "Walker: go!\n" + go(this.nextRelay);
20-
}
21-
};
9+
race.walker.nextRelay = race.runner;
10+
race.runner.nextRelay = race.swimmer;
2211

23-
var runner = {
24-
go: function () {
25-
return "Runner: go!\n" + go(this.nextRelay);
26-
}
27-
};
28-
29-
var swimmer = {
30-
go: function () {
31-
return "Swimmer: go!\n" + go(this.nextRelay);
32-
}
33-
};
34-
35-
// ==============================
36-
// TEST
37-
// ==============================
38-
39-
walker.nextRelay = runner;
40-
runner.nextRelay = swimmer;
41-
42-
console.log(walker.go());
12+
console.log(race.walker.go());
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// ==============================
2+
// GO GO GO!
3+
// ==============================
4+
5+
const go = nextRelay => {
6+
let res = "";
7+
if (nextRelay === undefined) {
8+
res += "";
9+
} else {
10+
res += nextRelay.go();
11+
}
12+
return res;
13+
};
14+
15+
// ==============================
16+
// RACERS
17+
// ==============================
18+
19+
export const walker = {
20+
go() {
21+
return `Walker: go!
22+
${go(this.nextRelay)}`;
23+
}
24+
};
25+
26+
export const runner = {
27+
go() {
28+
return `Runner: go!
29+
${go(this.nextRelay)}`;
30+
}
31+
};
32+
33+
export const swimmer = {
34+
go() {
35+
return `Swimmer: go!
36+
${go(this.nextRelay)}`;
37+
}
38+
};

idiomatic/GoF/Behavioral/ChainOfResponsibility/ECMAScript/ES6/client.js

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,7 @@
1-
// ==============================
2-
// RACERS
3-
// ==============================
4-
5-
const walker = {
6-
go() {
7-
return `Walker: go!
8-
${go(this.nextRelay)}`;
9-
}
10-
};
11-
12-
const runner = {
13-
go() {
14-
return `Runner: go!
15-
${go(this.nextRelay)}`;
16-
}
17-
};
18-
19-
const swimmer = {
20-
go() {
21-
return `Swimmer: go!
22-
${go(this.nextRelay)}`;
23-
}
24-
};
25-
26-
// ==============================
27-
// REQUEST (START)
28-
// ==============================
29-
30-
const go = nextRelay => {
31-
let res = "";
32-
if (nextRelay === undefined) {
33-
res += "";
34-
} else {
35-
res += nextRelay.go();
36-
}
37-
return res;
38-
};
1+
import { walker, runner, swimmer } from './API/race';
392

403
// ==============================
41-
// TEST
4+
// CLIENT CODE
425
// ==============================
436

447
walker.nextRelay = runner;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// ==============================
2+
// GO GO GO!
3+
// ==============================
4+
5+
const go: (nextRelay: Racer) => string = function (nextRelay: Racer): string {
6+
let res = "";
7+
if (nextRelay === undefined) {
8+
res += "";
9+
} else {
10+
res += nextRelay.go();
11+
}
12+
return res;
13+
};
14+
15+
// ==============================
16+
// RACERS
17+
// ==============================
18+
19+
export interface Racer {
20+
nextRelay?: Racer;
21+
go(): string;
22+
}
23+
24+
export const walker: Racer = {
25+
go() {
26+
return `Walker: go!
27+
${go(this.nextRelay)}`;
28+
}
29+
};
30+
31+
export const runner: Racer = {
32+
go() {
33+
return `Runner: go!
34+
${go(this.nextRelay)}`;
35+
}
36+
};
37+
38+
export const swimmer: Racer = {
39+
go() {
40+
return `Swimmer: go!
41+
${go(this.nextRelay)}`;
42+
}
43+
};

idiomatic/GoF/Behavioral/ChainOfResponsibility/TypeScript/client.ts

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,7 @@
1-
// ==============================
2-
// RACERS
3-
// ==============================
4-
5-
interface Racer {
6-
nextRelay?: Racer;
7-
go(): string;
8-
}
9-
10-
const walker: Racer = {
11-
go() {
12-
return `Walker: go!
13-
${go(this.nextRelay)}`;
14-
}
15-
};
16-
17-
const runner: Racer = {
18-
go() {
19-
return `Runner: go!
20-
${go(this.nextRelay)}`;
21-
}
22-
};
23-
24-
const swimmer: Racer = {
25-
go() {
26-
return `Swimmer: go!
27-
${go(this.nextRelay)}`;
28-
}
29-
};
30-
31-
// ==============================
32-
// REQUEST (START)
33-
// ==============================
34-
35-
const go: (nextRelay: Racer) => string = function (nextRelay: Racer): string {
36-
let res = "";
37-
if (nextRelay === undefined) {
38-
res += "";
39-
} else {
40-
res += nextRelay.go();
41-
}
42-
return res;
43-
};
1+
import { walker, runner, swimmer } from './API/race';
442

453
// ==============================
46-
// TEST
4+
// CLIENT CODE
475
// ==============================
486

497
walker.nextRelay = runner;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict'
2+
3+
# ==============================
4+
# CUSTOMER
5+
# ==============================
6+
7+
module.exports =
8+
pay: ->
9+
"Payment OK!\n"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict'
2+
3+
# ==============================
4+
# ORDER
5+
# ==============================
6+
7+
module.exports =
8+
deliver: ->
9+
@customer.pay()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
'use strict'
2+
3+
# ==============================
4+
# RESTAURANT
5+
# ==============================
6+
7+
module.exports =
8+
orders: []
9+
addOrder: (order) ->
10+
@orders.push order
11+
prepareOrders: ->
12+
summary = ""
13+
summary += order.deliver() for order in @orders
14+
summary

0 commit comments

Comments
 (0)