xlog

package module
v1.7.12 Latest Latest
Warning

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

Go to latest
Published: May 7, 2026 License: MIT Imports: 48 Imported by: 35

README

XLog

Fast, Git-native framework for building knowledge bases

Go Report Card GoDoc

XLog is a static site generator optimized for digital gardens and personal wikis. Written in Go with 37 built-in extensions for backlinks, hashtags, search, and more.

Features

  • Fast - Written in Go, renders large knowledge bases in seconds
  • Live Preview - Embedded web server with hot-reload shows changes instantly
  • Interconnected - Automatic backlinks and bidirectional page relationships
  • Extensible - 37 built-in extensions for photos, todos, search, and more
  • Git-Native - Filesystem-based, works with any text editor and version control
  • Flexible Output - Serve locally or generate static sites for deployment

Quick Start

go install github.com/emad-elsaid/xlog/cmd/xlog@latest
mkdir my-notes
cd my-notes
echo "# Hello World" > index.md
xlog
# => Browse to http://localhost:3000

Use Cases

  • Personal Wiki - Interconnected notes with automatic backlinks
  • Research Notes - Organize papers, citations, and ideas
  • Documentation - Team knowledge bases and project docs
  • Learning Journal - Study notes with hashtags and search
  • Digital Garden - Public or private knowledge sharing

How It Works

  1. Write - Create markdown files in any text editor (Vim, Emacs, VS Code)
  2. Preview - Run xlog to start the live preview server with hot-reload
  3. Enhance - XLog automatically adds backlinks, hashtags, and search
  4. Deploy - Generate static site with xlog -build output/

XLog runs a web server that watches your markdown files. When you click "Edit" in the browser, it opens the file in your configured editor. Save the file, and the browser automatically refreshes to show your changes.

Why XLog?

vs Other Static Generators: XLog adds knowledge-base features (backlinks, hashtags, search) out of the box

vs Cloud Tools: XLog is free, self-hosted, privacy-focused, and works offline

vs Obsidian Publish: XLog is open source, customizable via extensions, and Git-native

vs Notion: XLog is local-first, markdown-based, and integrates with your existing workflow

Documentation

Extensions (37 Built-in)

XLog includes 37 extensions that enhance your knowledge base:

Knowledge Base:

  • Backlinks - Automatic bidirectional links between pages
  • Hashtags - Tag pages and browse by topic
  • Search - Full-text search across all notes
  • Recent - Activity tracking for recently modified pages

Content:

  • Photos - EXIF data extraction for photo albums
  • Todos - Task lists with checkboxes
  • Mermaid - Diagrams and flowcharts
  • MathJax - Mathematical notation

And 29 more... View all extensions

Shell Completion

# Bash
eval "$(xlog -completion bash)"

# Zsh
eval "$(xlog -completion zsh)"

# Fish
xlog -completion fish | source

Contributing

  • Create new extensions
  • Improve the core codebase
  • Report issues or suggest features

See CONTRIBUTING.md for details.

Vendored Packages

XLog vendors some dependencies for more control and stability. We thank the original authors:

License

XLog is released under the MIT license

Documentation

Overview

Package xlog provides static site generation capabilities for digital gardening. The build functionality converts markdown pages into a static HTML site.

Index

Constants

This section is empty.

Variables

View Source
var (

	// CSRF returns a placeholder token for templates.
	// Note: filippo.io/csrf/gorilla uses Fetch metadata headers, not tokens.
	// This is kept for template compatibility only.
	CSRF = csrf.Token //nolint:staticcheck // Deprecated but needed for template compatibility
)
View Source
var ErrHelperRegistered = errors.New("helper already registered")

The instance of markdown renderer. this is what takes the page content and converts it to HTML. it defines what features to use from goldmark and what options to turn on.

View Source
var Version = "dev"

Version is the current version of xlog. This is set at build time via: go build -ldflags "-X github.com/emad-elsaid/xlog.Version=vX.Y.Z".

Functions

func Banner(p Page) string

Banner extracts the banner image URL from a page. It looks for the first image in the first paragraph of the page's AST. Returns an empty string if no banner image is found or if the image destination is invalid. Relative image paths are converted to absolute paths based on the page's directory.

func Delete added in v0.22.0

func Delete(path string, handler HandlerFunc)

Delete defines a new route that gets executed when the request matches path and method is http Delete.

func Doctor added in v1.7.10

func Doctor()

