models

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CSVFenceConfig

type CSVFenceConfig struct {
	// Enabled controls whether CSV blocks are converted to tables (default: true)
	Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`

	// TableClass is the CSS class for generated tables (default: "csv-table")
	TableClass string `json:"table_class" yaml:"table_class" toml:"table_class"`

	// HasHeader indicates whether the first row is a header (default: true)
	HasHeader bool `json:"has_header" yaml:"has_header" toml:"has_header"`

	// Delimiter is the CSV field delimiter (default: ",")
	Delimiter string `json:"delimiter" yaml:"delimiter" toml:"delimiter"`
}

CSVFenceConfig configures the csv_fence plugin.

func NewCSVFenceConfig

func NewCSVFenceConfig() CSVFenceConfig

NewCSVFenceConfig creates a new CSVFenceConfig with default values.

type Config

type Config struct {
	// OutputDir is the directory where generated files are written (default: "output")
	OutputDir string `json:"output_dir" yaml:"output_dir" toml:"output_dir"`

	// URL is the base URL of the site
	URL string `json:"url" yaml:"url" toml:"url"`

	// Title is the site title
	Title string `json:"title" yaml:"title" toml:"title"`

	// Description is the site description
	Description string `json:"description" yaml:"description" toml:"description"`

	// Author is the site author
	Author string `json:"author" yaml:"author" toml:"author"`

	// AssetsDir is the directory containing static assets (default: "static")
	AssetsDir string `json:"assets_dir" yaml:"assets_dir" toml:"assets_dir"`

	// TemplatesDir is the directory containing templates (default: "templates")
	TemplatesDir string `json:"templates_dir" yaml:"templates_dir" toml:"templates_dir"`

	// Hooks is the list of hooks to run (default: ["default"])
	Hooks []string `json:"hooks" yaml:"hooks" toml:"hooks"`

	// DisabledHooks is the list of hooks to disable
	DisabledHooks []string `json:"disabled_hooks" yaml:"disabled_hooks" toml:"disabled_hooks"`

	// GlobConfig configures file globbing behavior
	GlobConfig GlobConfig `json:"glob" yaml:"glob" toml:"glob"`

	// MarkdownConfig configures markdown processing
	MarkdownConfig MarkdownConfig `json:"markdown" yaml:"markdown" toml:"markdown"`

	// Feeds is the list of feed configurations
	Feeds []FeedConfig `json:"feeds" yaml:"feeds" toml:"feeds"`

	// FeedDefaults provides default values for feed configurations
	FeedDefaults FeedDefaults `json:"feed_defaults" yaml:"feed_defaults" toml:"feed_defaults"`

	// Concurrency is the number of concurrent workers (default: 0 = auto)
	Concurrency int `json:"concurrency" yaml:"concurrency" toml:"concurrency"`

	// Theme configures the site theme
	Theme ThemeConfig `json:"theme" yaml:"theme" toml:"theme"`
}

Config represents the site configuration for markata-go.

func NewConfig

func NewConfig() *Config

NewConfig creates a new Config with default values.

func (*Config) IsHookEnabled

func (c *Config) IsHookEnabled(name string) bool

IsHookEnabled checks if a hook is enabled (in Hooks and not in DisabledHooks).

type ConfigValidationError

type ConfigValidationError struct {
	Field   string
	Value   interface{}
	Message string
}

ConfigValidationError indicates a configuration validation error.

func NewConfigValidationError

func NewConfigValidationError(field string, value interface{}, message string) *ConfigValidationError

NewConfigValidationError creates a new ConfigValidationError.

func (*ConfigValidationError) Error

func (e *ConfigValidationError) Error() string

type FeedConfig

type FeedConfig struct {
	// Slug is the URL-safe identifier for the feed
	Slug string `json:"slug" yaml:"slug" toml:"slug"`

	// Title is the feed title
	Title string `json:"title" yaml:"title" toml:"title"`

	// Description is the feed description
	Description string `json:"description" yaml:"description" toml:"description"`

	// Filter is the filter expression for selecting posts
	Filter string `json:"filter" yaml:"filter" toml:"filter"`

	// Sort is the field to sort posts by
	Sort string `json:"sort" yaml:"sort" toml:"sort"`

	// Reverse indicates if the sort order should be reversed
	Reverse bool `json:"reverse" yaml:"reverse" toml:"reverse"`

	// ItemsPerPage is the number of items per page (default: 10)
	ItemsPerPage int `json:"items_per_page" yaml:"items_per_page" toml:"items_per_page"`

	// OrphanThreshold is the minimum number of items for a separate page (default: 3)
	OrphanThreshold int `json:"orphan_threshold" yaml:"orphan_threshold" toml:"orphan_threshold"`

	// Formats specifies which output formats to generate
	Formats FeedFormats `json:"formats" yaml:"formats" toml:"formats"`

	// Templates specifies custom templates for each format
	Templates FeedTemplates `json:"templates" yaml:"templates" toml:"templates"`

	// Posts holds the filtered posts at runtime (not serialized)
	Posts []*Post `json:"-" yaml:"-" toml:"-"`

	// Pages holds the paginated results at runtime (not serialized)
	Pages []FeedPage `json:"-" yaml:"-" toml:"-"`
}

FeedConfig represents a feed configuration.

func NewFeedConfig

func NewFeedConfig(defaults FeedDefaults) *FeedConfig

NewFeedConfig creates a new FeedConfig with default values from FeedDefaults.

func (*FeedConfig) ApplyDefaults

func (f *FeedConfig) ApplyDefaults(defaults FeedDefaults)

ApplyDefaults applies default values from FeedDefaults to a FeedConfig for any fields that are not explicitly set.

func (*FeedConfig) Paginate

func (f *FeedConfig) Paginate(baseURL string)

Paginate divides the Posts slice into pages based on ItemsPerPage and OrphanThreshold.

type FeedDefaults

type FeedDefaults struct {
	// ItemsPerPage is the default number of items per page
	ItemsPerPage int `json:"items_per_page" yaml:"items_per_page" toml:"items_per_page"`

	// OrphanThreshold is the default minimum number of items for a separate page
	OrphanThreshold int `json:"orphan_threshold" yaml:"orphan_threshold" toml:"orphan_threshold"`

	// Formats specifies the default output formats
	Formats FeedFormats `json:"formats" yaml:"formats" toml:"formats"`

	// Templates specifies the default templates
	Templates FeedTemplates `json:"templates" yaml:"templates" toml:"templates"`

	// Syndication configures syndication feed behavior
	Syndication SyndicationConfig `json:"syndication" yaml:"syndication" toml:"syndication"`
}

FeedDefaults provides default values that feeds inherit.

func NewFeedDefaults

func NewFeedDefaults() FeedDefaults

NewFeedDefaults creates FeedDefaults with sensible default values.

type FeedFormats

type FeedFormats struct {
	// HTML generates an HTML page
	HTML bool `json:"html" yaml:"html" toml:"html"`

	// RSS generates an RSS feed
	RSS bool `json:"rss" yaml:"rss" toml:"rss"`

	// Atom generates an Atom feed
	Atom bool `json:"atom" yaml:"atom" toml:"atom"`

	// JSON generates a JSON feed
	JSON bool `json:"json" yaml:"json" toml:"json"`

	// Markdown generates a Markdown file
	Markdown bool `json:"markdown" yaml:"markdown" toml:"markdown"`

	// Text generates a plain text file
	Text bool `json:"text" yaml:"text" toml:"text"`
}

FeedFormats specifies which output formats to generate for a feed.

func (FeedFormats) HasAnyEnabled

func (f FeedFormats) HasAnyEnabled() bool

HasAnyEnabled returns true if any output format is enabled.

type FeedPage

type FeedPage struct {
	// Number is the page number (1-indexed)
	Number int `json:"number" yaml:"number" toml:"number"`

	// Posts is the list of posts on this page
	Posts []*Post `json:"posts" yaml:"posts" toml:"posts"`

	// HasPrev indicates if there is a previous page
	HasPrev bool `json:"has_prev" yaml:"has_prev" toml:"has_prev"`

	// HasNext indicates if there is a next page
	HasNext bool `json:"has_next" yaml:"has_next" toml:"has_next"`

	// PrevURL is the URL of the previous page
	PrevURL string `json:"prev_url" yaml:"prev_url" toml:"prev_url"`

	// NextURL is the URL of the next page
	NextURL string `json:"next_url" yaml:"next_url" toml:"next_url"`
}

FeedPage represents a single page of paginated feed results.

type FeedTemplates

type FeedTemplates struct {
	// HTML is the template for HTML output
	HTML string `json:"html" yaml:"html" toml:"html"`

	// RSS is the template for RSS output
	RSS string `json:"rss" yaml:"rss" toml:"rss"`

	// Atom is the template for Atom output
	Atom string `json:"atom" yaml:"atom" toml:"atom"`

	// JSON is the template for JSON output
	JSON string `json:"json" yaml:"json" toml:"json"`

	// Card is the template for individual post cards
	Card string `json:"card" yaml:"card" toml:"card"`
}

FeedTemplates specifies custom templates for feed formats.

type FilterExpressionError

type FilterExpressionError struct {
	Expression string
	Position   int
	Message    string
	Err        error
}

FilterExpressionError indicates an error in a filter expression.

func NewFilterExpressionError

func NewFilterExpressionError(expression, message string, err error) *FilterExpressionError

NewFilterExpressionError creates a new FilterExpressionError.

func (*FilterExpressionError) Error

func (e *FilterExpressionError) Error() string

func (*FilterExpressionError) Unwrap

func (e *FilterExpressionError) Unwrap() error

type FrontmatterParseError

type FrontmatterParseError struct {
	Path    string
	Line    int
	Message string
	Err     error
}

FrontmatterParseError indicates an error parsing frontmatter from a post.

func NewFrontmatterParseError

func NewFrontmatterParseError(path, message string, err error) *FrontmatterParseError

NewFrontmatterParseError creates a new FrontmatterParseError.

func (*FrontmatterParseError) Error

func (e *FrontmatterParseError) Error() string

func (*FrontmatterParseError) Unwrap

func (e *FrontmatterParseError) Unwrap() error

type GlobConfig

type GlobConfig struct {
	// Patterns is the list of glob patterns to match source files
	Patterns []string `json:"patterns" yaml:"patterns" toml:"patterns"`

	// UseGitignore determines whether to respect .gitignore files
	UseGitignore bool `json:"use_gitignore" yaml:"use_gitignore" toml:"use_gitignore"`
}

GlobConfig configures file globbing behavior.

type HighlightConfig

type HighlightConfig struct {
	// Enabled controls whether syntax highlighting is active (default: true)
	Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" toml:"enabled,omitempty"`

	// Theme is the Chroma theme to use for syntax highlighting.
	// If empty, the theme is automatically derived from the site's color palette.
	// See https://xyproto.github.io/splash/docs/ for available themes.
	Theme string `json:"theme,omitempty" yaml:"theme,omitempty" toml:"theme,omitempty"`

	// LineNumbers enables line numbers in code blocks (default: false)
	LineNumbers bool `json:"line_numbers" yaml:"line_numbers" toml:"line_numbers"`
}

