Implemented text formatting
This commit is contained in:
50
Render.go
50
Render.go
@ -122,18 +122,20 @@ func (r *renderer) processLine(line string) {
|
||||
return
|
||||
}
|
||||
|
||||
line = strings.TrimSpace(line[1:])
|
||||
if len(line) > 1 && line[1] == ' ' {
|
||||
line = line[2:]
|
||||
|
||||
if r.listLevel == 0 {
|
||||
r.WriteString("<ul>")
|
||||
r.listLevel++
|
||||
if r.listLevel == 0 {
|
||||
r.WriteString("<ul>")
|
||||
r.listLevel++
|
||||
}
|
||||
|
||||
r.WriteString("<li>")
|
||||
r.writeText(line)
|
||||
r.WriteString("</li>")
|
||||
return
|
||||
}
|
||||
|
||||
r.WriteString("<li>")
|
||||
r.writeText(line)
|
||||
r.WriteString("</li>")
|
||||
return
|
||||
|
||||
case '`':
|
||||
if strings.HasPrefix(line, "```") {
|
||||
language := line[3:]
|
||||
@ -255,12 +257,14 @@ func (r *renderer) writeText(markdown string) {
|
||||
textStart = -1
|
||||
textEnd = -1
|
||||
urlStart = -1
|
||||
parentheses = 0
|
||||
codeStart = -1
|
||||
emStart = -1
|
||||
strongStart = -1
|
||||
parentheses = 0
|
||||
)
|
||||
|
||||
for {
|
||||
if i == len(markdown) {
|
||||
if i >= len(markdown) {
|
||||
r.WriteString(html.EscapeString(markdown[tokenStart:]))
|
||||
return
|
||||
}
|
||||
@ -315,6 +319,30 @@ func (r *renderer) writeText(markdown string) {
|
||||
tokenStart = i
|
||||
codeStart = i + 1
|
||||
}
|
||||
|
||||
case '*', '_':
|
||||
if i == emStart {
|
||||
strongStart = i + 1
|
||||
emStart = -1
|
||||
} else if strongStart != -1 {
|
||||
r.WriteString("<strong>")
|
||||
r.WriteString(html.EscapeString(markdown[strongStart:i]))
|
||||
r.WriteString("</strong>")
|
||||
strongStart = -1
|
||||
|
||||
i++
|
||||
tokenStart = i + 1
|
||||
} else if emStart != -1 {
|
||||
r.WriteString("<em>")
|
||||
r.WriteString(html.EscapeString(markdown[emStart:i]))
|
||||
r.WriteString("</em>")
|
||||
emStart = -1
|
||||
tokenStart = i + 1
|
||||
} else {
|
||||
r.WriteString(html.EscapeString(markdown[tokenStart:i]))
|
||||
tokenStart = i
|
||||
emStart = i + 1
|
||||
}
|
||||
}
|
||||
|
||||
i++
|
||||
|
Reference in New Issue
Block a user