1 module dxx.app.parsers.workflow;
2 
3 private import dxx.app.workflow;
4 
5 // grammar
6 
7 private import pegged.grammar;
8 private import dxx.util.injector;
9 
10 mixin(grammar(import("workflow.peg")));
11 
12 /*
13 static Workflow parseWorkflow(string wf) {
14     auto g = WorkflowGrammar(wf);
15     WorkflowElement elem_value(ParseTree p) {
16         string id = p.matches.join('.');
17         auto e = resolveInjector!WorkflowElement(id);
18         foreach(w;p.children) {
19             //switch(w.name) {
20             //}
21         }
22         return e;
23     }
24     Workflow wf_value(ParseTree p) {
25         WorkflowElement[] e;
26         foreach(w;p.children) {
27             switch(w.name) {
28                 case "WorkflowDoc.WorkflowHeader":
29                 break;
30                 case "WorkflowDoc.WorkflowElement":
31                 e ~= elem_value(w);
32             }
33         }
34         return new DefaultWorkflow(e,arg);
35     }
36     Workflow[string] value(ParseTree p) {
37         switch (p.name) {
38             case "WorkflowDoc" :
39             Workflow[string] wf;
40             // options...
41             foreach(w;p.children[0..$]) {
42                 switch(w.name) {
43                     case "WorkflowDoc.WorkflowHeader" :
44                     break;
45                     case "WorkflowDoc.WorkflowDefinition" :
46                     wf[w.matches[0]] = wf_value(wf);
47                 }
48             }
49             return wf;
50             default:
51         }
52     }
53     
54     return wf(g);
55 }
56 */
57