Misc fixes:
[sixth.git] / src / main / java / eu / svjatoslav / sixth / core / document / content / MultilineCode.java
1 package eu.svjatoslav.sixth.core.document.content;
2
3 import eu.svjatoslav.commons.string.String2;
4 import eu.svjatoslav.commons.string.tokenizer.Tokenizer;
5
6 import static eu.svjatoslav.commons.string.tokenizer.Terminator.TerminationStrategy.DROP;
7
8 public class MultilineCode implements Content {
9     public final String language;
10     public final String code;
11
12     public MultilineCode(String languageAndParams, String code) {
13
14         final Tokenizer tokenizer = new Tokenizer(languageAndParams);
15         tokenizer.addTerminator(DROP, "[ \\t]+", "whitespace");
16         if (tokenizer.hasMoreContent()){
17             language = tokenizer.getNextToken().token;
18         } else {
19             language = null;
20         }
21
22         this.code = code;
23     }
24
25     @Override
26     public void toMD(StringBuilder sb, int indent) {
27         String2 s = new String2();
28         s.append(" ", indent).append("```" + getMDlanguage() + "\n");
29         // TODO: ensure that required indent is present
30         s.append(code + "\n");
31         s.append(" ", indent).append("```\n");
32         sb.append(s.toString());
33     }
34
35     public String getMDlanguage(){
36         if (language == null) return "";
37         return language;
38     }
39 }