Skip to content

Commit 3650763

Browse files
committed
add final page parsing
1 parent e87de1a commit 3650763

24 files changed

+194
-102
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
All notable changes to this project will be documented in this file.
33
This project adheres to [Semantic Versioning](http://semver.org/).
44

5+
## [0.10.0] - 2016-09-16
6+
- add to parser:
7+
- `@resource([link to resource](http://path/to/link))` - collect helpful resource links
8+
- `## Final` fill in the content for the final page after tutorial completion. Matches on page title "Final".
9+
510
## [0.9.1] - 2016-09-15
611
- find tutorials now returns "isLatest" (bool) & "latest": (string of version)
712

lib/build/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function parseAndBuild(dir, lines) {
1717
page: -1,
1818
task: -1,
1919
};
20-
return info_1.info({ dir: dir, result: result, lines: lines, index: index });
20+
return info_1.default({ dir: dir, result: result, lines: lines, index: index });
2121
}
2222
function build(_a) {
2323
var dir = _a.dir, filePath = _a.filePath, _b = _a.output, output = _b === void 0 ? './coderoad.json' : _b;

lib/build/lint.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
var chalk_1 = require('chalk');
33
var validKeys = {
44
info: ['title', 'description'],
5-
page: ['title', 'description', 'onPageComplete', 'tasks', 'video', 'link'],
5+
page: ['title', 'description', 'onPageComplete', 'tasks', 'video', 'resource'],
66
task: ['description', 'tests', 'actions', 'hints']
77
};
88
function lintOutput(json) {

lib/build/parser/actions.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ function addToTasks(_a) {
4747
task: task,
4848
});
4949
break;
50+
case 'resource':
51+
result = doAction({
52+
type: 'resource',
53+
isArray: isActionArray,
54+
actionValue: actionValue,
55+
result: result,
56+
page: page,
57+
task: task
58+
});
59+
break;
5060
case 'continue':
5161
break;
5262
case 'action':

lib/build/parser/final.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
"use strict";
2+
var Match = require('./match');
3+
var import_1 = require('./import');
4+
function final(_a) {
5+
var dir = _a.dir, result = _a.result, lines = _a.lines;
6+
var inCodeBlock = false;
7+
var currentPageComplete = null;
8+
var bracketCount = 0;
9+
result.final = {
10+
description: '',
11+
};
12+
var i = 0;
13+
while (i < lines.length - 1) {
14+
i += 1;
15+
var line = lines[i];
16+
switch (true) {
17+
case !!Match.isImport(line):
18+
lines = import_1.default({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
19+
continue;
20+
case !!Match.codeBlock(line):
21+
if (line.length > 3) {
22+
result.final.description += '\n' + line;
23+
}
24+
else {
25+
inCodeBlock = !inCodeBlock;
26+
}
27+
continue;
28+
case inCodeBlock:
29+
continue;
30+
default:
31+
if (i > 1) {
32+
result.final.description += '\n';
33+
}
34+
result.final.description += line;
35+
continue;
36+
}
37+
}
38+
return result;
39+
}
40+
Object.defineProperty(exports, "__esModule", { value: true });
41+
exports.default = final;

lib/build/parser/import.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ function loadImport(_a) {
2424
var splitLines = importLines.split('\n');
2525
return lines.concat(splitLines);
2626
}
27-
exports.loadImport = loadImport;
27+
Object.defineProperty(exports, "__esModule", { value: true });
28+
exports.default = loadImport;

lib/build/parser/info.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function info(_a) {
1111
var line = lines[i];
1212
switch (true) {
1313
case !!Match.isImport(line):
14-
lines = import_1.loadImport({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
14+
lines = import_1.default({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
1515
continue;
1616
case !!Match.codeBlock(line):
1717
if (line.length > 3) {
@@ -25,7 +25,7 @@ function info(_a) {
2525
result.info.title = Match.info(line).trim();
2626
continue;
2727
case !!Match.page(line):
28-
return page_1.page({ dir: dir, result: result, lines: lines.slice(i), index: index });
28+
return page_1.default({ dir: dir, result: result, lines: lines.slice(i), index: index });
2929
default:
3030
if (i > 1) {
3131
result.info.description += '\n';
@@ -35,4 +35,5 @@ function info(_a) {
3535
}
3636
return result;
3737
}
38-
exports.info = info;
38+
Object.defineProperty(exports, "__esModule", { value: true });
39+
exports.default = info;

lib/build/parser/match.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ var regex = {
88
'##': match('#', 2),
99
'+': match('\\+', 1),
1010
'```': match('`', 3),
11-
'action': /^@(action|test|hint|openConsole|write|writeFromFile)/,
11+
'action': /^@(action|test|hint|openConsole|resource)/,
1212
'import': /^@import\((.+)\)$/,
13-
'onPageComplete': /^(@onPageComplete.+)/
13+
'onPageComplete': /^(@onPageComplete.+)/,
1414
};
1515
function parseWithCode(code) {
1616
return function (line) {

lib/build/parser/page.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@
22
var Match = require('./match');
33
var task_1 = require('./task');
44
var import_1 = require('./import');
5+
var final_1 = require('./final');
56
var cleanup_1 = require('./cleanup');
67
function page(_a) {
78
var dir = _a.dir, result = _a.result, lines = _a.lines, index = _a.index;
89
index.page += 1;
910
index.task = -1;
11+
var title = Match.page(lines[0]);
12+
if (title === 'Final') {
13+
return final_1.default({ dir: dir, result: result, lines: lines });
14+
}
1015
result.pages.push({
11-
title: Match.page(lines[0]),
16+
title: title,
1217
description: ''
1318
});
1419
var inCodeBlock = false;
@@ -20,7 +25,7 @@ function page(_a) {
2025
var line = lines[i];
2126
switch (true) {
2227
case !!Match.isImport(line):
23-
lines = import_1.loadImport({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
28+
lines = import_1.default({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
2429
continue;
2530
case (!!Match.isPageComplete(line) || !!currentPageComplete):
2631
currentPageComplete = !!currentPageComplete
@@ -48,7 +53,7 @@ function page(_a) {
4853
if (result.pages[index.page].tasks === undefined) {
4954
result.pages[index.page].tasks = [];
5055
}
51-
return task_1.task({ dir: dir, result: result, lines: lines.slice(i), index: index });
56+
return task_1.default({ dir: dir, result: result, lines: lines.slice(i), index: index });
5257
default:
5358
if (i > 1) {
5459
result.pages[index.page].description += '\n';
@@ -59,4 +64,5 @@ function page(_a) {
5964
}
6065
return result;
6166
}
62-
exports.page = page;
67+
Object.defineProperty(exports, "__esModule", { value: true });
68+
exports.default = page;

lib/build/parser/task.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function task(_a) {
2020
var line = lines[i];
2121
switch (true) {
2222
case !!Match.isImport(line):
23-
lines = import_1.loadImport({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
23+
lines = import_1.default({ dir: dir, lines: lines, pathToMd: Match.isImport(line) });
2424
continue;
2525
case (!!Match.isPageComplete(line) || !!currentPageComplete):
2626
currentPageComplete = !!currentPageComplete
@@ -69,7 +69,7 @@ function task(_a) {
6969
case !!Match.task(line):
7070
return task({ dir: dir, result: result, lines: lines.slice(i), index: index });
7171
case !!Match.page(line):
72-
return page_1.page({ dir: dir, result: result, lines: lines.slice(i), index: index });
72+
return page_1.default({ dir: dir, result: result, lines: lines.slice(i), index: index });
7373
default:
7474
if (i > 0) {
7575
result.pages[index.page].tasks[index.task].description += '\n';
@@ -79,4 +79,5 @@ function task(_a) {
7979
}
8080
return result;
8181
}
82-
exports.task = task;
82+
Object.defineProperty(exports, "__esModule", { value: true });
83+
exports.default = task;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy