helpers

package
v0.0.0-...-5b3a7c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2022 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const FilePathSeparator = string(filepath.Separator)

FilePathSeparator as defined by os.Separator.

Variables

This section is empty.

Functions

func AddTrailingSlash

func AddTrailingSlash(path string) string

AddTrailingSlash adds a trailing Unix styled slash (/) if not already there.

func BytesToHTML

func BytesToHTML(b []byte) template.HTML

BytesToHTML converts bytes to type template.HTML.

func Deprecated

func Deprecated(item, alternative string, err bool)

Deprecated informs about a deprecation, but only once for a given set of arguments' values. If the err flag is enabled, it logs as an ERROR (will exit with -1) and the text will point at the next Hugo release. The idea is two remove an item in two Hugo releases to give users and theme authors plenty of time to fix their templates.

func DirExists

func DirExists(path string, fs afero.Fs) (bool, error)

DirExists checks if a path exists and is a directory.

func Emoji

func Emoji(key string) []byte

Emoji returns the emojy given a key, e.g. ":smile:", nil if not found.

func Emojify

func Emojify(source []byte) []byte

Emojify "emojifies" the input source. Note that the input byte slice will be modified if needed. See http://www.emoji-cheat-sheet.com/

func ExtractTOC

func ExtractTOC(content []byte) (newcontent []byte, toc []byte)

ExtractTOC extracts Table of Contents from content.

func FirstUpper

func FirstUpper(s string) string

FirstUpper returns a string with the first character as upper case.

func GetCacheDir

func GetCacheDir(fs afero.Fs, cfg config.Provider) (string, error)

GetCacheDir returns a cache dir from the given filesystem and config. The dir will be created if it does not exist.

func GetDottedRelativePath

func GetDottedRelativePath(inPath string) string

GetDottedRelativePath expects a relative path starting after the content directory. It returns a relative path with dots ("..") navigating up the path structure.

func GetTempDir

func GetTempDir(subPath string, fs afero.Fs) string

GetTempDir returns a temporary directory with the given sub path.

func GetTitleFunc

func GetTitleFunc(style string) func(s string) string

GetTitleFunc returns a func that can be used to transform a string to title case.

The supported styles are

- "Go" (strings.Title) - "AP" (see https://www.apstylebook.com/) - "Chicago" (see http://www.chicagomanualofstyle.org/home.html)

If an unknown or empty style is provided, AP style is what you get.

func HashString

func HashString(elements ...any) string

HashString returns a hash from the given elements. It will panic if the hash cannot be calculated.

func MD5FromFileFast

func MD5FromFileFast(r io.ReadSeeker) (string, error)

MD5FromFileFast creates a MD5 hash from the given file. It only reads parts of the file for speed, so don't use it if the files are very subtly different. It will not close the file.

func MD5String

func MD5String(f string) string

MD5String takes a string and returns its MD5 hash.

func NewDistinctErrorLogger

func NewDistinctErrorLogger() loggers.Logger

NewDistinctErrorLogger creates a new DistinctLogger that logs ERRORs

func OpenFileForWriting

func OpenFileForWriting(fs afero.Fs, filename string) (afero.File, error)

OpenFileForWriting opens or creates the given file. If the target directory does not exist, it gets created.

func OpenFilesForWriting

func OpenFilesForWriting(fs afero.Fs, filenames ...string) (io.WriteCloser, error)

OpenFilesForWriting opens all the given filenames for writing.

func ReaderToBytes

func ReaderToBytes(lines io.Reader) []byte

ReaderToBytes takes an io.Reader argument, reads from it and returns bytes.

func SymbolicWalk

func SymbolicWalk(fs afero.Fs, root string, walker hugofs.WalkFunc) error

SymbolicWalk is like filepath.Walk, but it follows symbolic links.

func ToSlashTrimLeading

func ToSlashTrimLeading(s string) string

ToSlashTrimLeading is just a filepath.ToSlaas with an added / prefix trimmer.

func TotalWords

func TotalWords(s string) int

TotalWords counts instance of one or more consecutive white space characters, as defined by unicode.IsSpace, in s. This is a cheaper way of word counting than the obvious len(strings.Fields(s)).

func UniqueStringsReuse

func UniqueStringsReuse(s []string) []string

UniqueStringsReuse returns a slice with any duplicates removed. It will modify the input slice.

func UniqueStringsSorted

func UniqueStringsSorted(s []string) []string

UniqueStringsSorted UniqueStringsReuse returns a sorted slice with any duplicates removed. It will modify the input slice.

func WriteToDisk

func WriteToDisk(inpath string, r io.Reader, fs afero.Fs) (err error)

WriteToDisk writes content to disk.

Types

type ContentSpec

type ContentSpec struct {
	Converters markup.ConverterProvider

	Cfg config.Provider
	// contains filtered or unexported fields
}

ContentSpec provides functionality to render markdown content.

func NewContentSpec

func NewContentSpec(cfg config.Provider, contentFs afero.Fs) (*ContentSpec, error)

NewContentSpec returns a ContentSpec initialized with the appropriate fields from the given config.Provider.

func (*ContentSpec) ResolveMarkup

func (c *ContentSpec) ResolveMarkup(in string) string

func (*ContentSpec) TrimShortHTML

func (c *ContentSpec) TrimShortHTML(input []byte) []byte

TrimShortHTML removes the <p>/</p> tags from HTML input in the situation where said tags are the only <p> tags in the input and enclose the content of the input (whitespace excluded).

func (*ContentSpec) TruncateWordsByRune

func (c *ContentSpec) TruncateWordsByRune(in []string) (string, bool)

TruncateWordsByRune truncates words by runes.

func (*ContentSpec) TruncateWordsToWholeSentence

func (c *ContentSpec) TruncateWordsToWholeSentence(s string) (string, bool)

TruncateWordsToWholeSentence takes content and truncates to whole sentence limited by max number of words. It also returns whether it is truncated.

type DistinctLogger

type DistinctLogger struct {
	loggers.Logger
	sync.RWMutex
	// contains filtered or unexported fields
}

DistinctLogger ignores duplicate log statements.

type PathSpec

type PathSpec struct {
	*paths.Paths
	*filesystems.BaseFs

	// The file systems to use
	Fs *hugofs.Fs

	// The config provider to use
	Cfg config.Provider
}

PathSpec holds methods that decides how paths in URLs and files in Hugo should look like.

func NewPathSpec

func NewPathSpec(fs *hugofs.Fs, cfg config.Provider) (*PathSpec, error)

NewPathSpec creates a new PathSpec from the given filesystems and language.

func NewPathSpecWithBaseBaseFsProvided

func NewPathSpecWithBaseBaseFsProvided(fs *hugofs.Fs, cfg config.Provider, baseBaseFs *filesystems.BaseFs) (*PathSpec, error)

NewPathSpecWithBaseBaseFsProvided creats a new PathSpec from the given filesystems and language. If an existing BaseFs is provided, parts of that is reused.

func (*PathSpec) MakePath

func (p *PathSpec) MakePath(s string) string

MakePath takes a string with any characters and replace it so the string could be used in a path. It does so by creating a Unicode-sanitized string, with the spaces replaced, whilst preserving the original casing of the string. E.g. Social Media -> Social-Media

func (*PathSpec) MakePathSanitized

func (p *PathSpec) MakePathSanitized(s string) string

MakePathSanitized creates a Unicode-sanitized string, with the spaces replaced

func (*PathSpec) MakePathsSanitized

func (p *PathSpec) MakePathsSanitized(paths []string)

MakePathsSanitized applies MakePathSanitized on every item in the slice

func (*PathSpec) PermalinkForBaseURL

func (p *PathSpec) PermalinkForBaseURL(link, baseURL string) string

PermalinkForBaseURL creates a permalink from the given link and baseURL.

func (*PathSpec) PrependBasePath

func (p *PathSpec) PrependBasePath(rel string, isAbs bool) string

PrependBasePath prepends any baseURL sub-folder to the given resource

func (*PathSpec) URLEscape

func (p *PathSpec) URLEscape(uri string) string

URLEscape escapes unicode letters.

func (*PathSpec) URLize

func (p *PathSpec) URLize(uri string) string

URLize is similar to MakePath, but with Unicode handling Example:

uri: Vim (text editor)
urlize: vim-text-editor

func (*PathSpec) URLizeFilename

func (p *PathSpec) URLizeFilename(filename string) string

URLizeFilename creates an URL from a filename by escaping unicode letters and turn any filepath separator into forward slashes.

func (*PathSpec) UnicodeSanitize

func (p *PathSpec) UnicodeSanitize(s string) string

UnicodeSanitize sanitizes string to be used in Hugo URL's, allowing only a predefined set of special Unicode characters. If RemovePathAccents configuration flag is enabled, Unicode accents are also removed. Hyphens in the original input are maintained. Spaces will be replaced with a single hyphen, and sequential replacement hyphens will be reduced to one.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL