mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
hugolib, media: Make the MediaType available to the templates
This commit is contained in:
parent
c7dbee2321
commit
4aaed87dd9
3 changed files with 23 additions and 14 deletions
|
@ -19,6 +19,8 @@ import (
|
|||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/spf13/hugo/media"
|
||||
|
||||
"github.com/spf13/hugo/output"
|
||||
)
|
||||
|
||||
|
@ -133,6 +135,7 @@ type OutputFormat struct {
|
|||
|
||||
// It may be tempting to export this, but let us hold on to that horse for a while.
|
||||
f output.Format
|
||||
|
||||
p *Page
|
||||
}
|
||||
|
||||
|
@ -141,6 +144,11 @@ func (o OutputFormat) Name() string {
|
|||
return o.f.Name
|
||||
}
|
||||
|
||||
// MediaType returns this OutputFormat's MediaType (MIME type).
|
||||
func (o OutputFormat) MediaType() media.Type {
|
||||
return o.f.MediaType
|
||||
}
|
||||
|
||||
// TODO(bep) outputs consider just save this wrapper on Page.
|
||||
// OutputFormats gives the output formats for this Page.
|
||||
func (p *Page) OutputFormats() OutputFormats {
|
||||
|
|
|
@ -26,23 +26,24 @@ type Types []Type
|
|||
// If suffix is not provided, the sub type will be used.
|
||||
// See // https://en.wikipedia.org/wiki/Media_type
|
||||
type Type struct {
|
||||
Type string // i.e. text
|
||||
SubType string // i.e. html
|
||||
Suffix string // i.e html
|
||||
MainType string // i.e. text
|
||||
SubType string // i.e. html
|
||||
Suffix string // i.e html
|
||||
}
|
||||
|
||||
// Key return a key used to identify this media type. Hugo will register a set of
|
||||
// default media types. These can be overridden by the user in the configuration,
|
||||
// by defining a media type with the same Key.
|
||||
func (m Type) Key() string {
|
||||
return fmt.Sprintf("%s/%s", m.Type, m.SubType)
|
||||
// Type returns a string representing the main- and sub-type of a media type, i.e. "text/css".
|
||||
// Hugo will register a set of default media types.
|
||||
// These can be overridden by the user in the configuration,
|
||||
// by defining a media type with the same Type.
|
||||
func (m Type) Type() string {
|
||||
return fmt.Sprintf("%s/%s", m.MainType, m.SubType)
|
||||
}
|
||||
|
||||
func (m Type) String() string {
|
||||
if m.Suffix != "" {
|
||||
return fmt.Sprintf("%s/%s+%s", m.Type, m.SubType, m.Suffix)
|
||||
return fmt.Sprintf("%s/%s+%s", m.MainType, m.SubType, m.Suffix)
|
||||
}
|
||||
return fmt.Sprintf("%s/%s", m.Type, m.SubType)
|
||||
return fmt.Sprintf("%s/%s", m.MainType, m.SubType)
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
|
@ -20,18 +20,18 @@ import (
|
|||
)
|
||||
|
||||
func TestDefaultTypes(t *testing.T) {
|
||||
require.Equal(t, "text", HTMLType.Type)
|
||||
require.Equal(t, "text", HTMLType.MainType)
|
||||
require.Equal(t, "html", HTMLType.SubType)
|
||||
require.Equal(t, "html", HTMLType.Suffix)
|
||||
|
||||
require.Equal(t, "text/html", HTMLType.Key())
|
||||
require.Equal(t, "text/html", HTMLType.MainType())
|
||||
require.Equal(t, "text/html+html", HTMLType.String())
|
||||
|
||||
require.Equal(t, "application", RSSType.Type)
|
||||
require.Equal(t, "application", RSSType.MainType)
|
||||
require.Equal(t, "rss", RSSType.SubType)
|
||||
require.Equal(t, "xml", RSSType.Suffix)
|
||||
|
||||
require.Equal(t, "application/rss", RSSType.Key())
|
||||
require.Equal(t, "application/rss", RSSType.MainType())
|
||||
require.Equal(t, "application/rss+xml", RSSType.String())
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue