libasciidoc

A Golang library for processing Asciidoc files.

Github星跟蹤圖

= Libasciidoc

image:https://godoc.org/github.com/bytesparadise/libasciidoc?status.svg["GoDoc", link="https://godoc.org/github.com/bytesparadise/libasciidoc"]
image:https://goreportcard.com/badge/github.com/bytesparadise/libasciidoc["Go Report Card", link="https://goreportcard.com/report/github.com/bytesparadise/libasciidoc"]
image:https://travis-ci.org/bytesparadise/libasciidoc.svg?branch=master["Build Status", link="https://travis-ci.org/bytesparadise/libasciidoc"]
image:https://codecov.io/gh/bytesparadise/libasciidoc/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/bytesparadise/libasciidoc"]
image:https://img.shields.io/badge/License-Apache%202.0-blue.svg["License", link="https://opensource.org/licenses/Apache-2.0"]

Libasciidoc is an open source Go library to convert from Asciidoc to HTML.
It is is available under the terms of the https://raw.githubusercontent.com/bytesparadise/libasciidoc/LICENSE[Apache License 2.0].

== Supported syntax

Although it does not support the full Asciidoc/Asciidoctor syntax, Libasciidoc already provides users with the following features:

  • Title and Sections level 1 to 6
  • Document authors and revision
  • Attribute declaration and substitution
  • Paragraphs and admonition paragraphs
  • Delimited Blocks (fenced blocks, listing blocks, example blocks, comment blocks, quoted blocks, sidebar blocks, verse blocks)
  • Literal blocks (paragraph starting with a space, with the +++....+++ delimiter or with the [literal] attribute)
  • Quoted text (bold, italic, monospace, superscript and subscript) and substitution prevention using the backslash (\) character
  • Passtrough (wrapping with a single plus or a triple plus, or using the +++pass:[]+++ or +++pass:q[]+++ macros)
  • External links in paragraphs (https://, http://, ftp://, irc://, mailto:)
  • Inline images in paragraphs (image:)
  • Image blocks (image::)
  • Element attributes (ID, link, title, role, etc.)
  • Labeled, ordered and unordered lists (with nested lists and attributes on items)
  • Tables (basic support: header line and cells on multiple lines)
  • Table of contents
  • YAML front-matter

See also the link:LIMITATIONS.adoc[known limitations] page for differences between Asciidoc/Asciidoctor and Libasciidoc.

Further elements will be supported in the future. Feel free to open issues https://github.com/bytesparadise/libasciidoc/issues[here] to help prioritizing the upcoming work.

== Installation

$ go get -u github.com/bytesparadise/libasciidoc
$ make install

== Usage

=== Command Line

The libasciidoc library includes a minimalist command line interface to generate the HTML content from a given file:

$ libasciidoc -s content.adoc

use libasciidoc --help to check all available options.

=== Code integration

Libasciidoc provides 2 functions to convert an Asciidoc content into HTML:

  1. Converting an io.Reader into an HTML document:

    func ConvertToHTML(ctx context.Context, source io.Reader, output io.Writer, options renderer.Option...) (map[string]interface{}, error)

  2. Converting a file (given its name) into an HTML document:

    func ConvertFileToHTML(ctx context.Context, filename string, output io.Writer, options renderer.Option...) (map[string]interface{}, error)

where the returned map[string]interface{} object contains the document's title which is not part of the generated HTML <body> part, as well as the other attributes of the source document.

For now, the sole option to pass as a last argument is renderer.IncludeHeaderFooter to include the <header> and <footer> elements in the generated HTML document or not. Default is false, which means that only the <body> part of the HTML document is generated.

=== Macro definition

The user can define a macro by calling renderer.DefineMacro() and passing return value to conversion functions.

renderer.DefineMacro() defines a macro by the given name and associates the given template. The template is an implementation of renderer.MacroTemplate interface (ex. text.Template)

Libasciidoc calls Execute() method and passes types.UserMacro object to template when rendering.

An example the following:

var tmplStr = `<span>Example: {{.Value}}{{.Attributes.GetAsString "suffix"}}</span>`
var t = template.New("example")
var tmpl = template.Must(t.Parse(tmplStr))

output := &strings.Builder{}
content := strings.NewReader(`example::hello world[suffix=!!!!!]`)
libasciidoc.ConvertToHTML(context.Background(), content, output, renderer.DefineMacro(tmpl.Name(), tmpl))

== How to contribute

Please refer to the link:CONTRIBUTE.adoc[Contribute] page.

主要指標

概覽
名稱與所有者bytesparadise/libasciidoc
主編程語言Go
編程語言Makefile (語言數: 3)
平台
許可證Apache License 2.0
所有者活动
創建於2017-06-18 05:11:07
推送於2024-06-23 13:27:55
最后一次提交2023-10-12 07:24:18
發布數9
最新版本名稱v0.8.0 (發布於 )
第一版名稱v0.1.0 (發布於 )
用户参与
星數212
關注者數9
派生數25
提交數584
已啟用問題?
問題數517
打開的問題數51
拉請求數577
打開的拉請求數4
關閉的拉請求數15
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?