Skip to content

Commit 2d42e96

Browse files
cemersozDerekTBrown
authored andcommitted
Implements markdown parser (#191)
* issue 32 fixed * removed swp * fixed nconf issues * issue 82, 84 fixes * fixed #82 * isse #77 * fixed tests * fixed files * fixed tests master * fixed comment * moved validator * removed duplicate file * fixed tests, removed duplicate underscore, publish * changes * fixed methods.ts import * fixed issues w methods * fixes * minor fixes * A * api changes * fixed api * comments * minor changes * minor fixes * api changes (#126) * issue 32 fixed * removed swp * fixed nconf issues * issue 82, 84 fixes * fixed #82 * isse #77 * fixed tests * fixed files * fixed tests master * fixed comment * moved validator * removed duplicate file * fixed tests, removed duplicate underscore, publish * changes * fixed methods.ts import * fixed issues w methods * fixes * minor fixes * A * api changes * fixed api * comments * minor changes * minor fixes * method implementations * before merge * removed testing change * fixed typo * fixed prepareLab * removed test methods * fix prepareLab * methods changes * removed swap file * fixed merge * fixes * prepareLab WORKS * further fixes * merge * all works * deleted debug line * fixed minor excess code * minor indentation fix * reference fixes * fixes to nextTask * merged with master * minor changes * fixed merge problems * fixed md view and swithces * fixed error messages * removed debug code * removed swp * fixes * fixed typescript warning * added student object * changed function calls * deleted unnecessary files * updated api, added md feedback * fixed ts warn * fixed example_data and partially tests * update validator, merge * fixed indentation * changes * it's pretty now * fixed #187, #188 * minor fixes * fixed indentation * added equal sign * updated example courses to match schema * added md parser * removed debug code * fixed debug, import * changed dockerode settings
1 parent a6d735d commit 2d42e96

File tree

6 files changed

+50
-19
lines changed

6 files changed

+50
-19
lines changed

collections/labs.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import { Meteor } from 'meteor/meteor';
33
import { Roles } from './users.ts';
44

55
declare var _ : any;
6+
declare var async : any;
67

8+
declare var get_markdown : any;
79
declare var validateLab : any;
810

911
export const labs : any = new Mongo.Collection('labs');
@@ -73,14 +75,14 @@ labs.allow({
7375
return Date.now();
7476
}
7577
},
76-
hidden:{
77-
type: Boolean,
78-
defaultValue: true
79-
},
80-
disabled:{
81-
type: Boolean,
82-
defaultValue: false
83-
},
78+
hidden:{
79+
type: Boolean,
80+
defaultValue: true
81+
},
82+
disabled:{
83+
type: Boolean,
84+
defaultValue: false
85+
},
8486
file: {
8587
type: String
8688
},
@@ -95,6 +97,7 @@ labs.allow({
9597
/* LAB VALIDATOR */
9698
if(Meteor.isServer){
9799
var validateLab : any = require('../server/imports/lab/checkLab.js');
100+
98101
Meteor.startup(function(){
99102
var LabValidator = function(userid, doc, fieldNames?, modifier?, options?){
100103
if(!doc.course_id){ //check if lab object has a course_id
@@ -116,6 +119,12 @@ labs.allow({
116119
throw new Meteor.Error("labfile failed the validator");
117120
}
118121
else{
122+
var tasks = get_markdown(doc.file);
123+
async.map(tasks,function(task){
124+
task.updated = Date.now();
125+
return task;
126+
});
127+
doc.tasks = tasks;
119128
doc.updated = Date.now();
120129
return true;
121130
}

server/imports/api/lab.env.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,11 @@
1-
// Import Dockerode
2-
var dockerode = require('dockerode');
31
// Import other libraries
4-
var _ = require('underscore');
5-
var Etcd = require('node-etcd');
62
var nconf = require('nconf');
73

84
/* constructor
95
* intializes docker, etcd connection
106
*/
117
var env = function(){
12-
13-
var docker_settings = {
14-
host: nconf.get('swarm_node_ip'),
15-
port: nconf.get('swarm_node_port')
16-
}
17-
this.docker = new dockerode(docker_settings);
8+
this.docker = docker;
189
this.root_dom = nconf.get('domain_root');
1910
}
2011

server/imports/lab/markdown.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export function get_markdown(labfile : string) : Array<any> {
2+
var outer_filter = /\/\*( |\n)*?@(.*?)( |\n)((.|\n)*?)\*\//gm;
3+
var match = labfile.match(outer_filter);
4+
var output = match.map(function(task_data, index, arr) {
5+
var inner_filter = /\/\*( |\n)*?@(.*?)( |\n)((.|\n)*?)\*\//gm;
6+
var filtered_data = inner_filter.exec(task_data);
7+
var task_name = filtered_data[2];
8+
var task_md = filtered_data[4];
9+
return {
10+
_id : (index + 1).toString(),
11+
name : task_name,
12+
md : task_md
13+
}
14+
});
15+
return output;
16+
}

server/imports/lab/methods.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ var LabSession = require('../api/lab.session.js');
1212
import{ prepLab, next, verify } from './labMethods.ts';
1313

1414
Meteor.methods({
15-
/**prepareLab: prepares a labExec object for the current user
15+
16+
/**prepareLab: prepares a labExec object for the current user
1617
* takes the id of the lab and a callback as parameter
1718
* callback: (err,pass)
1819
* implement loading wheel, md fetch, course record create in callback

server/imports/startup/docker.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
var dockerode = require('dockerode');
2+
var fs = require('fs');
3+
4+
var dockerode_options = {
5+
host: nconf.get('swarm_node_ip'),
6+
port: nconf.get('swarm_node_port')
7+
ca: fs.readFileSync(nconf.get('swarm_cert_dir')+"/ca.perm"),
8+
cert: fs.readFileSync(nconf.get('swarm_cert_dir')+"/cert.perm"),
9+
key: fs.readFileSync(nconf.get('swarm_cert_dir')+"/key.perm")
10+
};
11+
12+
docker = new dockerode(dockerode_options);

server/imports/startup/methods.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// Import markdown regexp
2+
import "../lab/markdown.ts";
13

24
// Import Lab Meteor Methods
35
import "../lab/methods.ts";

0 commit comments

Comments
 (0)