Doctor runs diagnostic checks on the xlog configuration and environment. It reports potential issues that could affect xlog's operation. This is the CLI entry point that calls os.Exit for critical issues.

func EachPage added in v0.24.0

func EachPage(ctx context.Context, f func(Page))

EachPage iterates on all available pages. many extensions uses it to get all pages and maybe parse them and extract needed information.

func Emoji added in v1.7.1

func Emoji(p Page) string

Emoji extracts the first emoji from a page's markdown content. It searches the page's AST for an Emoji node and returns its Unicode representation. Returns an empty string if no emoji is found.

func ExportJSON added in v1.7.10

func ExportJSON(ctx context.Context)

ExportJSON exports all pages' metadata as JSON to stdout.

func FindAllInAST added in v0.25.0

func FindAllInAST[t ast.Node](n ast.Node) (a []t)

Extract all nodes of a specific type from the AST.

func FindInAST added in v0.25.0

func FindInAST[t ast.Node](n ast.Node) (found t, ok bool)

FindInAST takes an AST node and walks the tree depth first searching for a node of a specific type can be used to find first image, link, paragraph...etc.

func Get added in v0.22.0

func Get(path string, handler HandlerFunc)

Get defines a new route that gets executed when the request matches path and method is http Get.

func Head(path string, handler HandlerFunc)

Head defines a new route that gets executed when the request matches path and method is http Head.

func IgnorePath added in v1.7.0

func IgnorePath(r *regexp.Regexp)

IgnorePath Register a pattern to be ignored when walking directories.

func IsFontAwesome added in v1.7.0

func IsFontAwesome(i string) bool

IsFontAwesome checks if the given string is a FontAwesome icon class. It returns true if the string starts with "fa", which is the standard FontAwesome prefix.

func IsIgnoredPath added in v1.7.0

func IsIgnoredPath(d string) bool

IsIgnoredPath checks if a file path should be ignored according to the list of ignored paths. page source implementations can use it to ignore files from their sources.

func Listen added in v0.16.0

func Listen(e PageEvent, h PageEventHandler)

Register an event handler to be executed when PageEvent is triggered. extensions can use this to register hooks under specific page events. extensions that keeps a cached version of the pages list for example needs to register handlers to update its cache.

func MapPage added in v1.7.0

func MapPage[T any](ctx context.Context, f func(Page) T) []T

MapPage Similar to EachPage but iterates concurrently and accumulates returns in a slice.

func Options added in v1.7.10

func Options(path string, handler HandlerFunc)

Options defines a new route that gets executed when the request matches path and method is http Options.

func Partial

func Partial(templatePath string, data Locals) template.HTML

Partial executes a template by it's path name. it passes data to the template. returning the output of the template. in case of an error it will return the error string as the output.

func Patch added in v1.7.10

func Patch(path string, handler HandlerFunc)

Patch defines a new route that gets executed when the request matches path and method is http Patch.

func Post added in v0.22.0

func Post(path string, handler HandlerFunc)

Post defines a new route that gets executed when the request matches path and method is http Post.

func PrintBrokenLinks(broken []BrokenLink)

PrintBrokenLinks formats and prints broken links to stdout.

func Properties added in v0.42.0

func Properties(p Page) map[string]Property

Properties return a list of properties for a page. It executes all functions registered with RegisterProperty and collect results in one slice. Can be passed to the view to render a page properties.

func Put added in v1.7.10

func Put(path string, handler HandlerFunc)

Put defines a new route that gets executed when the request matches path and method is http Put.

func RegisterBuildPage added in v0.28.0

func RegisterBuildPage(p string, encloseInDir bool)

RegisterBuildPage registers a path of a page to export when building static version of the knowledgebase. encloseInDir will write the output to p/index.html instead instead of writing to p directly. that can help have paths with no .html extension to be served with the exact name.

func RegisterCommand added in v0.27.0

func RegisterCommand(c func(Page) []Command)

RegisterCommand registers a new command function. When a page is displayed, all registered command functions are executed to collect commands for the Ctrl+K actions menu.

func RegisterExtension added in v1.7.0

func RegisterExtension(e Extension)

RegisterExtension registers a new extension. Extensions must implement the Extension interface and will be initialized when the server starts unless disabled via Config.DisabledExtensions.

func RegisterHelper added in v0.28.0

func RegisterHelper(name string, f any) error

RegisterHelper registers a new helper function. all helpers are used when compiling templates. so registering helpers function must happen before the server starts as compiling templates happened right before starting the http server.

func RegisterJS added in v1.7.0

func RegisterJS(f string)

RegisterJS adds a Javascript library URL/path to be included in the scripts used by the template.

func RegisterLink(l func(Page) []Command)

RegisterLink registers a new links function. The function should return a list of links that will be displayed in navigation areas such as the footer.

func RegisterPageSource added in v0.80.0

func RegisterPageSource(p PageSource)

RegisterPageSource registers a new page source at the beginning of the sources list. New sources take precedence over previously registered sources when resolving pages. This allows extensions to override or supplement the default markdown file system.

func RegisterPreprocessor added in v0.28.0

func RegisterPreprocessor(f Preprocessor)

RegisterPreprocessor registers a Preprocessor function. extensions should use this function to register a preprocessor.

func RegisterProperty added in v0.36.0

func RegisterProperty(a func(Page) []Property)

RegisterProperty registers a function that returns a set of properties for the page.

func RegisterQuickCommand added in v0.36.0

func RegisterQuickCommand(c func(Page) []Command)

RegisterQuickCommand registers a new quick command function. Quick commands are displayed prominently at the top right of the page in the default template.

func RegisterStaticDir added in v0.77.0

func RegisterStaticDir(f fs.FS)

RegisterStaticDir adds a filesystem to the filesystems list scanned for files when serving static files. can be used to add a directory of CSS or JS files by extensions.

func RegisterTemplate added in v0.28.0

func RegisterTemplate(t fs.FS, subDir string)

RegisterTemplate registers a filesystem that contains templates, specifying subDir as the subdirectory name that contains the templates. templates are registered such that the latest registered directory override older ones. template file extensions are signified by '.html' extension and the file path can be used as template name without this extension.

func RegisterWidget added in v0.28.0

func RegisterWidget(s WidgetSpace, priority float32, f WidgetFunc)

RegisterWidget Register a function to a widget space. functions registered will be executed in order of priority lower to higher when rendering view or edit page. the return values of these widgetfuncs will pass down to the template and injected in reserved places.

func RenderWidget

func RenderWidget(s WidgetSpace, p Page) (o template.HTML)

This is used by view and edit routes to render all widgetfuncs registered for specific widget space.

func RequireHTMX added in v1.7.0

func RequireHTMX()

RequireHTMX registes HTML library, this helps include one version of HTMX.

func Start

func Start(ctx context.Context)

Define the catch all HTTP routes, parse CLI flags and take actions like building the static pages and exit, or start the HTTP server.

func Stats added in v1.7.10

func Stats(ctx context.Context)

Stats displays statistics about the digital garden. This is the CLI entry point.

func Trigger added in v0.16.0

func Trigger(e PageEvent, p Page)

Trigger event handlers for a specific page event. page methods use this function to trigger all registered handlers when the page is edited or deleted for example.

Types

type ASTQueryCache added in v1.7.10

type ASTQueryCache struct {
	// contains filtered or unexported fields
}

ASTQueryCache provides thread-safe caching for expensive AST-based queries. Extensions can use this to avoid redundant AST parsing when computing aggregate data across multiple pages.

func NewASTQueryCache added in v1.7.10

func NewASTQueryCache() *ASTQueryCache

NewASTQueryCache creates a new cache instance.

func (*ASTQueryCache) Get added in v1.7.10

func (c *ASTQueryCache) Get(key string, compute func() any) any

Get retrieves a cached value for the given key, or computes it using the provided function if not cached. The compute function is only called once even under concurrent access for the same key.

func (*ASTQueryCache) Invalidate added in v1.7.10

func (c *ASTQueryCache) Invalidate(key string)

Invalidate removes a cached value for the given key. Subsequent Get calls will recompute the value.

func (*ASTQueryCache) InvalidateAll added in v1.7.10

func (c *ASTQueryCache) InvalidateAll()

InvalidateAll clears all cached values. Useful when multiple pages have changed and selective invalidation is impractical.

type BrokenLink struct {
	SourcePage      string // Page containing the broken link
	TargetPage      string // Referenced page that doesn't exist
	LinkDestination string // Original link text
}

BrokenLink represents a broken internal link found in a page.

func FindBrokenLinks(ctx context.Context) []BrokenLink

FindBrokenLinks scans all pages and returns broken internal links. An internal link is considered broken if it references a page that doesn't exist. Only checks links that appear to be internal (not http/https URLs).

type Command added in v0.27.0

type Command interface {
	// Icon returns the Fontawesome icon class name for the Command.
	Icon() string
	// Name of the command. to be displayed in the list.
	Name() string
	// Attrs a map of attributes to their values.
	Attrs() map[template.HTMLAttr]any
}

Command defines a structure used for 3 categories of lists: 1. Commands for Ctrl+K actions menu 2. Quick commands displayed in the default template at the top right of the page 3. Links displayed in the navigation bar The template decides where and how to display commands. it can choose to use them in a different way than the default template.

func Commands added in v0.42.0

func Commands(p Page) []Command

Commands returns the list of commands for a page. When a page is displayed, it executes all functions registered with RegisterCommand and collects all results in one slice. The result can be passed to the view to render the commands list for the Ctrl+K actions menu.

func Links(p Page) []Command

Links returns a list of links for a Page. It executes all functions registered with RegisterLink and collects them in one slice. The result can be passed to the view to render in navigation areas such as the footer.

func QuickCommands added in v0.42.0

func QuickCommands(p Page) []Command

QuickCommands returns the list of QuickCommands for a page. It executes all functions registered with RegisterQuickCommand and collects all results in one slice. The result can be passed to the view to render the quick commands list, which are displayed prominently at the top right of the page in the default template.

type Configuration added in v1.7.0

type Configuration struct {
	Source             string // path to markdown files directory
	Build              string // path to write built files
	Sitename           string // name of knowledgebase
	Index              string // name of the index page markdown file
	NotFoundPage       string // name of the index page markdown file
	BindAddress        string // bind address for the server
	Theme              string // empty switches between light/dark. setting it forces a theme
	CodeStyle          string
	CsrfCookieName     string
	DisabledExtensions string
	Completion         string // shell to generate completion script for
	Readonly           bool   // is xlog in readonly mode
	ServeInsecure      bool   // should the server use https for cookie
	RunDoctor          bool   // run configuration diagnostics
	ShowVersion        bool   // display version information and exit
	ListPages          bool   // list all pages and exit
	ShowStats          bool   // display digital garden statistics and exit
	ExportJSON         bool   // export page metadata as JSON and exit
}
var Config Configuration

type DiagnosticResult added in v1.7.10

type DiagnosticResult struct {
	Issues   []string
	Warnings []string
}

DiagnosticResult holds the results of running diagnostics.

func (DiagnosticResult) HasCriticalIssues added in v1.7.10

func (d DiagnosticResult) HasCriticalIssues() bool

HasCriticalIssues returns true if there are any critical issues.

func (DiagnosticResult) IsHealthy added in v1.7.10

func (d DiagnosticResult) IsHealthy() bool

IsHealthy returns true if there are no issues or warnings.

type DuplicatePair added in v1.7.10

type DuplicatePair struct {
	Page1      string
	Page2      string
	Similarity float64
}

DuplicatePair represents two pages with duplicate or highly similar content.

type DynamicPage added in v1.7.0

type DynamicPage struct {
	NameVal  string
	RenderFn func() template.HTML
}

DynamicPage implement Page interface and allow extensions to define a page to be passed to templates without having underlying file on desk.

func (DynamicPage) AST added in v1.7.0

func (DynamicPage) AST() ([]byte, ast.Node)

func (DynamicPage) Content added in v1.7.0

func (DynamicPage) Content() Markdown

func (DynamicPage) Delete added in v1.7.0

func (DynamicPage) Delete() bool

func (DynamicPage) Exists added in v1.7.0

func (DynamicPage) Exists() bool

func (DynamicPage) FileName added in v1.7.0

func (DynamicPage) FileName() string

func (DynamicPage) ModTime added in v1.7.0

func (DynamicPage) ModTime() time.Time

func (DynamicPage) Name added in v1.7.0

func (d DynamicPage) Name() string

func (DynamicPage) Render added in v1.7.0

func (d DynamicPage) Render() template.HTML

func (DynamicPage) Write added in v1.7.0

func (DynamicPage) Write(Markdown) bool

type Extension added in v1.7.0

type Extension interface {
	Name() string
	Init()
}

type GardenStats added in v1.7.10

type GardenStats struct {
	TotalPages      int
	TotalWords      int
	AvgWordsPerPage int
	TotalLinks      int
	OrphanedPages   int
	HubPages        []string
}

GardenStats holds statistics about the digital garden.

type HandlerFunc

type HandlerFunc func(Request) Output

HandlerFunc is the type of an HTTP handler function + returns output function. it makes it easier to return the output directly instead of writing the output to w then return.

type Locals

type Locals map[string]any // passed to templates

