Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions 02-OOP-inheritance/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Topic 2</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

</head>
<body>

<script type="module" src="js/src/main.js"></script>
<script type="module" src="js/bundle.js"></script>
</body>
</html>
16 changes: 16 additions & 0 deletions 02-OOP-inheritance/js/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const presets = [
[
"@babel/env",
{
targets: {
edge: "17",
firefox: "60",
chrome: "67",
safari: "11.1",
},
useBuiltIns: "usage",
},
],
];

module.exports = { presets };
166 changes: 166 additions & 0 deletions 02-OOP-inheritance/js/bundle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

class actor {
constructor(tempName, tempAge) {
this.name = tempName;
this.age = tempAge;
}

}

exports.default = actor;
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

require("core-js/modules/web.dom.iterable");

class EventEmitter {
constructor() {
this.event = {};
}

on(eventName, callback) {
if (!this.event[eventName]) {
this.event[eventName] = [];
}

this.event[eventName].push(callback);
}

emit(eventName) {
const emmet = this.event[eventName];

if (emmet) {
emmet.forEach(funct => {
funct.call(this);
});
}
}

off(eventName, callback) {
if (this.event[eventName]) {
this.event[eventName].delete(callback);
}
}

}

exports.default = EventEmitter;
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

class logger {
constructor() {}

log(info) {
console.log("the " + info + " has been emitted");
}

}

exports.default = logger;
"use strict";

var _Movie = _interopRequireDefault(require("./Movie.js"));

var _Actor = _interopRequireDefault(require("./Actor.js"));

var _Logger = _interopRequireDefault(require("./Logger.js"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var name = "Terminator";
var year = "1991";
var duration = "90";
let example = new _Movie.default(name, year, duration);
const actors = [new _Actor.default('Paul Winfield', 50), new _Actor.default('Michael Biehn', 50), new _Actor.default('Linda Hamilton', 50)];
var logge = new _Logger.default();
example.addCast(actors);
example.on("play", logge.log("play"));
example.play();
example.share("Juan");
example.like("Pedro");
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

require("core-js/modules/web.dom.iterable");

var _EventEmiter = _interopRequireDefault(require("./EventEmiter.js"));

var _SocialMixing = _interopRequireDefault(require("./SocialMixing.js"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

class Movie extends _EventEmiter.default {
constructor(tempTitle, tempYear, tempDuration) {
super();
this.title = tempTitle;
this.year = tempYear;
this.duration = tempDuration;
Object.assign(this, _SocialMixing.default);
}

play() {
this.emit("Play");
}

pause() {
this.emit("Pause");
}

resume() {
this.emit("Resume");
}

addCast(cast) {
if (!this.cast) {
this.cast = [];
}

if (Array.isArray(cast)) {
cast.forEach(actor => {
this.cast.push(actor);
});
} else {
this.cast.push(cast);
}
}

}

exports.default = Movie;
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var socialMixing = {
share(friendName) {
console.log(friendName + " share " + this.title);
},

like(friendName) {
console.log(friendName + ' like ' + this.title);
}

};
var _default = socialMixing;
exports.default = _default;
16 changes: 16 additions & 0 deletions 02-OOP-inheritance/js/lib/Actor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

class actor {
constructor(tempName, tempAge) {
this.name = tempName;
this.age = tempAge;
}

}

exports.default = actor;
41 changes: 41 additions & 0 deletions 02-OOP-inheritance/js/lib/EventEmiter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

require("core-js/modules/web.dom.iterable");

class EventEmitter {
constructor() {
this.event = {};
}

on(eventName, callback) {
if (!this.event[eventName]) {
this.event[eventName] = [];
}

this.event[eventName].push(callback);
}

emit(eventName) {
const emmet = this.event[eventName];

if (emmet) {
emmet.forEach(funct => {
funct.call(this);
});
}
}

off(eventName, callback) {
if (this.event[eventName]) {
this.event[eventName].delete(callback);
}
}

}

exports.default = EventEmitter;
17 changes: 17 additions & 0 deletions 02-OOP-inheritance/js/lib/Logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

class logger {
constructor() {}

log(info) {
console.log("the " + info + " has been emitted");
}

}

exports.default = logger;
53 changes: 53 additions & 0 deletions 02-OOP-inheritance/js/lib/Movie.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

require("core-js/modules/web.dom.iterable");

var _EventEmiter = _interopRequireDefault(require("./EventEmiter.js"));

var _SocialMixing = _interopRequireDefault(require("./SocialMixing.js"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

class Movie extends _EventEmiter.default {
constructor(tempTitle, tempYear, tempDuration) {
super();
this.title = tempTitle;
this.year = tempYear;
this.duration = tempDuration;
Object.assign(this, _SocialMixing.default);
}

play() {
this.emit("Play");
}

pause() {
this.emit("Pause");
}

resume() {
this.emit("Resume");
}

addCast(cast) {
if (!this.cast) {
this.cast = [];
}

if (Array.isArray(cast)) {
cast.forEach(actor => {
this.cast.push(actor);
});
} else {
this.cast.push(cast);
}
}

}

exports.default = Movie;
18 changes: 18 additions & 0 deletions 02-OOP-inheritance/js/lib/SocialMixing.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var socialMixing = {
share(friendName) {
console.log(friendName + " share " + this.title);
},

like(friendName) {
console.log(friendName + ' like ' + this.title);
}

};
var _default = socialMixing;
exports.default = _default;
24 changes: 24 additions & 0 deletions 02-OOP-inheritance/js/lib/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
"use strict";
const babel = require("@babel/core");

babel.transform("code", optionsObject);

var _Movie = _interopRequireDefault(require("./Movie.js"));

var _Actor = _interopRequireDefault(require("./Actor.js"));

var _Logger = _interopRequireDefault(require("./Logger.js"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var name = "Terminator";
var year = "1991";
var duration = "90";
let example = new _Movie.default(name, year, duration);
const actors = [new _Actor.default('Paul Winfield', 50), new _Actor.default('Michael Biehn', 50), new _Actor.default('Linda Hamilton', 50)];
var logge = new _Logger.default();
example.addCast(actors);
example.on("play", logge.log("play"));
example.play();
example.share("Juan");
example.like("Pedro");
Loading