Skip to content

Commit 49919f2

Browse files
committed
allow codeblock languages
1 parent 0bafe61 commit 49919f2

File tree

6 files changed

+99
-67
lines changed

6 files changed

+99
-67
lines changed

cli.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var tutorials_1 = require('./src/tutorials/tutorials');
1010
var publish_1 = require('./src/publish/publish');
1111
var docs_1 = require('./src/docs/docs');
1212
program
13-
.version('0.3.11')
13+
.version('0.3.12')
1414
.usage('[options] <keywords>')
1515
.option('-b, --build [path/to/tutorial.md]', 'tutorial markdown file', /^.+\.md$/i)
1616
.option('-c, --create [name]', 'tutorial name')

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "coderoad-cli",
3-
"version": "0.3.11",
3+
"version": "0.3.12",
44
"description": "Command line interface for CodeRoad. Build project files.",
55
"keywords": [
66
"coderoad"

src/build/parser/chapter.js

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,45 @@ function chapter(result, lines, index) {
99
title: Match.chapter(lines[0]).trim(),
1010
pages: []
1111
});
12+
var inCodeBlock = false;
1213
var i = 0;
1314
while (i < lines.length - 1) {
1415
i += 1;
1516
var line = lines[i];
1617
var importFile = Match.isImport(line);
1718
if (!!importFile) {
1819
lines = import_1.loadImport(lines, importFile);
20+
continue;
1921
}
20-
else {
22+
if (!!Match.codeBlock(line)) {
23+
if (line.length > 3) {
24+
result = addToDescription(i, result, line, index);
25+
continue;
26+
}
27+
inCodeBlock = !inCodeBlock;
28+
}
29+
if (!inCodeBlock) {
2130
if (Match.page(line)) {
2231
return page_1.page(result, lines.slice(i), index);
2332
}
2433
else if (Match.chapter(line) && i > 1) {
2534
return chapter(result, lines.slice(i), index);
2635
}
2736
else {
28-
if (result.chapters[index.chapter].description === undefined) {
29-
result.chapters[index.chapter].description = '';
30-
}
31-
if (i > 1) {
32-
result.chapters[index.chapter].description += '\n';
33-
}
34-
result.chapters[index.chapter].description += line;
37+
result = addToDescription(i, result, line, index);
3538
}
3639
}
3740
}
3841
return result;
3942
}
4043
exports.chapter = chapter;
44+
function addToDescription(i, result, line, index) {
45+
if (result.chapters[index.chapter].description === undefined) {
46+
result.chapters[index.chapter].description = '';
47+
}
48+
if (i > 1) {
49+
result.chapters[index.chapter].description += '\n';
50+
}
51+
result.chapters[index.chapter].description += line;
52+
return result;
53+
}

