💄 >9 link texts are in line - fixes #60

This commit is contained in:
makeworld 2020-08-04 20:44:43 -04:00
parent fb2bce5a78
commit f3b7437046
3 changed files with 42 additions and 13 deletions

View File

@ -5,6 +5,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Changed
### Fixed
- Two digit (and higher) link texts are now in line with one digit ones (#60)
## [1.4.0] - 2020-07-28 ## [1.4.0] - 2020-07-28
### Added ### Added
- **Theming** - check out [default-config.toml](./default-config.toml) for details (#46) - **Theming** - check out [default-config.toml](./default-config.toml) for details (#46)

View File

@ -8,7 +8,7 @@ import (
"github.com/makeworld-the-better-one/amfora/display" "github.com/makeworld-the-better-one/amfora/display"
) )
var version = "1.4.0" var version = "1.5.0-unreleased"
func main() { func main() {
// err := logger.Init() // err := logger.Init()

View File

@ -145,6 +145,26 @@ func convertRegularGemini(s string, numLinks, width int) (string, []string) {
} }
links = append(links, url) links = append(links, url)
num := numLinks + len(links) // Visible link number, one-indexed
var indent int
if num > 99 {
// Indent link text by 3 or more spaces
indent = len(strconv.Itoa(num)) + 4 // +4 indent for spaces and brackets
} else {
// One digit and two digit links have the same spacing - see #60
indent = 5 // +4 indent for spaces and brackets, and 1 for link number
}
// Spacing after link number: 1 or 2 spaces?
var spacing string
if num > 9 {
// One space to keep it in line with other links - see #60
spacing = " "
} else {
// One digit numbers use two spaces
spacing = " "
}
// Wrap and add link text // Wrap and add link text
// Wrap the link text, but add some spaces to indent the wrapped lines past the link number // Wrap the link text, but add some spaces to indent the wrapped lines past the link number
@ -161,44 +181,44 @@ func convertRegularGemini(s string, numLinks, width int) (string, []string) {
// Those are the default colors, anyway // Those are the default colors, anyway
wrappedLink = wrapLine(linkText, width, wrappedLink = wrapLine(linkText, width,
strings.Repeat(" ", len(strconv.Itoa(numLinks+len(links)))+4)+ // +4 for spaces and brackets strings.Repeat(" ", indent)+
`["`+strconv.Itoa(numLinks+len(links)-1)+`"][`+config.GetColorString("amfora_link")+`]`, `["`+strconv.Itoa(num-1)+`"][`+config.GetColorString("amfora_link")+`]`,
`[-][""]`, `[-][""]`,
false, // Don't indent the first line, it's the one with link number false, // Don't indent the first line, it's the one with link number
) )
// Add special stuff to first line, like the link number // Add special stuff to first line, like the link number
wrappedLink[0] = fmt.Sprintf(`[%s::b][`, config.GetColorString("link_number")) + wrappedLink[0] = fmt.Sprintf(`[%s::b][`, config.GetColorString("link_number")) +
strconv.Itoa(numLinks+len(links)) + "[]" + "[-::-] " + strconv.Itoa(num) + "[]" + "[-::-]" + spacing +
`["` + strconv.Itoa(numLinks+len(links)-1) + `"][` + config.GetColorString("amfora_link") + `]` + `["` + strconv.Itoa(num-1) + `"][` + config.GetColorString("amfora_link") + `]` +
wrappedLink[0] + `[-][""]` wrappedLink[0] + `[-][""]`
} else { } else {
// Not a gemini link // Not a gemini link
wrappedLink = wrapLine(linkText, width, wrappedLink = wrapLine(linkText, width,
strings.Repeat(" ", len(strconv.Itoa(numLinks+len(links)))+4)+ // +4 for spaces and brackets strings.Repeat(" ", indent)+
`["`+strconv.Itoa(numLinks+len(links)-1)+`"][`+config.GetColorString("foreign_link")+`]`, `["`+strconv.Itoa(num-1)+`"][`+config.GetColorString("foreign_link")+`]`,
`[-][""]`, `[-][""]`,
false, // Don't indent the first line, it's the one with link number false, // Don't indent the first line, it's the one with link number
) )
wrappedLink[0] = fmt.Sprintf(`[%s::b][`, config.GetColorString("link_number")) + wrappedLink[0] = fmt.Sprintf(`[%s::b][`, config.GetColorString("link_number")) +
strconv.Itoa(numLinks+len(links)) + "[]" + "[-::-] " + strconv.Itoa(num) + "[]" + "[-::-]" + spacing +
`["` + strconv.Itoa(numLinks+len(links)-1) + `"][` + config.GetColorString("foreign_link") + `]` + `["` + strconv.Itoa(num-1) + `"][` + config.GetColorString("foreign_link") + `]` +
wrappedLink[0] + `[-][""]` wrappedLink[0] + `[-][""]`
} }
} else { } else {
// No colors allowed // No colors allowed
wrappedLink = wrapLine(linkText, width, wrappedLink = wrapLine(linkText, width,
strings.Repeat(" ", len(strconv.Itoa(numLinks+len(links)))+4)+ // +4 for spaces and brackets strings.Repeat(" ", len(strconv.Itoa(num))+4)+ // +4 for spaces and brackets
`["`+strconv.Itoa(numLinks+len(links)-1)+`"]`, `["`+strconv.Itoa(num-1)+`"]`,
`[""]`, `[""]`,
false, // Don't indent the first line, it's the one with link number false, // Don't indent the first line, it's the one with link number
) )
wrappedLink[0] = `[::b][` + strconv.Itoa(numLinks+len(links)) + "[][::-] " + wrappedLink[0] = `[::b][` + strconv.Itoa(num) + "[][::-] " +
`["` + strconv.Itoa(numLinks+len(links)-1) + `"]` + `["` + strconv.Itoa(num-1) + `"]` +
wrappedLink[0] + `[""]` wrappedLink[0] + `[""]`
} }