Age | Commit message (Collapse) | Author |
|
Implement lexicographically string sorting
|
|
This is in line with how it behaved before, but it was lifted a little for the project mount for Hugo Modules,
but that could create hard-to-detect loops.
|
|
This commit implements Hugo Modules.
This is a broad subject, but some keywords include:
* A new `module` configuration section where you can import almost anything. You can configure both your own file mounts nd the file mounts of the modules you import. This is the new recommended way of configuring what you earlier put in `configDir`, `staticDir` etc. And it also allows you to mount folders in non-Hugo-projects, e.g. the `SCSS` folder in the Bootstrap GitHub project.
* A module consists of a set of mounts to the standard 7 component types in Hugo: `static`, `content`, `layouts`, `data`, `assets`, `i18n`, and `archetypes`. Yes, Theme Components can now include content, which should be very useful, especially in bigger multilingual projects.
* Modules not in your local file cache will be downloaded automatically and even "hot replaced" while the server is running.
* Hugo Modules supports and encourages semver versioned modules, and uses the minimal version selection algorithm to resolve versions.
* A new set of CLI commands are provided to manage all of this: `hugo mod init`, `hugo mod get`, `hugo mod graph`, `hugo mod tidy`, and `hugo mod vendor`.
All of the above is backed by Go Modules.
Fixes #5973
Fixes #5996
Fixes #6010
Fixes #5911
Fixes #5940
Fixes #6074
Fixes #6082
Fixes #6092
|
|
Merges two maps recursively and returns a new one. Merge is case-insensitive.
Fixes #5992
|
|
|
|
When using a html link checker with Hugo, this template consistently causes errors, as it renders `href=""` attributes when next/previous is disabled.
This change makes it so that the `href` attribute is not rendered at all if `HasNext` is false - which is better semantically, and makes link checking far easier.
|
|
The `sort` template func was producing a `[]page.Page` which did not work in `.Paginate`.
Fixes #6023
|
|
Hugo `0.55.0` introduced some new interface types for `Page` etc.
This worked great in general, but there were cases where this would fail in `where` and `sort`.
One such example would be sorting by `MenuItem.Page.Date` where `Page` on `MenuItem` was a small subset of the bigger `page.Page` interface.
This commit fixes that by unwrapping such interface values.
Fixes #5989
|
|
Fixes #5685
|
|
According to google, this is no longer supported and structured data should be used instead: https://support.google.com/webmasters/answer/6083347?hl=en
|
|
The `safeHTMLAttr` function operates on a full attribute definition, not
just within the attribute value.
Docs: https://gohugo.io/functions/safehtmlattr/
For `opengraph.html`, run the whole `content` HTML attribute through
`safeHTMLAttr`. That will preserve `+` signs in formatted dates.
For `vimeo_simple.html`, `safeHTMLAttr` was in the context of an
attribute value, thus having no effect. In this case we could replace it
with `safeURL`, but since the code is coming from an API it is safer to
just let Go's template engine sanitize the value as it already does with
`provider_url`.
Fixes #5236 (no need to change Go upstream)
Related to #5246
|
|
To get fewer top level packages.
|
|
Fixes #5905
|
|
|
|
|
|
```bash
benchmark old ns/op new ns/op delta
BenchmarkSiteNew/Bundle_with_image-4 14572242 14382188 -1.30%
BenchmarkSiteNew/Bundle_with_JSON_file-4 13683922 13738196 +0.40%
BenchmarkSiteNew/Multiple_languages-4 41912231 25192494 -39.89%
benchmark old allocs new allocs delta
BenchmarkSiteNew/Bundle_with_image-4 57496 57493 -0.01%
BenchmarkSiteNew/Bundle_with_JSON_file-4 57492 57501 +0.02%
BenchmarkSiteNew/Multiple_languages-4 242422 118809 -50.99%
benchmark old bytes new bytes delta
BenchmarkSiteNew/Bundle_with_image-4 3845077 3844065 -0.03%
BenchmarkSiteNew/Bundle_with_JSON_file-4 3627442 3627798 +0.01%
BenchmarkSiteNew/Multiple_languages-4 13963502 7543885 -45.97%
```
Fixes #5890
|
|
See #5875
|
|
Fixes #5875
|
|
Fixes #5852
|
|
Fixes #5865
|
|
Fixes #5863
|
|
Fixes #5834
|
|
* Rewind paginator for server mode
* Add some more related tests.
* Replace the clumsy scratch constructs in internal paginator template with variables
See #5825
|
|
Add the ability to have a `summary` page variable that overrides
the auto-generated summary. Logic for obtaining summary becomes:
* if summary divider is present in content, use the text above it
* if summary variables is present in page metadata, use that
* auto-generate summary from first _x_ words of the content
Fixes #5800
|
|
This commit adds support for return values in partials.
This means that you can now do this and similar:
{{ $v := add . 42 }}
{{ return $v }}
Partials without a `return` statement will be rendered as before.
This works for both `partial` and `partialCached`.
Fixes #5783
|
|
|
|
|
|
The main motivation of this commit is to add a `page.Page` interface to replace the very file-oriented `hugolib.Page` struct.
This is all a preparation step for issue #5074, "pages from other data sources".
But this also fixes a set of annoying limitations, especially related to custom output formats, and shortcodes.
Most notable changes:
* The inner content of shortcodes using the `{{%` as the outer-most delimiter will now be sent to the content renderer, e.g. Blackfriday.
This means that any markdown will partake in the global ToC and footnote context etc.
* The Custom Output formats are now "fully virtualized". This removes many of the current limitations.
* The taxonomy list type now has a reference to the `Page` object.
This improves the taxonomy template `.Title` situation and make common template constructs much simpler.
See #5074
Fixes #5763
Fixes #5758
Fixes #5090
Fixes #5204
Fixes #4695
Fixes #5607
Fixes #5707
Fixes #5719
Fixes #3113
Fixes #5706
Fixes #5767
Fixes #5723
Fixes #5769
Fixes #5770
Fixes #5771
Fixes #5759
Fixes #5776
Fixes #5777
Fixes #5778
|
|
|
|
Before this commit, due to a bug in Go's `text/template` package, this would print different output for typed nil interface values:
```
{{ if .AuthenticatedUser }}User is authenticated!{{ else }}{{ end }}
{{ if not .AuthenticatedUser }}{{ else }}}User is authenticated!{{ end }}
```
This commit works around this by wrapping every `if` and `with` with a custom `getif` template func with truth logic that matches `not`, `and` and `or`.
Those 3 template funcs from Go's stdlib are now pulled into Hugo's source tree and adjusted to support custom zero values, e.g. types that implement `IsZero`.
This means that you can now do:
```
{{ with .Date }}{{ . }}{{ end }}
```
And it would work as expected.
Fixes #5738
|
|
Before this commit `where` would produce an error and bail building the
site. Now, `where` simply skips an element of a collection and does not
add it to the final result.
Closes #5637
Closes #5416
|
|
|
|
See #5643
|
|
Fixes #5643
|
|
Fixes #5645
Fixes #5653
|
|
Signed-off-by: Elliot Murphy <statik@users.noreply.github.com>
|
|
Fixes #5615
|
|
|
|
|
|
Fixes #5564
|
|
Fixes #5568
|
|
See #5555
|
|
See #5555
|
|
See #5428
|
|
Fixes #5555
|
|
Fixes #5428
|
|
Fixes #5538
|
|
Add a reflect namespace that offers a two boolean functions for
testing if a value is a map or slice.
Fixes #4081
|
|
See #5467
|
|
This means that the current `.Site` and ´.Hugo` is available as a globals, so you can do `site.IsServer`, `hugo.Version` etc.
Fixes #5470
Fixes #5467
Fixes #5503
|