src/build/parser/page.js

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,33 @@ function page(result, lines, index) {
1818
var importFile = Match.isImport(line);
1919
if (!!importFile) {
2020
lines = import_1.loadImport(lines, importFile);
21+
continue;
2122
}
22-
else {
23-
if (!!Match.codeBlock(line)) {
24-
if (line.length > 3) {
25-
result = addToDescriptionOrExplanation(hasBreak, i, result, line, index);
26-
continue;
27-
}
28-
inCodeBlock = !inCodeBlock;
23+
if (!!Match.codeBlock(line)) {
24+
if (line.length > 3) {
25+
result = addToDescriptionOrExplanation(hasBreak, i, result, line, index);
26+
continue;
2927
}
30-
if (!inCodeBlock) {
31-
if (!hasBreak && Match.isEmpty(line)) {
32-
hasBreak = i;
33-
}
34-
else if (!!Match.chapter(line)) {
35-
return chapter_1.chapter(result, lines.slice(i), index);
36-
}
37-
else if (!!Match.page(line)) {
38-
return page(result, lines.slice(i), index);
39-
}
40-
else if (!!Match.task(line)) {
41-
if (result.chapters[index.chapter].pages[index.page].tasks === undefined) {
42-
result.chapters[index.chapter].pages[index.page].tasks = [];
43-
}
44-
return task_1.task(result, lines.slice(i), index);
45-
}
46-
else {
47-
result = addToDescriptionOrExplanation(hasBreak, i, result, line, index);
28+
inCodeBlock = !inCodeBlock;
29+
}
30+
if (!inCodeBlock) {
31+
if (!hasBreak && Match.isEmpty(line)) {
32+
hasBreak = i;
33+
}
34+
else if (!!Match.chapter(line)) {
35+
return chapter_1.chapter(result, lines.slice(i), index);
36+
}
37+
else if (!!Match.page(line)) {
38+
return page(result, lines.slice(i), index);
39+
}
40+
else if (!!Match.task(line)) {
41+
if (result.chapters[index.chapter].pages[index.page].tasks === undefined) {
42+
result.chapters[index.chapter].pages[index.page].tasks = [];
4843
}
44+
return task_1.task(result, lines.slice(i), index);
45+
}
46+
else {
47+
result = addToDescriptionOrExplanation(hasBreak, i, result, line, index);
4948
}
5049
}
5150
}

src/build/parser/project.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,24 @@ function project(result, lines, index) {
77
title: '',
88
description: ''
99
};
10+
var inCodeBlock = false;
1011
var i = -1;
1112
while (i < lines.length - 1) {
1213
i += 1;
1314
var line = lines[i];
1415
var importFile = Match.isImport(line);
1516
if (!!importFile) {
1617
lines = import_1.loadImport(lines, importFile);
18+
continue;
1719
}
18-
else {
20+
if (!!Match.codeBlock(line)) {
21+
if (line.length > 3) {
22+
result = addToDescription(i, result, line);
23+
continue;
24+
}
25+
inCodeBlock = !inCodeBlock;
26+
}
27+
if (!inCodeBlock) {
1928
var projectTitleMatch = Match.project(line);
2029
if (!!projectTitleMatch) {
2130
result.project.title = projectTitleMatch.trim();
@@ -24,13 +33,17 @@ function project(result, lines, index) {
2433
return chapter_1.chapter(result, lines.slice(i), index);
2534
}
2635
else {
27-
if (i > 1) {
28-
result.project.description += '\n';
29-
}
30-
result.project.description += line;
36+
result = addToDescription(i, result, line);
3137
}
3238
}
3339
}
3440
return result;
3541
}
3642
exports.project = project;
43+
function addToDescription(i, result, line) {
44+
if (i > 1) {
45+
result.project.description += '\n';
46+
}
47+
result.project.description += line;
48+
return result;
49+
}

src/build/parser/task.js

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -41,40 +41,47 @@ function task(result, lines, index) {
4141
currentAction = null;
4242
bracketCount = 0;
4343
}
44+
continue;
4445
}
45-
else {
46-
var isAction = Match.isAction(line);
47-
if (!isAction && !!Match.codeBlock(line)) {
48-
inExpCodeBlock = !inExpCodeBlock;
46+
var isAction = Match.isAction(line);
47+
if (!isAction && !!Match.codeBlock(line)) {
48+
if (line.length > 3) {
49+
result = addToDescription(i, result, line, index);
50+
continue;
4951
}
50-
if (!inExpCodeBlock) {
51-
if (!!isAction) {
52-
currentAction = line;
53-
bracketCount = bracketTracker(line);
54-
if (bracketCount === 0) {
55-
result = actions_1.addToTasks(result, currentAction, index);
56-
currentAction = null;
57-
}
58-
}
59-
else if (!!Match.task(line)) {
60-
return task(result, lines.slice(i), index);
61-
}
62-
else if (!!Match.page(line)) {
63-
return page_1.page(result, lines.slice(i), index);
64-
}
65-
else if (!!Match.chapter(line)) {
66-
return chapter_1.chapter(result, lines.slice(i), index);
67-
}
68-
else {
69-
if (i > 0) {
70-
result.chapters[index.chapter].pages[index.page].tasks[index.task].description += '\n';
71-
}
72-
result.chapters[index.chapter].pages[index.page].tasks[index.task].description += line;
52+
inExpCodeBlock = !inExpCodeBlock;
53+
}
54+
if (!inExpCodeBlock) {
55+
if (!!isAction) {
56+
currentAction = line;
57+
bracketCount = bracketTracker(line);
58+
if (bracketCount === 0) {
59+
result = actions_1.addToTasks(result, currentAction, index);
60+
currentAction = null;
7361
}
7462
}
63+
else if (!!Match.task(line)) {
64+
return task(result, lines.slice(i), index);
65+
}
66+
else if (!!Match.page(line)) {
67+
return page_1.page(result, lines.slice(i), index);
68+
}
69+
else if (!!Match.chapter(line)) {
70+
return chapter_1.chapter(result, lines.slice(i), index);
71+
}
72+
else {
73+
result = addToDescription(i, result, line, index);
74+
}
7575
}
7676
}
7777
}
7878
return result;
7979
}
8080
exports.task = task;
81+
function addToDescription(i, result, line, index) {
82+
if (i > 0) {
83+
result.chapters[index.chapter].pages[index.page].tasks[index.task].description += '\n';
84+
}
85+
result.chapters[index.chapter].pages[index.page].tasks[index.task].description += line;
86+
return result;
87+
}

0 commit comments

Comments
 (0)