Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3650763

Browse files
committed
add final page parsing
1 parente87de1a commit3650763

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-
returninfo_1.info({dir:dir,result:result,lines:lines,index:index});
20+
returninfo_1.default({dir:dir,result:result,lines:lines,index:index});
2121
}
2222
functionbuild(_a){
2323
vardir=_a.dir,filePath=_a.filePath,_b=_a.output,output=_b===void0 ?'./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
varchalk_1=require('chalk');
33
varvalidKeys={
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
functionlintOutput(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+
varMatch=require('./match');
3+
varimport_1=require('./import');
4+
functionfinal(_a){
5+
vardir=_a.dir,result=_a.result,lines=_a.lines;
6+
varinCodeBlock=false;
7+
varcurrentPageComplete=null;
8+
varbracketCount=0;
9+
result.final={
10+
description:'',
11+
};
12+
vari=0;
13+
while(i<lines.length-1){
14+
i+=1;
15+
varline=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+
caseinCodeBlock:
29+
continue;
30+
default:
31+
if(i>1){
32+
result.final.description+='\n';
33+
}
34+
result.final.description+=line;
35+
continue;
36+
}
37+
}
38+
returnresult;
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
varsplitLines=importLines.split('\n');
2525
returnlines.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
varline=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-
returnpage_1.page({dir:dir,result:result,lines:lines.slice(i),index:index});
28+
returnpage_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
returnresult;
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
functionparseWithCode(code){
1616
returnfunction(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
varMatch=require('./match');
33
vartask_1=require('./task');
44
varimport_1=require('./import');
5+
varfinal_1=require('./final');
56
varcleanup_1=require('./cleanup');
67
functionpage(_a){
78
vardir=_a.dir,result=_a.result,lines=_a.lines,index=_a.index;
89
index.page+=1;
910
index.task=-1;
11+
vartitle=Match.page(lines[0]);
12+
if(title==='Final'){
13+
returnfinal_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
varinCodeBlock=false;
@@ -20,7 +25,7 @@ function page(_a) {
2025
varline=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-
returntask_1.task({dir:dir,result:result,lines:lines.slice(i),index:index});
56+
returntask_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
returnresult;
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
varline=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
returntask({dir:dir,result:result,lines:lines.slice(i),index:index});
7171
case!!Match.page(line):
72-
returnpage_1.page({dir:dir,result:result,lines:lines.slice(i),index:index});
72+
returnpage_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
returnresult;
8181
}
82-
exports.task=task;
82+
Object.defineProperty(exports,"__esModule",{value:true});
83+
exports.default=task;

‎lib/build/readme.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ function createReadme(dir) {
2121
exports.createReadme=createReadme;
2222
functiongenerateReadme(data,packageJson){
2323
varreadme=[];
24-
varinfo=data.info,pages=data.pages;
24+
varinfo=data.info,pages=data.pages,final=data.final;
2525
readme=readme.concat([
2626
'# '+info.title,
2727
'',
@@ -59,16 +59,23 @@ function generateReadme(data, packageJson) {
5959
'## Outline',
6060
''
6161
]);
62-
varparsedPages=pages.map(function(page){
63-
return[
64-
'##### '+page.title,
65-
'',
66-
page.description,
67-
''
68-
];
69-
});
62+
varparsedPages=pages.map(function(page){return([
63+
'##### '+page.title,
64+
'',
65+
page.description,
66+
''
67+
]);});
7068
parsedPages.forEach(function(page){
7169
readme=readme.concat(page);
7270
});
71+
if(final&&final.description){
72+
readme=readme.concat([
73+
'',
74+
'## Final',
75+
'',
76+
final.description,
77+
''
78+
]);
79+
}
7380
returnreadme.join('\n');
7481
}

‎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.9.1",
3+
"version":"0.10.0",
44
"description":"Command line interface for CodeRoad. Build project files.",
55
"keywords": [
66
"coderoad"

‎src/build/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import{readFileSync,writeFileSync}from'fs';
22
import*asvalidatefrom'./validators';
3-
import{info}from'./parser/info';
3+
importinfofrom'./parser/info';
44
import{createReadme}from'./readme';
55
import{cleanup}from'./parser/cleanup';
66
import{join}from'path';

‎src/build/lint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {yellow, red} from 'chalk';
22

33
constvalidKeys={
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

‎src/build/parser/actions.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,16 @@ export function addToTasks({ result, line, index: {page, task} }) {
5050
task,
5151
});
5252
break;
53+
case'resource':
54+
result=doAction({
55+
type:'resource',
56+
isArray:isActionArray,
57+
actionValue,
58+
result,
59+
page,
60+
task
61+
});
62+
break;
5363
case'continue':
5464
break;
5565
case'action':

‎src/build/parser/final.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import*asMatchfrom'./match';
2+
importloadImportfrom'./import';
3+
import{bracketTracker,trimValue}from'./cleanup';
4+
5+
exportdefaultfunctionfinal({ dir, result, lines}){
6+
letinCodeBlock=false;
7+
letcurrentPageComplete=null;
8+
letbracketCount=0;
9+
10+
result.final={
11+
description:'',
12+
};
13+
14+
leti=0;
15+
while(i<lines.length-1){
16+
i+=1;
17+
letline=lines[i];
18+
19+
switch(true){
20+
21+
//@import
22+
case!!Match.isImport(line):
23+
lines=loadImport({dir, lines,pathToMd:Match.isImport(line)});
24+
continue;
25+
26+
// ``` `
27+
case!!Match.codeBlock(line):
28+
if(line.length>3){
29+
result.final.description+='\n'+line;
30+
}else{
31+
inCodeBlock=!inCodeBlock;
32+
}
33+
continue;
34+
caseinCodeBlock:
35+
continue;
36+
37+
// description
38+
default:
39+
if(i>1){
40+
result.final.description+='\n';
41+
}
42+
result.final.description+=line;
43+
continue;
44+
}
45+
}
46+
returnresult;
47+
}

‎src/build/parser/import.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import fileExists from 'node-file-exists';
44
import{trimQuotes}from'./cleanup';
55
import{tutorialDir}from'./settings';
66

7-
exportfunctionloadImport({ dir, lines, pathToMd}):string[]{
7+
exportdefaultfunctionloadImport({ dir, lines, pathToMd}):string[]{
88
// add .md suffix
99
pathToMd=trimQuotes(pathToMd);
1010
if(!pathToMd.match(/\.md$/)){

‎src/build/parser/info.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import*asMatchfrom'./match';
2-
import{page}from'./page';
3-
import{loadImport}from'./import';
2+
importpagefrom'./page';
3+
importloadImportfrom'./import';
44

5-
exportfunctioninfo({ dir, result, lines, index}):CR.Output{
5+
exportdefaultfunctioninfo({ dir, result, lines, index}):CR.Output{
66
letinCodeBlock=false;
77
leti=-1;
88

‎src/build/parser/match.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ var regex = {
99
'##':match('#',2),
1010
'+':match('\\+',1),
1111
'```':match('`',3),
12-
'action':/^@(action|test|hint|openConsole|write|writeFromFile)/,
12+
'action':/^@(action|test|hint|openConsole|resource)/,
1313
'import':/^@import\((.+)\)$/,
14-
'onPageComplete':/^(@onPageComplete.+)/
14+
'onPageComplete':/^(@onPageComplete.+)/,
1515
};
1616

1717
functionparseWithCode(code:string){

‎src/build/parser/page.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
import*asMatchfrom'./match';
2-
import{task}from'./task';
3-
import{loadImport}from'./import';
2+
importtaskfrom'./task';
3+
importloadImportfrom'./import';
4+
importfinalfrom'./final';
45
import{bracketTracker,trimValue}from'./cleanup';
56

6-
exportfunctionpage({ dir, result, lines, index}){
7+
exportdefaultfunctionpage({ dir, result, lines, index}){
78
index.page+=1;
89
index.task=-1;
10+
consttitle=Match.page(lines[0]);
11+
if(title==='Final'){
12+
returnfinal({dir, result, lines});
13+
}
914
result.pages.push({
10-
title:Match.page(lines[0]),
15+
title,
1116
description:''
1217
});
1318
letinCodeBlock=false;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp