-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwave.go
106 lines (80 loc) · 3.99 KB
/
wave.go
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
package main
import (
"os"
"fmt"
"strings"
"strconv"
)
func main() {
if len(os.Args) == 1 {
fmt.Printf(messageTemplates["help"])
os.Exit(1)
}
var htmlBody string
var cssBody string
var sourceName string = os.Args[1]
scriptLines := splitFileText(sourceName)
var contentDefaults = make(map[string]string)
contentDefaults = copyMap(contentProp)
for _, line := range scriptLines {
tokens := strings.Split(strings.TrimSpace(line), " ")
var property string = strings.Join(tokens[1:], " ")
for name, value := range variables {
property = strings.Replace(property, "%" + name, value, -1)
}
if strings.HasPrefix(tokens[0], "~") && tokens[0] != "~set" {
pageProp[tokens[0]] = property
} else if tokens[0] == "~set" {
var varValue string = strings.Join(tokens[2:], " ")
variables[tokens[1]] = varValue
}
if pageProp["~theme"] != "" {
pageProp["~bg"] = themes[pageProp["~theme"]]["bg"]
if contentProp["cColor"] == "black" {
contentProp["cColor"] = themes[pageProp["~theme"]]["fg"]
}
}
applyProperties(tokens[0], property, &contentDefaults)
cssBody = fmt.Sprintf(templates["css"], contentProp["!font"], contentProp["cColor"], contentProp["cBGcolor"], contentProp["!size"], contentProp["!align"], contentProp["!box"], contentProp["!box-style"], contentProp["!points-style"])
switch tokens[0] {
case "$text":
htmlBody += fmt.Sprintf(templates["text"], cssBody, property)
case "$file":
tabNumber, _ := strconv.Atoi(contentProp["!tab"])
var fileStr string = readFileForHTML(property, tabNumber)
htmlBody += fmt.Sprintf(templates["text"], cssBody, fileStr)
case "$nl":
if len(tokens) == 1 {
property = "1"
}
times, _ := strconv.Atoi(property)
htmlBody += fmt.Sprintf("\t\t%s\n", strMultiply("<br>", times))
case "$link":
genLink(property)
htmlBody += fmt.Sprintf(templates["link"], cssBody, contentProp["cLink"], cssBody, contentProp["cLinkTitle"])
case "$mail":
genMail(property)
htmlBody += fmt.Sprintf(templates["mail"], cssBody, contentProp["cMailAddress"], cssBody, contentProp["cMailTitle"])
case "$points":
var allPoints string = genPoints(property)
htmlBody += fmt.Sprintf(templates["pointsBody"], contentProp["cPointsType"], cssBody, allPoints, contentProp["cPointsType"])
case "$table":
var tableBody string = genTable(property)
htmlBody += fmt.Sprintf(templates["tableComplete"], cssBody, fmt.Sprintf(templates["tableBorder"], themes[pageProp["~theme"]]["fg"]), tableBody)
case "$check":
var checkPointsBody string = genCheck(property)
htmlBody += fmt.Sprintf(templates["checkboxBody"], cssBody, checkPointsBody)
case "$quote":
htmlBody += fmt.Sprintf(templates["quote"], cssBody, property)
case "$pic":
htmlBody += fmt.Sprintf(templates["image"], contentProp["!align"], contentProp["!box"], contentProp["!box-style"], contentProp["cWidth"], contentProp["cHeight"], property)
case "$html":
htmlBody += fmt.Sprintf("\t\t%s\n", property)
}
}
var htmlTopBody string = fmt.Sprintf(templates["htmlTopBody"], pageProp["~title"])
var htmlCSS string = fmt.Sprintf(templates["htmlCSS"], pageProp["~bg"], pageProp["~img"], pageProp["~box"], pageProp["~box-style"])
htmlCSS = setTheme(htmlCSS, pageProp["~theme"])
var htmlComplete string = templates["waveMark"] + htmlTopBody + htmlCSS + htmlBody + templates["htmlEnd"]
makeHTMLfile(sourceName, htmlComplete)
}