map of string to any value used for template rendering.

type Markdown added in v0.45.0

type Markdown string

Markdown is used instead of string to make sure it's clear the string is markdown string.

func PreProcess added in v0.83.0

func PreProcess(content Markdown) Markdown

This function take the page content and pass it through all registered preprocessors and return the last preprocessor output to the caller.

type Output

type Output = http.HandlerFunc

alias of http.HandlerFunc as output is expected from defined http handlers.

func Accepted added in v1.7.10

func Accepted() Output

Accepted returns an output function that writes http status 202 to response indicating that the request has been accepted for processing but not completed.

func BadRequest

func BadRequest(msg string) Output

BadRequest returns an output function that writes BadRequest http response.

func Cache added in v1.5.0

func Cache(out Output) Output

Cache wraps Output and adds header to instruct the browser to cache the output.

func Created added in v1.7.10

func Created(location string) Output

Created returns an output function that writes http status 201 to response with optional location header for the newly created resource.

func Forbidden added in v1.7.10

func Forbidden(msg string) Output

Forbidden returns an output function that writes 403 Forbidden http response. Used when the client is authenticated but lacks permission to access the resource.

func InternalServerError

func InternalServerError(err error) Output

InternalServerError returns an output function that writes InternalServerError http response.

func JsonResponse added in v0.43.0

func JsonResponse(a any) Output

JsonResponse returns an output function that encodes data as JSON and writes it to response with appropriate content-type header.

func MethodNotAllowed added in v1.7.10

func MethodNotAllowed(msg string) Output

MethodNotAllowed returns an output function that writes 405 Method Not Allowed http response. Used when the HTTP method is not supported for the requested resource.

func NoCache added in v1.7.10

func NoCache(out Output) Output

NoCache wraps Output and adds headers to prevent browser and proxy caching. Useful for dynamic content, APIs, and pages that should always be fresh.

func NoContent

func NoContent() Output

NoContent returns an output function that writes NoContent http status.

func NotFound

func NotFound(msg string) Output

NotFound returns an output function that writes 404 NotFound to http response.

func PlainText

func PlainText(text string) Output

PlainText returns an output function that writes text to response writer.

func Redirect

func Redirect(url string) Output

Redirect returns an output function that writes Found http response to provided URL.

func Render

func Render(path string, data Locals) Output

Render returns an output function that renders partial with data and writes it as response.

func Unauthorized

func Unauthorized(msg string) Output

Unauthorized returns an output function that writes 401 Unauthorized http response. Commonly used when authentication credentials are missing or invalid.

type Page

type Page interface {
	// Name returns page name without '.md' extension
	Name() string
	// returns the filename, makes sure it converts slashes to backslashes when
	// needed. this is safe to use when trying to access the file that represent the
	// page
	FileName() string
	// checks if the page underlying file exists on disk or not.
	Exists() bool
	// Renders the page content to HTML. it makes sure all preprocessors are called
	Render() template.HTML
	// Reads the underlying file and returns the content
	Content() Markdown
	// Deletes the file and makes sure it triggers the AfterDelete event
	Delete() bool
	// Overwrite page content with new content. making sure to trigger before and
	// after write events.
	Write(Markdown) bool
	// ModTime Return the last modification time of the underlying file
	ModTime() time.Time
	// Parses the page content and returns the Abstract Syntax Tree (AST).
	// extensions can use it to walk the tree and modify it or collect statistics or
	// parts of the page. for example the following "Emoji" function uses it to
	// extract the first emoji.
	AST() ([]byte, ast.Node)
}

a Type that represent a page.

func NewPage

func NewPage(name string) (p Page)

NewPage creates a Page instance for the given page name by querying all registered page sources. It returns the first existing page found across all sources. If no existing page is found, it returns a non-existing page object (never nil) to prevent panics in handlers. Page sources are checked in registration order (most recently registered first).

func Pages added in v1.1.0

func Pages(ctx context.Context) []Page

Pages returns all pages in the xlog directory. The result is cached and the cache is populated on first call. To invalidate the cache, use InvalidatePagesCache.

type PageEvent

type PageEvent int

a type used to define events to be used when the page is manipulated for example modified, renamed, deleted...etc.

const (
	PageChanged PageEvent = iota
	PageDeleted
	PageNotFound // user requested a page that's not found
)

List of page events. extensions can use these events to register a function to be executed when this event is triggered. extensions that require to be notified when the page is created or overwritten or deleted should register an event handler for the interesting events.

