##### Coverage Report - controllers.PlayDocumentation

Classes in this File | Line Coverage | Branch Coverage | Complexity
PlayDocumentation |
52 % | 20/38
50 % | 10/20
| 2.8333333333333335;2,833

1 |  |
     package controllers;
2 |  |
3 |  |
     import play.*;
4 |  |
     import play.mvc.*;
5 |  |
     import play.libs.*;
6 |  |
     import play.vfs.*;
7 |  |
8 |  |
     import java.io.*;
9 |  |
     import java.util.*;
10 |  |
11 | 0 |
     public class PlayDocumentation extends Controller {
12 |  |
13 |  |
         public static void index() throws Exception {
14 | 1 |
             page("home", null);
15 | 0 |
         }
16 |  |
17 |  |
         public static void page(String id, String module) throws Exception {
18 | 2 |
             File page = new File(Play.frameworkPath, "documentation/manual/"+id+".textile");
19 | 2 |
             if(module != null) {
20 | 0 |
                  page = new File(Play.modules.get(module).getRealFile(), "documentation/manual/"+id+".textile");
21 |  |
             }
22 | 2 |
             if(!page.exists()) {
23 | 0 |
                 notFound("Manual page for "+id+" not found");
24 |  |
             }
25 | 2 |
             String textile = IO.readContentAsString(page);
26 | 2 |
             String html = toHTML(textile);
27 | 2 |
             String title = getTitle(textile);
28 |  |
29 | 2 |
             List<String> modules = new ArrayList();
30 | 2 |
             if(id.equals("home") && module == null) {
31 | 7 |
                 for(String key : Play.modules.keySet()) {
32 | 5 |
                     VirtualFile mr = Play.modules.get(key);
33 | 5 |
                     VirtualFile home = mr.child("documentation/manual/home.textile");
34 | 5 |
                     if(home.exists()) {
35 | 1 |
                         modules.add(key);
36 |  |
                     }
37 |  |
                 }
38 |  |
             }
39 |  |
40 | 2 |
             render(id, html, title, modules, module);
41 | 0 |
         }
42 |  |
43 |  |
         public static void image(String name, String module) {
44 | 0 |
             File image = new File(Play.frameworkPath, "documentation/images/"+name+".png");
45 | 0 |
             if(module != null) {
46 | 0 |
                  image = new File(Play.modules.get(module).getRealFile(),"documentation/images/"+name+".png");
47 |  |
             }
48 | 0 |
             if(!image.exists()) {
49 | 0 |
                 notFound();
50 |  |
             }
51 | 0 |
             renderBinary(image);
52 | 0 |
         }
53 |  |
54 |  |
         public static void file(String name) {
55 | 0 |
             File file = new File(Play.frameworkPath, "documentation/files/"+name);
56 | 0 |
             if(!file.exists()) {
57 | 0 |
                 notFound();
58 |  |
             }
59 | 0 |
             renderBinary(file);
60 | 0 |
         }
61 |  |
62 |  |
         //
63 |  |
64 |  |
         static String toHTML(String textile) {
65 | 2 |
             String html = new org.eclipse.mylyn.wikitext.core.parser.MarkupParser(new org.eclipse.mylyn.wikitext.textile.core.TextileLanguage()).parseToHtml(textile);
66 | 2 |
             html = html.substring(html.indexOf("<body>") + 6, html.lastIndexOf("</body>"));
67 | 2 |
             return html;
68 |  |
         }
69 |  |
70 |  |
         static String getTitle(String textile) {
71 | 2 |
             if(textile.length() == 0) {
72 | 0 |
                 return "";
73 |  |
             }
74 | 2 |
             return textile.split("\n")[0].substring(3).trim();
75 |  |
         }
76 |  |
77 |  |
     }