more ParseLine cleanup

This commit is contained in:
Nico 2020-11-12 10:26:46 +00:00
parent 3149020ec5
commit 4d53e2fa87
1 changed files with 15 additions and 17 deletions

View File

@ -75,23 +75,21 @@ func ParseHeading(l string) (GemtextObject, error) {
// "isPreformatted" takes a true if the line is in a preformatted block, else otherwise.
func ParseLine(line string, isPreformatted bool) (GemtextObject, error) {
l := strings.TrimSpace(line)
if strings.HasPrefix(l, "=>") {
return ParseLink(line)
} else if strings.HasPrefix(l, "```") {
return GemtextObject{Type: PREFORMATTED_TOGGLE, Literal: l}, nil
} else if strings.HasPrefix(l, "#") {
return ParseHeading(line)
} else if strings.HasPrefix(l, ">") {
return GemtextObject{Type: QUOTE, Text: strings.TrimSpace(l[1:]), Literal: l}, nil
} else if strings.HasPrefix(l, "*") {
return GemtextObject{Type: LIST, Text: strings.TrimSpace(l[1:]), Literal: l}, nil
} else { // Everything else is just text
if isPreformatted {
return GemtextObject{Type: PREFORMATTED_TEXT, Text: l, Literal: l}, nil
} else {
return GemtextObject{Type: TEXT, Text: l, Literal: l}, nil
}
}
switch {
case strings.HasPrefix(l, "=>"):
return ParseLink(line)
case strings.HasPrefix(l, "```"):
return GemtextObject{Type: PREFORMATTED_TOGGLE, Literal: l}, nil
case strings.HasPrefix(l, "#"):
return ParseHeading(line)
case strings.HasPrefix(l, ">"):
return GemtextObject{Type: QUOTE, Text: strings.TrimSpace(l[1:]), Literal: l}, nil
case strings.HasPrefix(l, "*"):
return GemtextObject{Type: LIST, Text: strings.TrimSpace(l[1:]), Literal: l}, nil
case isPreformatted:
return GemtextObject{Type: PREFORMATTED_TEXT, Text: l, Literal: l}, nil
}
return GemtextObject{Type: TEXT, Text: l, Literal: l}, nil
}
// ParsePage takes a string containing the contents of a gemtext page and returns a GemtextPage.