···130131 // current display mode
132 ShowingRendered bool // currently in rendered mode
133- ShowingText bool // currently in text/code mode
134135 // content type flags
136 ContentType BlobContentType
···151 // no view available, only raw
152 return !(b.HasRenderedView || b.HasTextView)
153}
0000
···130131 // current display mode
132 ShowingRendered bool // currently in rendered mode
0133134 // content type flags
135 ContentType BlobContentType
···150 // no view available, only raw
151 return !(b.HasRenderedView || b.HasTextView)
152}
153+154+func (b BlobView) ShowingText() bool {
155+ return !b.ShowingRendered
156+}
+1-1
appview/pages/templates/repo/blob.html
···3536 {{ if .BlobView.ShowingText }}
37 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span>
38- <span>{{ .Lines }} lines</span>
39 {{ end }}
4041 {{ if .BlobView.SizeHint }}
···3536 {{ if .BlobView.ShowingText }}
37 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span>
38+ <span>{{ .BlobView.Lines }} lines</span>
39 {{ end }}
4041 {{ if .BlobView.SizeHint }}
+17-2
appview/repo/blob.go
···219 if resp.Content != nil {
220 bytes, _ := base64.StdEncoding.DecodeString(*resp.Content)
221 view.Contents = string(bytes)
222- view.Lines = strings.Count(view.Contents, "\n") + 1
223 }
224225 case ".mp4", ".webm", ".ogg", ".mov", ".avi":
···238239 if resp.Content != nil {
240 view.Contents = *resp.Content
241- view.Lines = strings.Count(view.Contents, "\n") + 1
242 }
243244 // with text, we may be dealing with markdown
···291 }
292 return slices.Contains(textualTypes, mimeType)
293}
000000000000000
···219 if resp.Content != nil {
220 bytes, _ := base64.StdEncoding.DecodeString(*resp.Content)
221 view.Contents = string(bytes)
222+ view.Lines = countLines(view.Contents)
223 }
224225 case ".mp4", ".webm", ".ogg", ".mov", ".avi":
···238239 if resp.Content != nil {
240 view.Contents = *resp.Content
241+ view.Lines = countLines(view.Contents)
242 }
243244 // with text, we may be dealing with markdown
···291 }
292 return slices.Contains(textualTypes, mimeType)
293}
294+295+// TODO: dedup with strings
296+func countLines(content string) int {
297+ if content == "" {
298+ return 0
299+ }
300+301+ count := strings.Count(content, "\n")
302+303+ if !strings.HasSuffix(content, "\n") {
304+ count++
305+ }
306+307+ return count
308+}