X Tutup
Skip to content

Commit 2ab073d

Browse files
author
Nate Smith
authored
Refactor use of glamour to allow style overrides (cli#3243)
* Refactor use of glamour to allow style overrides * leave the things the way they were and just expose the ability to set overrides
1 parent 84f0f59 commit 2ab073d

File tree

10 files changed

+41
-25
lines changed

10 files changed

+41
-25
lines changed

pkg/cmd/gist/view/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func viewRun(opts *ViewOptions) error {
127127
}
128128

129129
if strings.Contains(gf.Type, "markdown") && !opts.Raw {
130-
rendered, err := markdown.Render(gf.Content, markdownStyle, "")
130+
rendered, err := markdown.Render(gf.Content, markdownStyle)
131131
if err != nil {
132132
return err
133133
}

pkg/cmd/issue/view/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ func printHumanIssuePreview(opts *ViewOptions, issue *api.Issue) error {
186186
md = fmt.Sprintf("\n %s\n\n", cs.Gray("No description provided"))
187187
} else {
188188
style := markdown.GetStyle(opts.IO.TerminalTheme())
189-
md, err = markdown.Render(issue.Body, style, "")
189+
md, err = markdown.Render(issue.Body, style)
190190
if err != nil {
191191
return err
192192
}

pkg/cmd/pr/review/review.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ func reviewSurvey(io *iostreams.IOStreams, editorCommand string) (*api.PullReque
276276

277277
if len(bodyAnswers.Body) > 0 {
278278
style := markdown.GetStyle(io.DetectTerminalTheme())
279-
renderedBody, err := markdown.Render(bodyAnswers.Body, style, "")
279+
renderedBody, err := markdown.Render(bodyAnswers.Body, style)
280280
if err != nil {
281281
return nil, err
282282
}

pkg/cmd/pr/shared/comments.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func formatComment(io *iostreams.IOStreams, comment Comment, newest bool) (strin
124124
md = fmt.Sprintf("\n %s\n\n", cs.Gray("No body provided"))
125125
} else {
126126
style := markdown.GetStyle(io.TerminalTheme())
127-
md, err = markdown.Render(comment.Content(), style, "")
127+
md, err = markdown.Render(comment.Content(), style)
128128
if err != nil {
129129
return "", err
130130
}

pkg/cmd/pr/view/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ func printHumanPrPreview(opts *ViewOptions, pr *api.PullRequest) error {
199199
md = fmt.Sprintf("\n %s\n\n", cs.Gray("No description provided"))
200200
} else {
201201
style := markdown.GetStyle(opts.IO.TerminalTheme())
202-
md, err = markdown.Render(pr.Body, style, "")
202+
md, err = markdown.Render(pr.Body, style)
203203
if err != nil {
204204
return err
205205
}

pkg/cmd/release/view/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ func renderReleaseTTY(io *iostreams.IOStreams, release *shared.Release) error {
124124
}
125125

126126
style := markdown.GetStyle(io.DetectTerminalTheme())
127-
renderedDescription, err := markdown.Render(release.Body, style, "")
127+
renderedDescription, err := markdown.Render(release.Body, style)
128128
if err != nil {
129129
return err
130130
}

pkg/cmd/repo/view/view.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func viewRun(opts *ViewOptions) error {
160160
} else if isMarkdownFile(readme.Filename) {
161161
var err error
162162
style := markdown.GetStyle(opts.IO.TerminalTheme())
163-
readmeContent, err = markdown.Render(readme.Content, style, readme.BaseURL)
163+
readmeContent, err = markdown.RenderWithBaseURL(readme.Content, style, readme.BaseURL)
164164
if err != nil {
165165
return fmt.Errorf("error rendering markdown: %w", err)
166166
}

pkg/cmd/root/help_reference.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func referenceHelpFn(io *iostreams.IOStreams) func(*cobra.Command, []string) {
2020
style = markdown.GetStyle(io.DetectTerminalTheme())
2121
}
2222

23-
md, err := markdown.RenderWrap(cmd.Long, style, wrapWidth)
23+
md, err := markdown.RenderWithWrap(cmd.Long, style, wrapWidth)
2424
if err != nil {
2525
fmt.Fprintln(io.ErrOut, err)
2626
return

pkg/markdown/markdown.go

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,54 @@ import (
77
"github.com/charmbracelet/glamour"
88
)
99

10-
func Render(text, style string, baseURL string) (string, error) {
10+
type RenderOpts []glamour.TermRendererOption
11+
12+
func render(text string, opts RenderOpts) (string, error) {
1113
// Glamour rendering preserves carriage return characters in code blocks, but
1214
// we need to ensure that no such characters are present in the output.
1315
text = strings.ReplaceAll(text, "\r\n", "\n")
1416

15-
tr, err := glamour.NewTermRenderer(
16-
glamour.WithStylePath(style),
17-
glamour.WithBaseURL(baseURL),
18-
// glamour.WithWordWrap(80), // TODO: make configurable
19-
)
17+
tr, err := glamour.NewTermRenderer(opts...)
2018
if err != nil {
2119
return "", err
2220
}
2321

2422
return tr.Render(text)
2523
}
2624

27-
func RenderWrap(text, style string, wrap int) (string, error) {
28-
// Glamour rendering preserves carriage return characters in code blocks, but
29-
// we need to ensure that no such characters are present in the output.
30-
text = strings.ReplaceAll(text, "\r\n", "\n")
25+
func Render(text, style string) (string, error) {
26+
opts := RenderOpts{
27+
glamour.WithStylePath(style),
28+
}
29+
30+
return render(text, opts)
31+
}
32+
33+
func RenderWithOpts(text, style string, opts RenderOpts) (string, error) {
34+
defaultOpts := RenderOpts{
35+
glamour.WithStylePath(style),
36+
}
37+
opts = append(defaultOpts, opts...)
38+
39+
return render(text, opts)
40+
}
41+
42+
func RenderWithBaseURL(text, style, baseURL string) (string, error) {
43+
opts := RenderOpts{
44+
glamour.WithStylePath(style),
45+
glamour.WithBaseURL(baseURL),
46+
}
47+
48+
return render(text, opts)
49+
}
3150

32-
tr, err := glamour.NewTermRenderer(
51+
func RenderWithWrap(text, style string, wrap int) (string, error) {
52+
opts := RenderOpts{
3353
glamour.WithStylePath(style),
34-
// glamour.WithBaseURL(""), // TODO: make configurable
3554
glamour.WithWordWrap(wrap),
36-
)
37-
if err != nil {
38-
return "", err
3955
}
4056

41-
return tr.Render(text)
57+
return render(text, opts)
4258
}
4359

4460
func GetStyle(defaultStyle string) string {

pkg/markdown/markdown_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func Test_Render(t *testing.T) {
4343

4444
for _, tt := range tests {
4545
t.Run(tt.name, func(t *testing.T) {
46-
_, err := Render(tt.input.text, tt.input.style, "")
46+
_, err := Render(tt.input.text, tt.input.style)
4747
if tt.output.wantsErr {
4848
assert.Error(t, err)
4949
return

0 commit comments

Comments
 (0)
X Tutup