Detect markdown line width, resolve relative URLs (#332)
~~this is semi-blocked by https://github.com/charmbracelet/glamour/pull/96, but behaviour isn't really worse than the previous behaviour (most links work, some are still broken)~~ #### testcase for link resolver ``` tea pr 332 tea checkout 332 && make install && tea pr 332 ``` - [rel](./332) - [abs](/gitea/tea/pulls/332) - [full](https://gitea.com/gitea/tea/pulls/332) Co-authored-by: Norwin Roosen <git@nroo.de> Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/332 Reviewed-by: 6543 <6543@obermui.de> Reviewed-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Norwin <noerw@noreply.gitea.io> Co-committed-by: Norwin <noerw@noreply.gitea.io>
This commit is contained in:
11
vendor/github.com/muesli/reflow/ansi/buffer.go
generated
vendored
11
vendor/github.com/muesli/reflow/ansi/buffer.go
generated
vendored
@@ -11,11 +11,16 @@ type Buffer struct {
|
||||
bytes.Buffer
|
||||
}
|
||||
|
||||
// PrintableRuneCount returns the amount of printable runes in the buffer.
|
||||
func (w Buffer) PrintableRuneCount() int {
|
||||
// PrintableRuneWidth returns the width of all printable runes in the buffer.
|
||||
func (w Buffer) PrintableRuneWidth() int {
|
||||
return PrintableRuneWidth(w.String())
|
||||
}
|
||||
|
||||
func PrintableRuneWidth(s string) int {
|
||||
var n int
|
||||
var ansi bool
|
||||
for _, c := range w.String() {
|
||||
|
||||
for _, c := range s {
|
||||
if c == '\x1B' {
|
||||
// ANSI escape sequence
|
||||
ansi = true
|
||||
|
||||
6
vendor/github.com/muesli/reflow/wordwrap/wordwrap.go
generated
vendored
6
vendor/github.com/muesli/reflow/wordwrap/wordwrap.go
generated
vendored
@@ -66,7 +66,7 @@ func (w *WordWrap) addSpace() {
|
||||
func (w *WordWrap) addWord() {
|
||||
if w.word.Len() > 0 {
|
||||
w.addSpace()
|
||||
w.lineLen += w.word.PrintableRuneCount()
|
||||
w.lineLen += w.word.PrintableRuneWidth()
|
||||
w.buf.Write(w.word.Bytes())
|
||||
w.word.Reset()
|
||||
}
|
||||
@@ -139,8 +139,8 @@ func (w *WordWrap) Write(b []byte) (int, error) {
|
||||
|
||||
// add a line break if the current word would exceed the line's
|
||||
// character limit
|
||||
if w.lineLen+w.space.Len()+w.word.PrintableRuneCount() > w.Limit &&
|
||||
w.word.PrintableRuneCount() < w.Limit {
|
||||
if w.lineLen+w.space.Len()+w.word.PrintableRuneWidth() > w.Limit &&
|
||||
w.word.PrintableRuneWidth() < w.Limit {
|
||||
w.addNewLine()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user