loader

package
v0.0.0-...-323ef38 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2018 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package loader 用于加载原始的数据内容

loader 只负责加载数据,而对数据的处理则由 data 包负责。

Index

Constants

View Source
const (
	ArchiveTypeYear  = "year"
	ArchiveTypeMonth = "month"
)

归档的类型

View Source
const (
	ArchiveOrderDesc = "desc"
	ArchiveOrderAsc  = "asc"
)

归档的排序方式

View Source
const (
	OutdatedTypeCreated  = "created"
	OutdatedTypeModified = "modified"
	OutdatedTypeNone     = "none"
	OutdatedTypeCustom   = "custom"
)

文章是否过时的比较方式

View Source
const (
	StateTop     = "top"     // 置顶
	StateLast    = "last"    // 放在尾部
	StateDefault = "default" // 默认值
	StateDraft   = "draft"   // 表示为草稿,不会加载此条数据
)

表示 Post.State 的各类值

Variables

This section is empty.

Functions

func Init

func Init(path *p.Path) error

Init 初始化 data 下的基本数据结构

Types

type Archive

type Archive struct {
	Order  string `yaml:"order"`            // 排序方式
	Type   string `yaml:"type,omitempty"`   // 存档的分类方式,可以按年或是按月
	Format string `yaml:"format,omitempty"` // 标题的格式化字符串
}

Archive 存档页的配置内容

type Author

type Author struct {
	Name   string `yaml:"name"`
	URL    string `yaml:"url,omitempty"`
	Email  string `yaml:"email,omitempty"`
	Avatar string `yaml:"avatar,omitempty"`
}

Author 描述作者信息

type Config

type Config struct {
	Title           string        `yaml:"title"`
	TitleSeparator  string        `yaml:"titleSeparator"`
	Language        string        `yaml:"language"`
	Subtitle        string        `yaml:"subtitle,omitempty"`
	Beian           string        `yaml:"beian,omitempty"`
	Uptime          time.Time     `yaml:"uptime"`
	PageSize        int           `yaml:"pageSize"`
	Type            string        `yaml:"type,omitempty"`
	Icon            *Icon         `yaml:"icon,omitempty"`
	Menus           []*Link       `yaml:"menus,omitempty"`
	Author          *Author       `yaml:"author"`
	License         *Link         `yaml:"license"`
	LongDateFormat  string        `yaml:"longDateFormat"`
	ShortDateFormat string        `yaml:"shortDateFormat"`
	Outdated        time.Duration `yaml:"outdated,omitempty"`
	Theme           string        `yaml:"theme"`

	// 各个页面的一些自定义项,目前支持以下几个元素的修改:
	// 1) html>head>title
	// 2) html>head>meta.keywords
	// 3) html>head>meta.description
	Pages map[string]*Page `yaml:"pages,omitempty"`

	Archive    *Archive    `yaml:"archive"`
	RSS        *RSS        `yaml:"rss,omitempty"`
	Atom       *RSS        `yaml:"atom,omitempty"`
	Sitemap    *Sitemap    `yaml:"sitemap,omitempty"`
	Opensearch *Opensearch `yaml:"opensearch,omitempty"`
	PWA        *PWA        `yaml:"pwa,omitempty"`

	LanguageTag l.Tag `yaml:"-"`
}

Config 配置信息,用于从文件中读取

func LoadConfig

func LoadConfig(path *path.Path) (*Config, error)

LoadConfig 加载配置信息

type Icon

type Icon struct {
	URL   string `yaml:"url"`
	Type  string `yaml:"type"` // mime type
	Sizes string `yaml:"sizes"`
}

Icon 表示网站图标,比如 html>head>link.rel="short icon"

type Link struct {
	// 链接对应的图标。可以是字体图标或是图片链接,模板根据情况自动选择。
	Icon  string `yaml:"icon,omitempty"`
	Title string `yaml:"title,omitempty"` // 链接的 title 属性
	Rel   string `yaml:"rel,omitempty"`   // 链接的 rel 属性
	URL   string `yaml:"url"`             // 链接地址
	Text  string `yaml:"text"`            // 链接的文本
	Type  string `yaml:"type,omitempty"`  // 链接的类型,一般用于 a 和 link 标签的 type 属性
}

Link 描述链接的内容

func LoadLinks(path *path.Path) ([]*Link, error)

LoadLinks 加载友情链接的内容

type Manifest

type Manifest struct {
	URL  string `yaml:"url"`
	Type string `yaml:"type,omitempty"`

	Lang        string  `yaml:"lang"`
	Name        string  `yaml:"name"`
	ShortName   string  `yaml:"shortName"`
	StartURL    string  `yaml:"startURL,omitempty"`
	Display     string  `yaml:"display,omitempty"`
	Description string  `yaml:"description,omitempty"`
	Dir         string  `yaml:"dir,omitempty"`
	Orientation string  `yaml:"orientation,omitempty"`
	Scope       string  `yaml:"scope,omitempty"`
	ThemeColor  string  `yaml:"themeColor,omitempty"`
	Background  string  `yaml:"backgroundColor,omitempty"`
	Icons       []*Icon `yaml:"icons"`
}

Manifest 表示 PWA 中 manifest 的相关配置

type Opensearch

type Opensearch struct {
	URL   string `yaml:"url"`
	Type  string `yaml:"type,omitempty"`
	Title string `yaml:"title,omitempty"`

	ShortName   string `yaml:"shortName"`
	Description string `yaml:"description"`
	LongName    string `yaml:"longName,omitempty"`
	Image       *Icon  `yaml:"image,omitempty"`
}

