diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-03-09 19:19:29 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2017-03-27 15:43:56 +0200 |
commit | 6bf010fed432e5574e19fd2946ee6397d895950e (patch) | |
tree | 75282ccbd526adc8dba62f9392db282b3bcec49f /output | |
parent | c8fff9501d424882a42f750800d9982ec47df640 (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.go | 8 | ||||
-rw-r--r-- | output/outputType_test.go | 1 |
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) { |