resource: Revert the normalization of Resource.Name

Which means that .Name now returns the same as it did in 0.122.0.

Closes #12142
This commit is contained in:
Bjørn Erik Pedersen
2024-02-25 10:24:46 +01:00
parent 049dd1d7e0
commit d310595a2b
10 changed files with 42 additions and 49 deletions

View File

@@ -48,10 +48,10 @@ import (
)
var (
_ images.ImageResource = (*imageResource)(nil)
_ resource.Source = (*imageResource)(nil)
_ resource.Cloner = (*imageResource)(nil)
_ resource.NameOriginalProvider = (*imageResource)(nil)
_ images.ImageResource = (*imageResource)(nil)
_ resource.Source = (*imageResource)(nil)
_ resource.Cloner = (*imageResource)(nil)
_ resource.NameNormalizedProvider = (*imageResource)(nil)
)
// imageResource represents an image resource.

View File

@@ -59,8 +59,8 @@ type ResourceSourceDescriptor struct {
// The canonical source path.
Path *paths.Path
// The name of the resource.
Name string
// The normalized name of the resource.
NameNormalized string
// The name of the resource as it was read from the source.
NameOriginal string
@@ -135,12 +135,12 @@ func (fd *ResourceSourceDescriptor) init(r *Spec) error {
fd.TargetBasePaths[i] = dir
}
if fd.Name == "" {
fd.Name = fd.TargetPath
if fd.NameNormalized == "" {
fd.NameNormalized = fd.TargetPath
}
if fd.NameOriginal == "" {
fd.NameOriginal = fd.Name
fd.NameOriginal = fd.NameNormalized
}
mediaType := fd.MediaType
@@ -228,7 +228,7 @@ type baseResourceResource interface {
type baseResourceInternal interface {
resource.Source
resource.NameOriginalProvider
resource.NameNormalizedProvider
fileInfo
mediaTypeAssigner
@@ -457,8 +457,8 @@ func (l *genericResource) Name() string {
return l.name
}
func (l *genericResource) NameOriginal() string {
return l.sd.NameOriginal
func (l *genericResource) NameNormalized() string {
return l.sd.NameNormalized
}
func (l *genericResource) Params() maps.Params {

View File

@@ -18,7 +18,6 @@ import (
"fmt"
"strings"
"github.com/gohugoio/hugo/common/paths"
"github.com/gohugoio/hugo/hugofs/glob"
"github.com/spf13/cast"
)
@@ -73,10 +72,10 @@ func (r Resources) Get(name any) Resource {
}
}
// Finally, check the original name.
// Finally, check the normalized name.
for _, resource := range r {
if nop, ok := resource.(NameOriginalProvider); ok {
if strings.EqualFold(namestr, nop.NameOriginal()) {
if nop, ok := resource.(NameNormalizedProvider); ok {
if strings.EqualFold(namestr, nop.NameNormalized()) {
return resource
}
}
@@ -93,23 +92,21 @@ func (r Resources) GetMatch(pattern any) Resource {
panic(err)
}
patternstr = paths.NormalizePathStringBasic(patternstr)
g, err := glob.GetGlob(patternstr)
if err != nil {
panic(err)
}
for _, resource := range r {
if g.Match(paths.NormalizePathStringBasic(resource.Name())) {
if g.Match(resource.Name()) {
return resource
}
}
// Finally, check the original name.
for _, resource := range r {
if nop, ok := resource.(NameOriginalProvider); ok {
if g.Match(paths.NormalizePathStringBasic(nop.NameOriginal())) {
if nop, ok := resource.(NameNormalizedProvider); ok {
if g.Match(nop.NameNormalized()) {
return resource
}
}
@@ -140,15 +137,15 @@ func (r Resources) Match(pattern any) Resources {
var matches Resources
for _, resource := range r {
if g.Match(strings.ToLower(resource.Name())) {
if g.Match(resource.Name()) {
matches = append(matches, resource)
}
}
if len(matches) == 0 {
// Fall back to the original name.
// Fall back to the normalized name.
for _, resource := range r {
if nop, ok := resource.(NameOriginalProvider); ok {
if g.Match(strings.ToLower(nop.NameOriginal())) {
if nop, ok := resource.(NameNormalizedProvider); ok {
if g.Match(nop.NameNormalized()) {
matches = append(matches, resource)
}
}

View File

@@ -127,20 +127,16 @@ type ResourceNameTitleProvider interface {
// So, for the image "/some/path/sunset.jpg" this will be "sunset.jpg".
// The value returned by this method will be used in the GetByPrefix and ByPrefix methods
// on Resources.
// Note that for bundled content resources with language code in the filename, this will
// be the name without the language code.
Name() string
// Title returns the title if set in front matter. For content pages, this will be the expected value.
Title() string
}
type NameOriginalProvider interface {
// NameOriginal is the original name of this resource.
// Note that for bundled content resources with language code in the filename, this will
// be the name with the language code.
type NameNormalizedProvider interface {
// NameNormalized is the normalized name of this resource.
// For internal use (for now).
NameOriginal() string
NameNormalized() string
}
type ResourceParamsProvider interface {

View File

@@ -28,10 +28,10 @@ import (
)
var (
_ mediaTypeAssigner = (*genericResource)(nil)
_ mediaTypeAssigner = (*imageResource)(nil)
_ resource.Staler = (*genericResource)(nil)
_ resource.NameOriginalProvider = (*genericResource)(nil)
_ mediaTypeAssigner = (*genericResource)(nil)
_ mediaTypeAssigner = (*imageResource)(nil)
_ resource.Staler = (*genericResource)(nil)
_ resource.NameNormalizedProvider = (*genericResource)(nil)
)
// metaAssigner allows updating metadata in resources that supports it.

View File

@@ -170,8 +170,8 @@ func (r *Spec) NewResource(rd ResourceSourceDescriptor) (resource.Resource, erro
spec: r,
sd: rd,
params: make(map[string]any),
name: rd.Name,
title: rd.Name,
name: rd.NameOriginal,
title: rd.NameOriginal,
}
if rd.MediaType.MainType == "image" {

View File

@@ -117,8 +117,8 @@ func fetchResourceForSpec(spec *resources.Spec, c *qt.C, name string, targetPath
targetPath := name
base := "/a/"
r, err := spec.NewResource(resources.ResourceSourceDescriptor{
LazyPublish: true,
Name: name, TargetPath: targetPath, BasePathRelPermalink: base, BasePathTargetPath: base, OpenReadSeekCloser: open,
LazyPublish: true,
NameNormalized: name, TargetPath: targetPath, BasePathRelPermalink: base, BasePathTargetPath: base, OpenReadSeekCloser: open,
GroupIdentity: identity.Anonymous,
})
c.Assert(err, qt.IsNil)

View File

@@ -55,7 +55,7 @@ var (
_ resource.WithResourceMetaProvider = (*resourceAdapter)(nil)
_ identity.DependencyManagerProvider = (*resourceAdapter)(nil)
_ identity.IdentityGroupProvider = (*resourceAdapter)(nil)
_ resource.NameOriginalProvider = (*resourceAdapter)(nil)
_ resource.NameNormalizedProvider = (*resourceAdapter)(nil)
)
// These are transformations that need special support in Hugo that may not
@@ -282,9 +282,9 @@ func (r *resourceAdapter) Name() string {
return r.metaProvider.Name()
}
func (r *resourceAdapter) NameOriginal() string {
func (r *resourceAdapter) NameNormalized() string {
r.init(false, false)
return r.target.(resource.NameOriginalProvider).NameOriginal()
return r.target.(resource.NameNormalizedProvider).NameNormalized()
}
func (r *resourceAdapter) Params() maps.Params {