Opensearch opensearch 相关的配置

type Outdated

type Outdated struct {
	Type string
	Date time.Time
	Days int

	Content string // 自定义的提示内容
}

Outdated 表示每一篇文章的过时情况

type PWA

type PWA struct {
	// 指定 sw.js 的路径,为空表示不启用
	ServiceWorker string    `yaml:"serviceWorker,omitempty"`
	Manifest      *Manifest `yaml:"manifest,omitempty"`
}

PWA 表示 PWA 中的相关配置

type Page

type Page struct {
	Title       string `yaml:"title"`
	Keywords    string `yaml:"keywords"`
	Description string `yaml:"description"`
}

Page 页面的自定义内容

type Post

type Post struct {
	Title    string    `yaml:"title"`    // 标题
	Created  time.Time `yaml:"created"`  // 创建时间
	Modified time.Time `yaml:"modified"` // 修改时间
	Summary  string    `yaml:"summary"`  // 摘要,同时也作为 meta.description 的内容

	// 这两个变量,并不直接对应变量
	Slug    string `yaml:"-"` // 唯一名称
	Content string `yaml:"-"` // 内容

	// 关联的标签列表,以半角逗号分隔的字符串,
	// 标签名为各个标签的 slug 值,可以保证其唯一。
	// 最终会被解析到 Tags 中,TagString 会被废弃。
	Tags string `yaml:"tags"`

	// Outdated 用户记录文章的一个过时情况,可以由以下几种值构成:
	// - created 表示该篇文章以创建时间来计算其是否已经过时,该值也是默认值;
	// - modified 表示该文章以其修改时间来计算其是否已经过时;
	// - none 表示该文章永远不会过时;
	// - 其它任意非空值,表示直接以该字符串当作过时信息展示给用语.
	Outdated string `yaml:"outdated,omitempty"`

	// State 表示文章的状态,有以下四种值:
	// - top 表示文章被置顶;
	// - last 表示文章会被放置在最后;
	// - draft 表示这是一篇草稿,并不会被加地到内存中;
	// - default 表示默认情况,也可以为空,按默认的方式进行处理。
	State string `yaml:"state,omitempty"`

	// 封面地址,可以为空。
	Image string `yaml:"image,omitempty"`

	Keywords string `yaml:"keywords,omitempty"`

	// 以下内容不存在时,则会使用全局的默认选项
	Author   *Author `yaml:"author,omitempty"`
	License  *Link   `yaml:"license,omitempty"`
	Template string  `yaml:"template,omitempty"`
	Language string  `yaml:"language,omitempty"`

	// 需要被 service worker 缓存的内容。
	// 如果是带 https 开头的 URL,则直接使用,
	// 如果是不以 https 开头的 URL,则会被映射到当前主题下。
	Assets []string `yaml:"assets,omitempty"`
}

Post 表示文章的信息

func LoadPosts

func LoadPosts(path *path.Path) ([]*Post, error)

LoadPosts 加载所有的文件列表

type RSS

type RSS struct {
	Title string `yaml:"title"`
	URL   string `yaml:"url"`
	Type  string `yaml:"type,omitempty"`
	Size  int    `yaml:"size"` // 显示数量
}

RSS RSS 和 Atom 相关的配置项

type Sitemap

type Sitemap struct {
	URL  string `yaml:"url"`
	Type string `yaml:"type,omitempty"`

	XslURL     string  `yaml:"xslURL,omitempty"`    // 为 sitemap 指定一个 xsl 文件
	Priority   float64 `yaml:"priority"`            // 默认的优先级
	Changefreq string  `yaml:"changefreq"`          // 默认的更新频率
	EnableTag  bool    `yaml:"enableTag,omitempty"` // 是否将标签相关的页面写入 sitemap

	// 文章可以指定一个专门的值
	PostPriority   float64 `yaml:"postPriority"`
	PostChangefreq string  `yaml:"postChangefreq"`
}

Sitemap sitemap 相关的配置

type Tag

type Tag struct {
	Slug    string `yaml:"slug"`            // 唯一名称
	Title   string `yaml:"title"`           // 名称
	Color   string `yaml:"color,omitempty"` // 标签颜色。若未指定,则继承父容器
	Content string `yaml:"content"`         // 对该标签的详细描述
	Series  bool   `yaml:"series"`          // 是否为一个专题标签
}

Tag 描述标签信息

标签系统同时包含了标签和专题两个方面,默认情况下为标签, 当将 Series 指定为 true 时,表示这是一个专题。

func LoadTags

func LoadTags(path *path.Path) ([]*Tag, error)

LoadTags 加载标签内容

type Theme

type Theme struct {
	ID          string  `yaml:"-"`    // 唯一 ID,即当前目录名称
	Name        string  `yaml:"name"` // 名称,不必唯一,可以与 ID 值不同。
	Version     string  `yaml:"version"`
	Description string  `yaml:"description"`
	URL         string  `yaml:"url,omitempty"`
	Author      *Author `yaml:"author"`

	// 需要被 service worker 缓存的内容。
	// 如果是带 https 开头的 URL,则直接使用,
	// 如果是不以 https 开头的 URL,则会被映射到当前主题下。
	Assets []string `yaml:"assets,omitempty"`
}

Theme 表示主题信息

func LoadTheme

func LoadTheme(path *path.Path, name string) (*Theme, error)

LoadTheme 加载当前的主题

name 为主题的唯一名称

Jump to

Keyboard shortcuts

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