diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2022-05-27 15:19:02 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2022-05-30 11:32:55 +0200 |
commit | 322d19a81fedbf423a047bdf286499d2e25d14be (patch) | |
tree | 0bfff44177d7bd6fde36fa84c45597e6069b3c2a | |
parent | 7cb484e121da73b63aab231ba29bb644b5f7965e (diff) |
Add Markdown as an output format
The motivation behind this is not to make it easier to publish Markdown files, as that sounds unusual.
This is mainly meant for shortcodes that produces Markdown to be inlined.
You would do this by creating shortcodes with `*.md` suffix (e.g. `layouts/shortcodes/myshortcode.md`).
This output format is defined as plain text, and will use Go's much more lenient text template parser.
Updates #9821
-rw-r--r-- | hugolib/shortcode_test.go | 33 | ||||
-rw-r--r-- | media/mediaType.go | 4 | ||||
-rw-r--r-- | media/mediaType_test.go | 2 | ||||
-rw-r--r-- | output/outputFormat.go | 9 | ||||
-rw-r--r-- | output/outputFormat_test.go | 2 |
5 files changed, 47 insertions, 3 deletions
diff --git a/hugolib/shortcode_test.go b/hugolib/shortcode_test.go index 7926a8203..372e1be9b 100644 --- a/hugolib/shortcode_test.go +++ b/hugolib/shortcode_test.go @@ -909,3 +909,36 @@ outputs: ["html", "css", "csv", "json"] } } + +// #9821 +func TestShortcodeMarkdownOutputFormat(t *testing.T) { + t.Parallel() + + files := ` +-- config.toml -- +-- content/p1.md -- +--- +title: "p1" +--- +{{< foo >}} +-- layouts/shortcodes/foo.md -- +§§§ +<x +§§§ +-- layouts/_default/single.html -- +{{ .Content }} +` + + b := NewIntegrationTestBuilder( + IntegrationTestConfig{ + T: t, + TxtarString: files, + Running: true, + }, + ).Build() + + b.AssertFileContent("public/p1/index.html", ` +<x + `) + +} diff --git a/media/mediaType.go b/media/mediaType.go index 69bb9182a..3ac3123ac 100644 --- a/media/mediaType.go +++ b/media/mediaType.go @@ -257,7 +257,8 @@ var ( OpenTypeFontType = newMediaType("font", "otf", []string{"otf"}) // Common document types - PDFType = newMediaType("application", "pdf", []string{"pdf"}) + PDFType = newMediaType("application", "pdf", []string{"pdf"}) + MarkdownType = newMediaType("text", "markdown", []string{"md", "markdown"}) // Common video types AVIType = newMediaType("video", "x-msvideo", []string{"avi"}) @@ -278,6 +279,7 @@ var DefaultTypes = Types{ SCSSType, SASSType, HTMLType, + MarkdownType, JavascriptType, TypeScriptType, TSXType, diff --git a/media/mediaType_test.go b/media/mediaType_test.go index 34571f7ee..af7123cb5 100644 --- a/media/mediaType_test.go +++ b/media/mediaType_test.go @@ -63,7 +63,7 @@ func TestDefaultTypes(t *testing.T) { } - c.Assert(len(DefaultTypes), qt.Equals, 33) + c.Assert(len(DefaultTypes), qt.Equals, 34) } func TestGetByType(t *testing.T) { diff --git a/output/outputFormat.go b/output/outputFormat.go index 1f1556eaf..722079df9 100644 --- a/output/outputFormat.go +++ b/output/outputFormat.go @@ -133,6 +133,14 @@ var ( Weight: 10, } + MarkdownFormat = Format{ + Name: "MARKDOWN", + MediaType: media.MarkdownType, + BaseName: "index", + Rel: "alternate", + IsPlainText: true, + } + JSONFormat = Format{ Name: "JSON", MediaType: media.JSONType, @@ -183,6 +191,7 @@ var DefaultFormats = Formats{ CSVFormat, HTMLFormat, JSONFormat, + MarkdownFormat, WebAppManifestFormat, RobotsTxtFormat, RSSFormat, diff --git a/output/outputFormat_test.go b/output/outputFormat_test.go index a150dbe7c..c5c4534bf 100644 --- a/output/outputFormat_test.go +++ b/output/outputFormat_test.go @@ -68,7 +68,7 @@ func TestDefaultTypes(t *testing.T) { c.Assert(RSSFormat.NoUgly, qt.Equals, true) c.Assert(CalendarFormat.IsHTML, qt.Equals, false) - c.Assert(len(DefaultFormats), qt.Equals, 10) + c.Assert(len(DefaultFormats), qt.Equals, 11) } |