summaryrefslogtreecommitdiffstats
path: root/output
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-03-09 19:19:29 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-03-27 15:43:56 +0200
commit6bf010fed432e5574e19fd2946ee6397d895950e (patch)
tree75282ccbd526adc8dba62f9392db282b3bcec49f /output
parentc8fff9501d424882a42f750800d9982ec47df640 (diff)
hugolib: Refactor/-work the permalink/target path logic
This is a pretty fundamental change in Hugo, but absolutely needed if we should have any hope of getting "multiple outputs" done. This commit's goal is to say: * Every file target path is created by `createTargetPath`, i.e. one function for all. * That function takes every page and site parameter into account, to avoid fragile string parsing to uglify etc. later on. * The path creation logic has full test coverage. * All permalinks, paginator URLs etc. are then built on top of that same logic. Fixes #1252 Fixes #2110 Closes #2374 Fixes #1885 Fixes #3102 Fixes #3179 Fixes #1641 Fixes #1989
Diffstat (limited to 'output')
-rw-r--r--output/outputType.go8
-rw-r--r--output/outputType_test.go1
2 files changed, 8 insertions, 1 deletions
diff --git a/output/outputType.go b/output/outputType.go
index e3df96f0b..ad66b4b68 100644
--- a/output/outputType.go
+++ b/output/outputType.go
@@ -27,6 +27,7 @@ var (
Name: "AMP",
MediaType: media.HTMLType,
BaseName: "index",
+ Path: "amp",
}
CSSType = Type{
@@ -43,7 +44,7 @@ var (
JSONType = Type{
Name: "JSON",
- MediaType: media.HTMLType,
+ MediaType: media.JSONType,
BaseName: "index",
IsPlainText: true,
}
@@ -52,6 +53,7 @@ var (
Name: "RSS",
MediaType: media.RSSType,
BaseName: "index",
+ NoUgly: true,
}
)
@@ -112,3 +114,7 @@ func GetTypes(keys ...string) (Types, error) {
return types, nil
}
+
+func (t Type) BaseFilename() string {
+ return t.BaseName + "." + t.MediaType.Suffix
+}
diff --git a/output/outputType_test.go b/output/outputType_test.go
index a55b9a81a..3eb56d8d3 100644
--- a/output/outputType_test.go
+++ b/output/outputType_test.go
@@ -30,6 +30,7 @@ func TestDefaultTypes(t *testing.T) {
require.Equal(t, media.RSSType, RSSType.MediaType)
require.Empty(t, RSSType.Path)
require.False(t, RSSType.IsPlainText)
+ require.True(t, RSSType.NoUgly)
}
func TestGetType(t *testing.T) {