HighlightConfig configures syntax highlighting for code blocks.

func NewHighlightConfig

func NewHighlightConfig() HighlightConfig

NewHighlightConfig creates a new HighlightConfig with default values.

func (*HighlightConfig) IsEnabled

func (h *HighlightConfig) IsEnabled() bool

IsEnabled returns whether syntax highlighting is enabled. Defaults to true if not explicitly set.

type Link struct {
	// SourceURL is the absolute URL of the source post
	SourceURL string `json:"source_url" yaml:"source_url" toml:"source_url"`

	// SourcePost is a reference to the source post object
	SourcePost *Post `json:"-" yaml:"-" toml:"-"`

	// TargetPost is a reference to the target post (nil if external)
	TargetPost *Post `json:"-" yaml:"-" toml:"-"`

	// RawTarget is the original href value as found in the HTML
	RawTarget string `json:"raw_target" yaml:"raw_target" toml:"raw_target"`

	// TargetURL is the resolved absolute URL
	TargetURL string `json:"target_url" yaml:"target_url" toml:"target_url"`

	// TargetDomain is the domain extracted from target_url
	TargetDomain string `json:"target_domain" yaml:"target_domain" toml:"target_domain"`

	// IsInternal is true if the link points to the same site
	IsInternal bool `json:"is_internal" yaml:"is_internal" toml:"is_internal"`

	// IsSelf is true if the link points to the same post
	IsSelf bool `json:"is_self" yaml:"is_self" toml:"is_self"`

	// SourceText is the cleaned link text from the source anchor
	SourceText string `json:"source_text" yaml:"source_text" toml:"source_text"`

	// TargetText is the cleaned link text from the target (if available)
	TargetText string `json:"target_text" yaml:"target_text" toml:"target_text"`
}

Link represents a hyperlink found in a post's HTML content. It tracks both the source (where the link is from) and target (where it points to).

func NewLink(sourceURL, rawTarget, targetURL, targetDomain string, isInternal bool) *Link

NewLink creates a new Link with the given source and target information.

func (*Link) SourceSlug

func (l *Link) SourceSlug() string

SourceSlug returns the slug of the source post, or empty string if nil.

func (*Link) SourceTitle

func (l *Link) SourceTitle() string

SourceTitle returns the title of the source post, or empty string if nil.

func (*Link) TargetSlug

func (l *Link) TargetSlug() string

TargetSlug returns the slug of the target post, or empty string if nil.

func (*Link) TargetTitle

func (l *Link) TargetTitle() string

TargetTitle returns the title of the target post, or empty string if nil.

type MDVideoConfig

type MDVideoConfig struct {
	// Enabled controls whether video conversion is active (default: true)
	Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`

	// VideoExtensions is the list of file extensions to treat as videos
	VideoExtensions []string `json:"video_extensions" yaml:"video_extensions" toml:"video_extensions"`

	// VideoClass is the CSS class added to video elements (default: "md-video")
	VideoClass string `json:"video_class" yaml:"video_class" toml:"video_class"`

	// Controls shows video controls (default: true)
	Controls bool `json:"controls" yaml:"controls" toml:"controls"`

	// Autoplay starts video automatically (default: true for GIF-like behavior)
	Autoplay bool `json:"autoplay" yaml:"autoplay" toml:"autoplay"`

	// Loop repeats the video (default: true for GIF-like behavior)
	Loop bool `json:"loop" yaml:"loop" toml:"loop"`

	// Muted mutes the video (default: true, required for autoplay in most browsers)
	Muted bool `json:"muted" yaml:"muted" toml:"muted"`

	// Playsinline enables inline playback on mobile (default: true)
	Playsinline bool `json:"playsinline" yaml:"playsinline" toml:"playsinline"`

	// Preload hints how much to preload: "none", "metadata", "auto" (default: "metadata")
	Preload string `json:"preload" yaml:"preload" toml:"preload"`
}

MDVideoConfig configures the md_video plugin.

func NewMDVideoConfig

func NewMDVideoConfig() MDVideoConfig

NewMDVideoConfig creates a new MDVideoConfig with sensible defaults. Default behavior is GIF-like: autoplay, loop, muted, with controls available.

type MarkdownConfig

type MarkdownConfig struct {
	// Extensions is the list of markdown extensions to enable
	Extensions []string `json:"extensions" yaml:"extensions" toml:"extensions"`

	// Highlight configures syntax highlighting for code blocks
	Highlight HighlightConfig `json:"highlight" yaml:"highlight" toml:"highlight"`
}

MarkdownConfig configures markdown processing.

type MermaidConfig

type MermaidConfig struct {
	// Enabled controls whether mermaid processing is active (default: true)
	Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`

	// CDNURL is the URL for the Mermaid.js library
	CDNURL string `json:"cdn_url" yaml:"cdn_url" toml:"cdn_url"`

	// Theme is the Mermaid theme to use (default, dark, forest, neutral)
	Theme string `json:"theme" yaml:"theme" toml:"theme"`
}

MermaidConfig configures the mermaid plugin.

func NewMermaidConfig

func NewMermaidConfig() MermaidConfig

NewMermaidConfig creates a new MermaidConfig with default values.

type PluginNotFoundError

type PluginNotFoundError struct {
	Name      string
	Available []string
}

PluginNotFoundError indicates a plugin was not found.

func NewPluginNotFoundError

func NewPluginNotFoundError(name string, available []string) *PluginNotFoundError

NewPluginNotFoundError creates a new PluginNotFoundError.

func (*PluginNotFoundError) Error

func (e *PluginNotFoundError) Error() string

type Post

type Post struct {
	// Path is the source file path
	Path string `json:"path" yaml:"path" toml:"path"`

	// Content is the raw markdown content after frontmatter
	Content string `json:"content" yaml:"content" toml:"content"`

	// Slug is the URL-safe identifier
	Slug string `json:"slug" yaml:"slug" toml:"slug"`

	// Href is the relative URL path (e.g., /my-post/)
	Href string `json:"href" yaml:"href" toml:"href"`

	// Title is the optional post title
	Title *string `json:"title,omitempty" yaml:"title,omitempty" toml:"title,omitempty"`

	// Date is the optional publication date
	Date *time.Time `json:"date,omitempty" yaml:"date,omitempty" toml:"date,omitempty"`

	// Published indicates if the post is published
	Published bool `json:"published" yaml:"published" toml:"published"`

	// Draft indicates if the post is a draft
	Draft bool `json:"draft" yaml:"draft" toml:"draft"`

	// Skip indicates if the post should be skipped during processing
	Skip bool `json:"skip" yaml:"skip" toml:"skip"`

	// Tags is a list of tags associated with the post
	Tags []string `json:"tags,omitempty" yaml:"tags,omitempty" toml:"tags,omitempty"`

	// Description is the optional post description
	Description *string `json:"description,omitempty" yaml:"description,omitempty" toml:"description,omitempty"`

	// Template is the template file to use for rendering (default: "post.html")
	Template string `json:"template" yaml:"template" toml:"template"`

	// HTML is the final rendered HTML including template wrapper
	HTML string `json:"html" yaml:"html" toml:"html"`

	// ArticleHTML is the rendered content without template wrapper
	ArticleHTML string `json:"article_html" yaml:"article_html" toml:"article_html"`

	// Prev is the previous post in the navigation sequence
	Prev *Post `json:"-" yaml:"-" toml:"-"`

	// Next is the next post in the navigation sequence
	Next *Post `json:"-" yaml:"-" toml:"-"`

	// PrevNextFeed is the feed/series slug used for navigation
	PrevNextFeed string `json:"prevnext_feed,omitempty" yaml:"prevnext_feed,omitempty" toml:"prevnext_feed,omitempty"`

	// PrevNextContext contains full navigation context
	PrevNextContext *PrevNextContext `json:"-" yaml:"-" toml:"-"`

	// Hrefs is a list of raw href values from all links in the post
	Hrefs []string `json:"hrefs,omitempty" yaml:"hrefs,omitempty" toml:"hrefs,omitempty"`

	// Inlinks are links pointing TO this post from other posts
	Inlinks []*Link `json:"inlinks,omitempty" yaml:"inlinks,omitempty" toml:"inlinks,omitempty"`

	// Outlinks are links FROM this post to other pages
	Outlinks []*Link `json:"outlinks,omitempty" yaml:"outlinks,omitempty" toml:"outlinks,omitempty"`

	// Extra holds dynamic/unknown fields from frontmatter
	Extra map[string]interface{} `json:"extra,omitempty" yaml:"extra,omitempty" toml:"extra,omitempty"`
}

Post represents a single markdown post with its metadata and content.

func NewPost

func NewPost(path string) *Post

NewPost creates a new Post with the given source file path and default values.

func (*Post) GenerateHref

func (p *Post) GenerateHref()

GenerateHref generates the relative URL path from the slug. The href follows the pattern /{slug}/

func (*Post) GenerateSlug

func (p *Post) GenerateSlug()

GenerateSlug generates a URL-safe slug from the title or path. If a title is set, it uses the title; otherwise, it derives the slug from the file path.

func (*Post) Get

func (p *Post) Get(key string) interface{}

Get retrieves a value from the Extra map by key. Returns nil if the key does not exist.

func (*Post) Has

func (p *Post) Has(key string) bool

Has checks if a key exists in the Extra map.

func (*Post) Set

func (p *Post) Set(key string, value interface{})

Set sets a value in the Extra map. Initializes the Extra map if it is nil.

type PostProcessingError

type PostProcessingError struct {
	Path    string
	Stage   string
	Message string
	Err     error
}

PostProcessingError indicates an error during post processing.

func NewPostProcessingError

func NewPostProcessingError(path, stage, message string, err error) *PostProcessingError

NewPostProcessingError creates a new PostProcessingError.

func (*PostProcessingError) Error

func (e *PostProcessingError) Error() string

func (*PostProcessingError) Unwrap

func (e *PostProcessingError) Unwrap() error

type PrevNextConfig

type PrevNextConfig struct {
	// Enabled controls whether the plugin is active (default: true)
	Enabled bool `json:"enabled" yaml:"enabled" toml:"enabled"`

	// Strategy determines how prev/next links are resolved
	Strategy PrevNextStrategy `json:"strategy" yaml:"strategy" toml:"strategy"`

	// DefaultFeed is the feed slug to use when strategy is "explicit_feed"
	DefaultFeed string `json:"default_feed" yaml:"default_feed" toml:"default_feed"`
}

PrevNextConfig holds configuration for the prevnext plugin.

func NewPrevNextConfig

func NewPrevNextConfig() PrevNextConfig

NewPrevNextConfig creates a new PrevNextConfig with default values.

func (*PrevNextConfig) ApplyDefaults

func (c *PrevNextConfig) ApplyDefaults()

ApplyDefaults ensures all required fields have sensible defaults.

type PrevNextContext

type PrevNextContext struct {
	// FeedSlug is the feed or series slug used for navigation
	FeedSlug string `json:"feed_slug" yaml:"feed_slug" toml:"feed_slug"`

	// FeedTitle is the feed or series title
	FeedTitle string `json:"feed_title" yaml:"feed_title" toml:"feed_title"`

	// Position is the 1-indexed position of the post in the sequence
	Position int `json:"position" yaml:"position" toml:"position"`

	// Total is the total number of posts in the sequence
	Total int `json:"total" yaml:"total" toml:"total"`

	// Prev is the previous post in the sequence (nil if first)
	Prev *Post `json:"prev,omitempty" yaml:"prev,omitempty" toml:"prev,omitempty"`

	// Next is the next post in the sequence (nil if last)
	Next *Post `json:"next,omitempty" yaml:"next,omitempty" toml:"next,omitempty"`
}

PrevNextContext contains navigation context for a post.

func (*PrevNextContext) HasNext

func (c *PrevNextContext) HasNext() bool

HasNext returns true if there is a next post.

func (*PrevNextContext) HasPrev

func (c *PrevNextContext) HasPrev() bool

HasPrev returns true if there is a previous post.

func (*PrevNextContext) IsFirst

func (c *PrevNextContext) IsFirst() bool

IsFirst returns true if this is the first post in the sequence.

func (*PrevNextContext) IsLast

func (c *PrevNextContext) IsLast() bool

IsLast returns true if this is the last post in the sequence.

type PrevNextStrategy

type PrevNextStrategy string

PrevNextStrategy defines how prev/next links are calculated.

const (
	// StrategyFirstFeed uses the first feed the post appears in.
	StrategyFirstFeed PrevNextStrategy = "first_feed"

	// StrategyExplicitFeed always uses the configured default_feed.
	StrategyExplicitFeed PrevNextStrategy = "explicit_feed"

	// StrategySeries uses the post's series frontmatter, falling back to first_feed.
	StrategySeries PrevNextStrategy = "series"

	// StrategyFrontmatter uses the post's prevnext_feed frontmatter, falling back to first_feed.
	StrategyFrontmatter PrevNextStrategy = "frontmatter"
)

func (PrevNextStrategy) IsValid

func (s PrevNextStrategy) IsValid() bool

IsValid returns true if the strategy is a recognized value.

type SyndicationConfig

type SyndicationConfig struct {
	// MaxItems is the maximum number of items in syndication feeds
	MaxItems int `json:"max_items" yaml:"max_items" toml:"max_items"`

	// IncludeContent determines if full content is included in feeds
	IncludeContent bool `json:"include_content" yaml:"include_content" toml:"include_content"`
}

SyndicationConfig configures syndication feed behavior.

type TemplateNotFoundError

type TemplateNotFoundError struct {
	Name       string
	SearchPath string
}

TemplateNotFoundError indicates a template file was not found.

func NewTemplateNotFoundError

func NewTemplateNotFoundError(name, searchPath string) *TemplateNotFoundError

NewTemplateNotFoundError creates a new TemplateNotFoundError.

func (*TemplateNotFoundError) Error

func (e *TemplateNotFoundError) Error() string

type TemplateSyntaxError

type TemplateSyntaxError struct {
	Name    string
	Line    int
	Column  int
	Message string
	Err     error
}

TemplateSyntaxError indicates a syntax error in a template.

func NewTemplateSyntaxError

func NewTemplateSyntaxError(name, message string, err error) *TemplateSyntaxError

NewTemplateSyntaxError creates a new TemplateSyntaxError.

func (*TemplateSyntaxError) Error

func (e *TemplateSyntaxError) Error() string

func (*TemplateSyntaxError) Unwrap

func (e *TemplateSyntaxError) Unwrap() error

type ThemeConfig

type ThemeConfig struct {
	// Name is the theme name (default: "default")
	Name string `json:"name" yaml:"name" toml:"name"`

	// Palette is the color palette to use (default: "default-light")
	Palette string `json:"palette" yaml:"palette" toml:"palette"`

	// Variables allows overriding specific CSS variables
	Variables map[string]string `json:"variables" yaml:"variables" toml:"variables"`

	// CustomCSS is a path to a custom CSS file to include
	CustomCSS string `json:"custom_css" yaml:"custom_css" toml:"custom_css"`
}

ThemeConfig configures the site theme.

func NewThemeConfig

func NewThemeConfig() ThemeConfig

NewThemeConfig creates a new ThemeConfig with default values.

Jump to

Keyboard shortcuts

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