UNPKG

2.35 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.README_TEMPLATE_FILE_PATH = exports.PLAYER_CODE_TEMPLATE_FILE_PATH = undefined;
7
8var _fs = require('fs');
9
10var _fs2 = _interopRequireDefault(_fs);
11
12var _path = require('path');
13
14var _path2 = _interopRequireDefault(_path);
15
16var _ejs = require('ejs');
17
18var _ejs2 = _interopRequireDefault(_ejs);
19
20var _getFloorMap = require('./utils/getFloorMap');
21
22var _getFloorMap2 = _interopRequireDefault(_getFloorMap);
23
24var _getFloorMapKey = require('./utils/getFloorMapKey');
25
26var _getFloorMapKey2 = _interopRequireDefault(_getFloorMapKey);
27
28function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
30const templatesPath = _path2.default.resolve(__dirname, '..', 'templates');
31const PLAYER_CODE_TEMPLATE_FILE_PATH = exports.PLAYER_CODE_TEMPLATE_FILE_PATH = _path2.default.join(templatesPath, 'Player.js');
32const README_TEMPLATE_FILE_PATH = exports.README_TEMPLATE_FILE_PATH = _path2.default.join(templatesPath, 'README.md.ejs');
33
34/** Class representing a profile generator. */
35class ProfileGenerator {
36 /**
37 * Creates a profile generator.
38 *
39 * @param {Profile} profile The profile.
40 * @param {Object} level The level.
41 */
42 constructor(profile, level) {
43 this.profile = profile;
44 this.level = level;
45 }
46
47 /**
48 * Generates the profile files (README and, if first level, player code).
49 */
50 generate() {
51 this.generateReadmeFile();
52 if (this.profile.levelNumber === 1) {
53 this.generatePlayerCodeFile();
54 }
55 }
56
57 /**
58 * Generates the README file (README.md).
59 */
60 generateReadmeFile() {
61 const template = _fs2.default.readFileSync(README_TEMPLATE_FILE_PATH, 'utf8');
62 const data = {
63 getFloorMap: _getFloorMap2.default,
64 getFloorMapKey: _getFloorMapKey2.default,
65 profile: this.profile,
66 level: this.level
67 };
68 const options = { filename: README_TEMPLATE_FILE_PATH };
69 const renderedReadme = _ejs2.default.render(template, data, options);
70 _fs2.default.writeFileSync(this.profile.getReadmeFilePath(), renderedReadme);
71 }
72
73 /**
74 * Generates the player code file (Player.js).
75 */
76 generatePlayerCodeFile() {
77 _fs2.default.copyFileSync(PLAYER_CODE_TEMPLATE_FILE_PATH, this.profile.getPlayerCodeFilePath());
78 }
79}
80
81exports.default = ProfileGenerator;
\No newline at end of file