diff --git a/main.go b/main.go index 63f210e..0b23974 100644 --- a/main.go +++ b/main.go @@ -80,38 +80,98 @@ func main() { fmt.Fprint(&out, list2html(line)) case rivit.Block: - out.WriteString("
")
-
-			for i, v := range line.Body {
-				l := v[line.Indent:]
-				l = strings.ReplaceAll(l, "<", "<")
-				l = strings.ReplaceAll(l, ">", ">")
-
-				out.WriteString(l)
-
-				if i < len(line.Body) {
-					out.WriteString("\n")
-				}
+			if len(line.Body) == 0 {
+				continue
 			}
 
-			out.WriteString("
") + first := strings.TrimSpace(line.Body[0]) + if len(first) != 0 && first[0] == '|' && first[len(first)-1] == '|' { // table + out.WriteString("") + + for i, v := range line.Body { + v = strings.TrimSpace(v) + if len(v) == 0 { + continue + } + + if v[0] != '|' { + fmt.Fprintf(&out, "", text2html(rivit.ParseStyledText(v))) + break + } + + parts := strings.Split(v, "|") + + if i == 0 { + out.WriteString("") + for _, p := range parts { + p = strings.TrimSpace(p) + if len(p) == 0 { + continue + } + + styled := rivit.ParseStyledText(p) + fmt.Fprintf(&out, "", text2html(styled)) + } + out.WriteString("") + continue + } + + if i == 1 { + out.WriteString("") + } + + out.WriteString("") + for it, p := range parts { + p = strings.TrimSpace(p) + if len(p) == 0 { + continue + } + + styled := rivit.ParseStyledText(p) + + if it == 0 { + fmt.Fprintf(&out, "", text2html(styled)) + } + + } + out.WriteString("") + } + + out.WriteString("") + out.WriteString("
%s
%s
%s", text2html(styled)) + } else { + fmt.Fprintf(&out, "%s
") + } else { + out.WriteString("
")
+
+				for i, v := range line.Body {
+					l := v[line.Indent:]
+					l = strings.ReplaceAll(l, "<", "<")
+					l = strings.ReplaceAll(l, ">", ">")
+
+					out.WriteString(l)
+
+					if i < len(line.Body) {
+						out.WriteString("\n")
+					}
+				}
+
+				out.WriteString("
") + } } } - html := fmt.Sprintf(` - + html := fmt.Sprintf( + ` %s %s - - `, title, out.String()) +`, title, out.String()) if err := os.WriteFile(outpath, []byte(html), 0644); err != nil { fmt.Fprintf(os.Stderr, "error writing file: %v\n", err)