Documentation
¶
Overview ¶
Package resources contains Resource related types.
Index ¶
- Constants
- func AssignMetadata(metadata []map[string]any, resources ...resource.Resource) error
- func Copy(r resource.Resource, targetPath string) resource.Resource
- func NewErrorResource(err resource.ResourceError) resource.Resource
- func ResourceCacheKey(filename string) string
- func ResourceKeyContainsAny(key string, partitions []string) bool
- func ResourceKeyPartitions(filename string) []string
- type ImageCache
- type PostBuildAssets
- type ResourceCache
- func (c *ResourceCache) Contains(key string) bool
- func (c *ResourceCache) DeleteMatches(match func(string) bool)
- func (c *ResourceCache) DeleteMatchesRe(re *regexp.Regexp)
- func (c *ResourceCache) DeletePartitions(partitions ...string)
- func (c *ResourceCache) GetOrCreate(key string, f func() (resource.Resource, error)) (resource.Resource, error)
- func (c *ResourceCache) GetOrCreateResources(key string, f func() (resource.Resources, error)) (resource.Resources, error)
- type ResourceSourceDescriptor
- type ResourceTransformation
- type ResourceTransformationCtx
- type ResourceTransformer
- type Spec
- func (r *Spec) BuildConfig() config.BuildConfig
- func (r *Spec) CacheStats() string
- func (r *Spec) ClearCaches()
- func (r *Spec) DeleteBySubstring(s string)
- func (r *Spec) MediaTypes() media.Types
- func (r *Spec) New(fd ResourceSourceDescriptor) (resource.Resource, error)
- func (r *Spec) OutputFormats() output.Formats
- func (spec *Spec) PostProcess(r resource.Resource) (postpub.PostPublishedResource, error)
- func (s *Spec) String() string
- type SpecCommon
- type Transformer
Constants ¶
const ( CACHE_CLEAR_ALL = "clear_all" CACHE_OTHER = "other" )
Variables ¶
This section is empty.
Functions ¶
func AssignMetadata ¶
AssignMetadata assigns the given metadata to those resources that supports updates and matching by wildcard given in `src` using `filepath.Match` with lower cased values. This assignment is additive, but the most specific match needs to be first. The `name` and `title` metadata field support shell-matched collection it got a match in. See https://golang.org/pkg/path/#Match
func NewErrorResource ¶
func NewErrorResource(err resource.ResourceError) resource.Resource
NewErrorResource wraps err in a Resource where all but the Err method will panic.
func ResourceCacheKey ¶
ResourceCacheKey converts the filename into the format used in the resource cache.
func ResourceKeyContainsAny ¶
ResourceKeyContainsAny returns whether the key is a member of any of the given partitions.
This is used for resource cache invalidation.
func ResourceKeyPartitions ¶
ResourceKeyPartitions resolves a ordered slice of partitions that is used to do resource cache invalidations.
We use the first directory path element and the extension, so:
a/b.json => "a", "json" b.json => "json"
For some of the extensions we will also map to closely related types, e.g. "scss" will also return "sass".
Types ¶
type ImageCache ¶
type ImageCache struct {
// contains filtered or unexported fields
}
ImageCache is a cache for image resources. The backing caches are shared between all sites.
func (ImageCache) WithPathSpec ¶
func (c ImageCache) WithPathSpec(ps *helpers.PathSpec) *ImageCache
WithPathSpec returns a copy of the ImageCache with the given PathSpec set.
type PostBuildAssets ¶
type PostBuildAssets struct {
PostProcessResources map[string]postpub.PostPublishedResource
JSConfigBuilder *jsconfig.Builder
// contains filtered or unexported fields
}
type ResourceCache ¶
func (*ResourceCache) Contains ¶
func (c *ResourceCache) Contains(key string) bool
func (*ResourceCache) DeleteMatches ¶
func (c *ResourceCache) DeleteMatches(match func(string) bool)
func (*ResourceCache) DeleteMatchesRe ¶
func (c *ResourceCache) DeleteMatchesRe(re *regexp.Regexp)
func (*ResourceCache) DeletePartitions ¶
func (c *ResourceCache) DeletePartitions(partitions ...string)
func (*ResourceCache) GetOrCreate ¶
func (*ResourceCache) GetOrCreateResources ¶
type ResourceSourceDescriptor ¶
type ResourceSourceDescriptor struct {
// TargetPaths is a callback to fetch paths's relative to its owner.
TargetPaths func() page.TargetPaths
// Need one of these to load the resource content.
SourceFile source.File
OpenReadSeekCloser resource.OpenReadSeekCloser
FileInfo os.FileInfo
// If OpenReadSeekerCloser is not set, we use this to open the file.
SourceFilename string
Fs afero.Fs
Data map[string]any
// Set when its known up front, else it's resolved from the target filename.
MediaType media.Type
// The relative target filename without any language code.
RelTargetFilename string
// Any base paths prepended to the target path. This will also typically be the
// language code, but setting it here means that it should not have any effect on
// the permalink.
// This may be several values. In multihost mode we may publish the same resources to
// multiple targets.
TargetBasePaths []string
// Delay publishing until either Permalink or RelPermalink is called. Maybe never.
LazyPublish bool
}
func (ResourceSourceDescriptor) Filename ¶
func (r ResourceSourceDescriptor) Filename() string
type ResourceTransformation ¶
type ResourceTransformation interface {
Key() internal.ResourceTransformationKey
Transform(ctx *ResourceTransformationCtx) error
}
ResourceTransformation is the interface that a resource transformation step needs to implement.
func NewFeatureNotAvailableTransformer ¶
func NewFeatureNotAvailableTransformer(key string, elements ...any) ResourceTransformation
type ResourceTransformationCtx ¶
type ResourceTransformationCtx struct {
// The context that started the transformation.
Ctx context.Context
// The content to transform.
From io.Reader
// The target of content transformation.
// The current implementation requires that r is written to w
// even if no transformation is performed.
To io.Writer
// This is the relative path to the original source. Unix styled slashes.
SourcePath string
// This is the relative target path to the resource. Unix styled slashes.
InPath string
// The relative target path to the transformed resource. Unix styled slashes.
OutPath string
// The input media type
InMediaType media.Type
// The media type of the transformed resource.
OutMediaType media.Type
// Data data can be set on the transformed Resource. Not that this need
// to be simple types, as it needs to be serialized to JSON and back.
Data map[string]any
// This is used to publish additional artifacts, e.g. source maps.
// We may improve this.
OpenResourcePublisher func(relTargetPath string) (io.WriteCloser, error)
}
func (*ResourceTransformationCtx) AddOutPathIdentifier ¶
func (ctx *ResourceTransformationCtx) AddOutPathIdentifier(identifier string)
AddOutPathIdentifier transforming InPath to OutPath adding an identifier, eg '.min' before any extension.
func (*ResourceTransformationCtx) PublishSourceMap ¶
func (ctx *ResourceTransformationCtx) PublishSourceMap(content string) error
PublishSourceMap writes the content to the target folder of the main resource with the ".map" extension added.
func (*ResourceTransformationCtx) ReplaceOutPathExtension ¶
func (ctx *ResourceTransformationCtx) ReplaceOutPathExtension(newExt string)
ReplaceOutPathExtension transforming InPath to OutPath replacing the file extension, e.g. ".scss"
type ResourceTransformer ¶
type ResourceTransformer interface {
resource.Resource
Transformer
}
type Spec ¶
type Spec struct {
*helpers.PathSpec
Logger loggers.Logger
ErrorSender herrors.ErrorSender
TextTemplates tpl.TemplateParseFinder
Permalinks page.PermalinkExpander
ImageCache *ImageCache
ExecHelper *hexec.Exec
*SpecCommon
// contains filtered or unexported fields
}
func NewSpec ¶
func NewSpec( s *helpers.PathSpec, common *SpecCommon, imageCache *ImageCache, incr identity.Incrementer, logger loggers.Logger, errorHandler herrors.ErrorSender, execHelper *hexec.Exec) (*Spec, error)
func (*Spec) BuildConfig ¶
func (r *Spec) BuildConfig() config.BuildConfig
func (*Spec) CacheStats ¶
func (*Spec) ClearCaches ¶
func (r *Spec) ClearCaches()
func (*Spec) DeleteBySubstring ¶
func (*Spec) MediaTypes ¶
func (*Spec) OutputFormats ¶
func (*Spec) PostProcess ¶
PostProcess wraps the given Resource for later processing.
type SpecCommon ¶
type SpecCommon struct {
ResourceCache *ResourceCache
FileCaches filecache.Caches
// Assets used after the build is done.
// This is shared between all sites.
*PostBuildAssets
// contains filtered or unexported fields
}
The parts of Spec that's comoon for all sites.
type Transformer ¶
type Transformer interface {
Transform(...ResourceTransformation) (ResourceTransformer, error)
TransformWithContext(context.Context, ...ResourceTransformation) (ResourceTransformer, error)
}
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package images provides template functions for manipulating images.
|
Package images provides template functions for manipulating images. |
|
Package page contains the core interfaces and types for the Page resource, a core component in Hugo.
|
Package page contains the core interfaces and types for the Page resource, a core component in Hugo. |
|
Package resource contains Resource related types.
|
Package resource contains Resource related types. |
|
resource_factories
|
|
|
bundler
Package bundler contains functions for concatenation etc.
|
Package bundler contains functions for concatenation etc. |
|
create
Package create contains functions for to create Resource objects.
|
Package create contains functions for to create Resource objects. |
|
resource_transformers
|
|
|
templates
Package templates contains functions for template processing of Resource objects.
|
Package templates contains functions for template processing of Resource objects. |
|
tocss/dartsass
Package dartsass integrates with the Dass Sass Embedded protocol to transpile SCSS/SASS.
|
Package dartsass integrates with the Dass Sass Embedded protocol to transpile SCSS/SASS. |