1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
define.class(function($ui$, view, label){
this.attributes = {
body: {},
align: Config({type: String, value: "left"}),
fontsize: Config({type:Number, value: 14}),
fontcolor: Config({type:vec4, value: vec4("#202020")})
}
this.flexdirection = "column"
var markdown = this.constructor
this.buildMarkdown= function(lines){
var res = [];
for(var a in lines)
{
var L = lines[a];
var LT = L.trim();
if (LT.length == 0) continue;
var fontsize = this.fontsize;
var Margin = vec4(10,10,10,10);
if (LT.indexOf("######") == 0){
L = LT.substr(7);
fontsize = this.fontsize * (16. / 14.);
} else if (LT.indexOf("#####") == 0){
L = LT.substr(6);
fontsize = this.fontsize * (18. / 14.);
} else if (LT.indexOf("####") == 0){
L = LT.substr(5);
fontsize = this.fontsize * (22. / 14.);
} else if (LT.indexOf("###") == 0){
L = LT.substr(4);
fontsize = this.fontsize * (25. / 14.);
} else if (LT.indexOf("##") == 0){
L = LT.substr(3);
fontsize = this.fontsize * (27. / 14.);
} else if (LT.indexOf("#") == 0){
L = LT.substr(2);
fontsize = this.fontsize * (30. / 14.);
} else {
}
res.push(label({fgcolor: this.fontcolor, bgcolor:NaN, margin: Margin, text: L, fontsize: fontsize, multiline: true, align: this.align}));
}
return res;
}
this.render = function(){
if (!this.body) return [];
if (typeof(this.body) === "array" || (this.body.length && typeof(this.body) !== "string" ) ){
var lines = [];
for(var i = 0;i<this.body.length;i++)
{
var splitted = this.body[i].split('\n')
for(var j in splitted) lines.push(splitted[j]);
}
return this.buildMarkdown(lines);;
}
else{
if (typeof(this.body) === "string"){
var lines = [];
var splitted = this.body.split('\n');
for(var j in splitted) lines.push(splitted[j]);
return this.buildMarkdown(lines);
}
else{
return [label({fgcolor:"#303030", bgcolor:NaN, text:"unknown format for body!\n\n" + this.body.toString(), multiline: true, fontsize:12})];
}
}
}
this.constructor.examples = {
Usage:function(){
return [
markdown({align:"right", body:"# Heading on the right\nBodytext"})
,markdown({align:"justify",body:"## Justified text\nShould space out neatly on the line."})
,markdown({align:"left",body:"### Basic leftalignment\nAs usual"})
,markdown({align:"center",body:"#### CENTER STAGE\nText in the middle"})
]
}
}
});
|