diff --git a/modules/markup/orgmode/orgmode.go b/modules/markup/orgmode/orgmode.go index 37184dcdac..bcb0df8ffd 100644 --- a/modules/markup/orgmode/orgmode.go +++ b/modules/markup/orgmode/orgmode.go @@ -70,7 +70,15 @@ func Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error w := &orgWriter{rctx: ctx, HTMLWriter: htmlWriter} htmlWriter.ExtendingWriter = w - res, err := org.New().Silent().Parse(input, "").Write(w) + cfg := org.New() + cfg.ReadFile = func(path string) ([]byte, error) { + // actually the orgmode render doesn't support rendering the content from the content again, + // so just leave the plain text to end users + content := fmt.Sprintf("#+INCLUDE: [[%s]]", path) + return []byte(content), nil + } + doc := cfg.Silent().Parse(input, "") + res, err := doc.Write(w) if err != nil { return fmt.Errorf("orgmode.Render failed: %w", err) } diff --git a/modules/markup/orgmode/orgmode_test.go b/modules/markup/orgmode/orgmode_test.go index d18660b054..28607a1531 100644 --- a/modules/markup/orgmode/orgmode_test.go +++ b/modules/markup/orgmode/orgmode_test.go @@ -21,86 +21,74 @@ func TestMain(m *testing.M) { os.Exit(m.Run()) } -func TestRender_StandardLinks(t *testing.T) { - test := func(input, expected string) { - buffer, err := orgmode.RenderString(markup.NewTestRenderContext(), input) - assert.NoError(t, err) - assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) - } +func testRender(t *testing.T, input, expected string) { + buffer, err := orgmode.RenderString(markup.NewTestRenderContext(), input) + assert.NoError(t, err) + assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) +} - test("[[https://google.com/]]", +func TestRender_StandardLinks(t *testing.T) { + testRender(t, "[[https://google.com/]]", `
`) - test("[[ImageLink.svg][The Image Desc]]", + testRender(t, "[[ImageLink.svg][The Image Desc]]", ``) } func TestRender_InternalLinks(t *testing.T) { - test := func(input, expected string) { - buffer, err := orgmode.RenderString(markup.NewTestRenderContext(), input) - assert.NoError(t, err) - assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) - } - - test("[[file:test.org][Test]]", + testRender(t, "[[file:test.org][Test]]", ``) - test("[[./test.org][Test]]", + testRender(t, "[[./test.org][Test]]", ``) - test("[[test.org][Test]]", + testRender(t, "[[test.org][Test]]", ``) - test("[[path/to/test.org][Test]]", + testRender(t, "[[path/to/test.org][Test]]", ``) } func TestRender_Media(t *testing.T) { - test := func(input, expected string) { - buffer, err := orgmode.RenderString(markup.NewTestRenderContext(), input) - assert.NoError(t, err) - assert.Equal(t, strings.TrimSpace(expected), strings.TrimSpace(buffer)) - } - - test("[[file:../../.images/src/02/train.jpg]]", + testRender(t, "[[file:../../.images/src/02/train.jpg]]", `

int a;
#+INCLUDE: [[other.org]]
+