summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2017-03-05 18:23:00 +0100
committerBjørn Erik Pedersen <[email protected]>2017-03-27 15:43:56 +0200
commitd3d2c63dd98ea2339ae31501f04346cfb93be6c6 (patch)
treefbb689f5b8f11095fa5fdc5a017538527b5d2dc5
parentc4989c39f1b29b82475fd350d91af7b5c2c19bf5 (diff)
downloadhugo-d3d2c63dd98ea2339ae31501f04346cfb93be6c6.tar.gz
hugo-d3d2c63dd98ea2339ae31501f04346cfb93be6c6.zip
output: Add output type
-rw-r--r--hugolib/page.go4
-rw-r--r--hugolib/site_render.go2
-rw-r--r--media/mediaType.go (renamed from media/type.go)13
-rw-r--r--media/mediaType_test.go37
-rw-r--r--output/outputType.go46
-rw-r--r--output/outputType_test.go33
6 files changed, 126 insertions, 9 deletions
diff --git a/hugolib/page.go b/hugolib/page.go
index db31a90ae..554bd30cd 100644
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -1886,8 +1886,8 @@ func kindFromFilename(filename string) string {
// TODO(bep) output
var (
- mediaTypesWithRSS = media.Types{media.HtmlType, media.RSSType}
- mediaTypesHTML = media.Types{media.HtmlType}
+ mediaTypesWithRSS = media.Types{media.HTMLType, media.RSSType}
+ mediaTypesHTML = media.Types{media.HTMLType}
)
func (p *Page) setValuesForKind(s *Site) {
diff --git a/hugolib/site_render.go b/hugolib/site_render.go
index 24c77a60b..54c88d9b2 100644
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -67,7 +67,7 @@ func pageRenderer(s *Site, pages <-chan *Page, results chan<- error, wg *sync.Wa
for _, mediaType := range p.mediaTypes {
switch mediaType {
- case media.HtmlType:
+ case media.HTMLType:
targetPath := p.TargetPath()
layouts := p.layouts()
diff --git a/media/type.go b/media/mediaType.go
index 701f8f4e1..4663a274d 100644
--- a/media/type.go
+++ b/media/mediaType.go
@@ -35,18 +35,18 @@ type Type struct {
// 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 {
- if m.Suffix != "" {
- return fmt.Sprintf("%s/%s+%s", m.Type, m.SubType, m.Suffix)
- }
return fmt.Sprintf("%s/%s", m.Type, m.SubType)
}
func (m Type) String() string {
- return m.Key()
+ if m.Suffix != "" {
+ return fmt.Sprintf("%s/%s+%s", m.Type, m.SubType, m.Suffix)
+ }
+ return fmt.Sprintf("%s/%s", m.Type, m.SubType)
}
var (
- HtmlType = Type{"text", "html", "html"}
+ HTMLType = Type{"text", "html", "html"}
RSSType = Type{"application", "rss", "xml"}
)
@@ -54,8 +54,9 @@ var (
// These can be ovverriden, and more added if needed, in the Hugo configuration file.
// The final media type set set will also be added as extensions to mime so
// they will be recognised by the built-in server in Hugo.
+// TODO(bep) output remove
var DefaultMediaTypes = Types{
- HtmlType,
+ HTMLType,
RSSType,
// TODO(bep) output
diff --git a/media/mediaType_test.go b/media/mediaType_test.go
new file mode 100644
index 000000000..64a0a6567
--- /dev/null
+++ b/media/mediaType_test.go
@@ -0,0 +1,37 @@
+// Copyright 2017-present The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package media
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestDefaultTypes(t *testing.T) {
+ require.Equal(t, "text", HTMLType.Type)
+ require.Equal(t, "html", HTMLType.SubType)
+ require.Equal(t, "html", HTMLType.Suffix)
+
+ require.Equal(t, "text/html", HTMLType.Key())
+ require.Equal(t, "text/html+html", HTMLType.String())
+
+ require.Equal(t, "application", RSSType.Type)
+ require.Equal(t, "rss", RSSType.SubType)
+ require.Equal(t, "xml", RSSType.Suffix)
+
+ require.Equal(t, "application/rss", RSSType.Key())
+ require.Equal(t, "application/rss+xml", RSSType.String())
+
+}
diff --git a/output/outputType.go b/output/outputType.go
new file mode 100644
index 000000000..d79ab0590
--- /dev/null
+++ b/output/outputType.go
@@ -0,0 +1,46 @@
+// Copyright 2017-present The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package output
+
+import (
+ "github.com/spf13/hugo/media"
+)
+
+var (
+ HTMLType = Type{
+ Name: "HTML",
+ MediaType: media.HTMLType,
+ }
+
+ RSSType = Type{
+ Name: "RSS",
+ MediaType: media.RSSType,
+ }
+)
+
+// Type represents an output represenation, usually to a file on disk.
+type Type struct {
+ // The Name is used as an identifier. Internal output types (i.e. HTML and RSS)
+ // can be overridden by providing a new definition for those types.
+ Name string
+
+ MediaType media.Type
+
+ // Must be set to a value when there are two or more conflicting mediatype for the same resource.
+ Path string
+
+ // IsPlainText decides whether to use text/template or html/template
+ // as template parser.
+ IsPlainText bool
+}
diff --git a/output/outputType_test.go b/output/outputType_test.go
new file mode 100644
index 000000000..6f84c93d3
--- /dev/null
+++ b/output/outputType_test.go
@@ -0,0 +1,33 @@
+// Copyright 2017-present The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package output
+
+import (
+ "testing"
+
+ "github.com/spf13/hugo/media"
+ "github.com/stretchr/testify/require"
+)
+
+func TestDefaultTypes(t *testing.T) {
+ require.Equal(t, "HTML", HTMLType.Name)
+ require.Equal(t, media.HTMLType, HTMLType.MediaType)
+ require.Empty(t, HTMLType.Path)
+ require.False(t, HTMLType.IsPlainText)
+
+ require.Equal(t, "RSS", RSSType.Name)
+ require.Equal(t, media.RSSType, RSSType.MediaType)
+ require.Empty(t, RSSType.Path)
+ require.False(t, RSSType.IsPlainText)
+}