type PageEventHandler

type PageEventHandler func(Page) error

a function that handles a page event. this should be implemented by an extension and then registered. it will get executed when the event is triggered.

type PageMetadata added in v1.7.10

type PageMetadata struct {
	Name      string    `json:"name"`
	Path      string    `json:"path"`
	ModTime   time.Time `json:"mod_time"`
	WordCount int       `json:"word_count"`
	Links     []string  `json:"links"`
}

PageMetadata represents exported page information in JSON format.

type PageSource added in v0.80.0

type PageSource interface {
	// Page takes a page name and return a Page struct
	Page(string) Page
	// Each iterates over all pages in the source
	Each(context.Context, func(Page))
}

type Preprocessor added in v0.22.0

type Preprocessor func(Markdown) Markdown

A Preprocessor is a function that takes the whole page content and returns a modified version of the content. extensions should define this type and register is so that when page is rendered it will execute all of them in order like a pipeline each function output is passed as an input to the next. at the end the last preprocessor output is then rendered to HTML.

type Property added in v0.36.0

type Property interface {
	// Icon returns the fontawesome icon class name or emoji
	Icon() string
	// Name returns the name of the property
	Name() string
	// Value returns the value of the property
	Value() any
}

Property represent a piece of information about the current page such as last update time, number of versions, number of words, reading time...etc.

type Request

type Request = *http.Request

alias *http.Request for shorter handler declaration.

type Response

type Response = http.ResponseWriter

alias http.ResponseWriter for shorter handler declaration.

type WidgetFunc added in v0.54.0

type WidgetFunc func(Page) template.HTML

WidgetFunc a function that takes the current page and returns the widget. This can be used by extensions to define new widgets to be rendered in view or edit pages. the extension should define this func type and register it to be rendered in a specific widgetSpace such as before or after the page.

type WidgetSpace added in v0.54.0

type WidgetSpace string

WidgetSpace used to represent a widgets spaces. it's used to register widgets to be injected in the view or edit pages.

var (
	WidgetAfterView  WidgetSpace = "after_view"  // widgets rendered after the content of the view page
	WidgetBeforeView WidgetSpace = "before_view" // widgets rendered before the content of the view page
	WidgetHead       WidgetSpace = "head"        // widgets rendered in page <head> tag
)

List of widgets spaces that extensions can use to register a WidgetFunc to inject content into.

Directories

Path Synopsis
cmd
xlog command
extensions
all
blocks
Package blocks provides customizable content blocks through YAML-based shortcodes.
Package blocks provides customizable content blocks through YAML-based shortcodes.
frontmatter
package meta is a extension for the goldmark that's vendored in xlog.
package meta is a extension for the goldmark that's vendored in xlog.
gpg
rss
rtl
toc
Package toc provides support for building a Table of Contents from a goldmark Markdown document.
Package toc provides support for building a Table of Contents from a goldmark Markdown document.
Package goldmark implements functions to convert markdown text to a desired format.
Package goldmark implements functions to convert markdown text to a desired format.
_tools command
ast
Package ast defines AST nodes that represent markdown elements.
Package ast defines AST nodes that represent markdown elements.
emoji
package emoji is a extension for the goldmark
package emoji is a extension for the goldmark
emoji/_tools command
emoji/ast
Package ast defines AST nodes that represetns emoji extension's elements.
Package ast defines AST nodes that represetns emoji extension's elements.
emoji/definition
Code generated by _tools; DO NOT EDIT.
Code generated by _tools; DO NOT EDIT.
extension
Package extension is a collection of builtin extensions.
Package extension is a collection of builtin extensions.
extension/ast
Package ast defines AST nodes that represents extension's elements
Package ast defines AST nodes that represents extension's elements
highlighting
package highlighting is a extension for the goldmark
package highlighting is a extension for the goldmark
parser
Package parser contains stuff that are related to parsing a Markdown text.
Package parser contains stuff that are related to parsing a Markdown text.
renderer
Package renderer renders the given AST to certain formats.
Package renderer renders the given AST to certain formats.
renderer/html
Package html implements renderer that outputs HTMLs.
Package html implements renderer that outputs HTMLs.
testutil
Package testutil provides utilities for unit tests.
Package testutil provides utilities for unit tests.
text
Package text provides functionalities to manipulate texts.
Package text provides functionalities to manipulate texts.
util
Code generated by _tools; DO NOT EDIT.
Code generated by _tools; DO NOT EDIT.

Jump to

Keyboard shortcuts

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