Skip to content

Commit 193bc7f

Browse files
committed
repair tutorial.config
1 parent c682dc4 commit 193bc7f

File tree

10 files changed

+59
-35
lines changed

10 files changed

+59
-35
lines changed

lib/components/Tutorials/SelectTutorial/index.js

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ var SelectTutorial = (function (_super) {
3333
};
3434
SelectTutorial.prototype.render = function () {
3535
var _a = this.props, tutorial = _a.tutorial, selectTutorial = _a.selectTutorial;
36-
console.log('tutorial', tutorial);
3736
var name = tutorial.name;
3837
return (React.createElement(FlatButton_1.default, {label: this.displayName(name), primary: true, onTouchTap: selectTutorial.bind(this, name)}));
3938
};

lib/modules/page/task-actions/index.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
var types_1 = require('../types');
33
var handle_actions_1 = require('./handle-actions');
44
var taskPositionTracker = 0;
5-
function taskActionsReducer(taskActions, action) {
6-
if (taskActions === void 0) { taskActions = []; }
5+
function taskActionsReducer(t, action) {
6+
if (t === void 0) { t = []; }
77
var actions = null;
88
switch (action.type) {
99
case types_1.PAGE_SET:
@@ -21,18 +21,18 @@ function taskActionsReducer(taskActions, action) {
2121
handle_actions_1.default(actions);
2222
return actions;
2323
case 'TEST_RESULT':
24-
actions = action.payload.taskActions || [];
25-
var nextTaskPosition = action.payload.result.taskPosition;
24+
var _b = action.payload, taskActions = _b.taskActions, result = _b.result;
25+
var nextTaskPosition = result.taskPosition;
2626
var times = nextTaskPosition - taskPositionTracker;
2727
if (times > 0) {
2828
for (var i = 0; i < times; i++) {
2929
handle_actions_1.default(actions);
3030
}
3131
taskPositionTracker = nextTaskPosition;
3232
}
33-
return actions;
34-
default:
3533
return taskActions;
34+
default:
35+
return t;
3636
}
3737
}
3838
Object.defineProperty(exports, "__esModule", { value: true });

lib/modules/tests/test-run/parse-loaders.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var path_1 = require('path');
33
var fs_1 = require('fs');
44
var comments = {
55
py: '#',
6+
js: '\/{2,3}',
67
};
78
function loaderRegex(fileType) {
89
var comment = '\/{2,3}';
@@ -27,7 +28,7 @@ function parseLoaders(data, fileType, tutorial, dir) {
2728
}
2829
var pathToFile = null;
2930
if (loader[2]) {
30-
var tutorialDir = tutorial.config.dir;
31+
var tutorialDir = tutorial.packageJson.config.dir || 'tutorial';
3132
pathToFile = path_1.normalize(path_1.join(tutorialDir, fileToLoad));
3233
}
3334
else {

lib/modules/tutorial/reducer.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"use strict";
22
var path_1 = require('path');
3+
var config_1 = require('./utils/config');
34
var types_1 = require('./types');
45
var config_paths_1 = require('./utils/config-paths');
56
var _tutorial = {
@@ -8,24 +9,26 @@ var _tutorial = {
89
pages: [],
910
packageJson: null,
1011
};
11-
function tutorialReducer(tutorial, action) {
12-
if (tutorial === void 0) { tutorial = _tutorial; }
12+
function tutorialReducer(t, action) {
13+
if (t === void 0) { t = _tutorial; }
1314
switch (action.type) {
1415
case types_1.TUTORIAL_SET:
1516
var _a = action.payload, name_1 = _a.name, dir = _a.dir;
1617
var packagePath = path_1.join(dir, 'node_modules', name_1);
1718
var packageJson = require(path_1.join(packagePath, 'package.json'));
18-
console.log(packageJson);
19-
var _b = require(path_1.join(packagePath, packageJson.main)), info = _b.info, pages = _b.pages;
20-
pages = config_paths_1.default(dir, name_1, packageJson.config, pages || []);
19+
var config = config_1.tutorialConfig(packageJson, dir);
20+
var coderoadJsonPath = path_1.join(packagePath, packageJson.main);
21+
var _b = require(coderoadJsonPath), info = _b.info, pages = _b.pages;
22+
pages = config_paths_1.default(dir, name_1, config, pages || []);
2123
return {
2224
name: packageJson.name,
2325
info: info,
2426
pages: pages,
2527
packageJson: packageJson,
28+
config: config,
2629
};
2730
default:
28-
return tutorial;
31+
return t;
2932
}
3033
}
3134
Object.defineProperty(exports, "__esModule", { value: true });

lib/store.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var redux_thunk_1 = require('redux-thunk');
77
var middlewares = [redux_thunk_1.default];
88
var throttleTestRun = redux_throttle_actions_1.default(['TEST_RUN'], 800);
99
middlewares.push(throttleTestRun);
10-
var devMode = false;
10+
var devMode = true;
1111
if (devMode) {
1212
var logger = createLogger();
1313
middlewares.push(logger);

src/modules/page/page-position/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ export default function pagePosition(
88
case PAGE_SET:
99
return action.payload.pagePosition;
1010

11-
// allow access until before first incomplete tutorial
1211
case 'PROGRESS_PAGE_POSITION':
12+
// allow access until before first incomplete tutorial
1313
const pages = action.payload.progress.pages;
1414
const firstFail = pages.indexOf(false);
1515
return firstFail < 0 ? pages.length - 1 : firstFail;

src/modules/page/task-actions/index.ts

+17-9
Original file line numberDiff line numberDiff line change
@@ -5,42 +5,50 @@ import handleTaskActions from './handle-actions';
55
let taskPositionTracker = 0;
66

77
export default function taskActionsReducer(
8-
taskActions = [], action: Action
8+
t = [], action: Action
99
): string[][] {
1010
let actions: string[][] = null;
1111
switch (action.type) {
1212

13-
// load task actions
1413
case PAGE_SET:
14+
// load task actions
1515
const {tasks, pagePosition, progress} = action.payload;
16+
1617
const isCompleted = progress.pages[pagePosition];
1718
if (!isCompleted) {
19+
// if page is completed, mark tasks as completed
1820
actions = tasks.map(task => task.actions || []);
1921
} else {
2022
// filter to only 'open' actions
2123
actions = tasks.map(task => {
2224
return task.actions.filter(a => !!a.match(/^open/));
2325
});
2426
}
27+
// page loads - reset tracker
2528
taskPositionTracker = 0;
26-
handleTaskActions(actions); // run first action
29+
// run first action
30+
handleTaskActions(actions);
2731
return actions;
2832

29-
// run task actions
3033
case 'TEST_RESULT':
31-
actions = action.payload.taskActions || [];
32-
const nextTaskPosition = action.payload.result.taskPosition;
34+
const {taskActions, result} = action.payload;
35+
// task position from test result
36+
const nextTaskPosition = result.taskPosition;
37+
// calculate task position difference
3338
const times: number = nextTaskPosition - taskPositionTracker;
39+
//
3440
if (times > 0) {
3541
// run actions for each task position passed
3642
for (let i = 0; i < times; i++) {
37-
handleTaskActions(actions); // run first action
43+
// run action
44+
handleTaskActions(actions);
3845
}
46+
// set current task position
3947
taskPositionTracker = nextTaskPosition;
4048
}
41-
return actions;
49+
return taskActions;
4250

4351
default:
44-
return taskActions;
52+
return t;
4553
}
4654
}

src/modules/page/task-tests/index.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ export default function taskTestsReducer(
88

99
case PAGE_SET:
1010
const {tutorial, tasks} = action.payload;
11+
// map over task tests from coderoad.json
1112
return [].concat.apply([], tasks.map(
12-
task => task.tests || [])
13+
task => task.tests || []
14+
)
15+
// concat test files together
1316
).reduce((output: string, file: string): string => {
1417
try {
1518
output += readFileSync(file, 'utf8') + '\n';
1619
} catch (e) {
1720
console.log('Error reading test file', e);
1821
}
22+
// return concatted test files
1923
return output;
2024
}, '');
2125

src/modules/tests/test-run/parse-loaders.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import {normalize, join} from 'path';
22
import {readFileSync} from 'fs';
33

4-
// other languages may handle comments differently
4+
// TODO: load comments from core-coderoad/lib/options
5+
56
const comments = {
67
py: '#',
8+
js: '\/{2,3}',
79
};
810

911
function loaderRegex(fileType: string): RegExp {
@@ -40,9 +42,8 @@ export default function parseLoaders(
4042

4143
let pathToFile: string = null;
4244
if (loader[2]) {
43-
// path to file from tutorial directory
44-
const tutorialDir = tutorial.config.dir;
45-
pathToFile = normalize(join(tutorialDir, fileToLoad));
45+
// path to file from config specified dir
46+
pathToFile = normalize(join(tutorial.config.dir, fileToLoad));
4647
} else {
4748
// path to file from working directory
4849
pathToFile = normalize(join(dir, fileToLoad));

src/modules/tutorial/reducer.ts

+13-5
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,34 @@ const _tutorial: CR.Tutorial = {
1111
};
1212

1313
export default function tutorialReducer(
14-
tutorial = _tutorial, action: Action
14+
t = _tutorial, action: Action
1515
): CR.Tutorial {
1616
switch (action.type) {
1717

1818
case TUTORIAL_SET:
1919
const {name, dir} = action.payload;
20+
21+
// get tutorial package.json
2022
const packagePath: string = join(dir, 'node_modules', name);
2123
const packageJson: PackageJson = require(join(packagePath, 'package.json'));
22-
// const config: Tutorial.Config = tutorialConfig(packageJson, dir);
23-
let {info, pages} = require(join(packagePath, packageJson.main));
24+
25+
const config: Tutorial.Config = tutorialConfig(packageJson, dir);
26+
const coderoadJsonPath = join(packagePath, packageJson.main);
27+
let {info, pages} = require(coderoadJsonPath);
28+
2429
// configure test paths to absolute paths
25-
pages = configPaths(dir, name, packageJson.config, pages || []);
30+
pages = configPaths(dir, name, config, pages || []);
31+
32+
// return tutorial (info, pages) & tutorial package.json
2633
return {
2734
name: packageJson.name,
2835
info,
2936
pages,
3037
packageJson,
38+
config,
3139
};
3240

3341
default:
34-
return tutorial;
42+
return t;
3543
}
3644
}

0 commit comments

Comments
 (0)