Skip to content

cnsuhao/sundown-ffi

 
 

Repository files navigation

Build Status

sundown-ffi

A LuaJIT interface to the Sundown library (a Markdown implementation)

Installation

torch-rocks install https://raw.github.com/andresy/sundown-ffi/master/rocks/sundown-scm-1.rockspec

Usage

HTML

To render into HTML, the easiest is to use the provided renderHTML() function (aliased to render()), which interfaces Sundown renderer with Houdini HTML default renderer.

local sundown = require 'sundown'

local html = sundow.render[[
sundown-ffi
===========

A LuaJIT interface to the Sundown library (a Markdown implementation)

# Installation #

torch-rocks install https://raw.github.com/andresy/sundown-ffi/master/rocks/sundown-scm-1.rockspec
]]

You can equivalently call render() in sundown.html:

local html = require 'sundown.html'
html.render[[
...
]]

ASCII Markdown Pretty Print

We also provide an extra renderer renderASCII() which outputs pretty colored ASCII for Markdown pages.

local sundown = require 'sundown'
local text = sundown.renderASCII[[
sundown-ffi
===========

A LuaJIT interface to the Sundown library (a Markdown implementation)

# Installation #

torch-rocks install https://raw.github.com/andresy/sundown-ffi/master/rocks/sundown-scm-1.rockspec
]]

You can equivalently call render() in sundown.ascii:

local ascii = require 'sundown.ascii'
ascii.render[[
...
]]

Styles and Colors

renderASCII(text[, style]) takes an optional style argument, which defines the printing style of each Markdown element. The default style is the following:

local color_style = {
   maxlsz = 80,
   none = c.none,
   h1 = c.Magenta,
   h2 = c.Red,
   h3 = c.Blue,
   h4 = c.Cyan,
   h5 = c.Green,
   h6 = c.Yellow,
   blockquote = '',
   hrule = c.Black,
   link = c.green,
   linkcontent = c.Green,
   code = c.cyan,
   emph = c.Black,
   doubleemph = c.Red,
   tripleemph = c.Magenta,
   strikethrough = c._white,
   header = c.White,
   footer = c.White,
   image = c.yellow,
   ulist = c.magenta,
   olist = c.magenta,
   tableheader = c.magenta,
   superscript = '^'
}

Where colors are ASCII codes defined with:

local c = {
   none = '\27[0m',
   black = '\27[0;30m',
   red = '\27[0;31m',
   green = '\27[0;32m',
   yellow = '\27[0;33m',
   blue = '\27[0;34m',
   magenta = '\27[0;35m',
   cyan = '\27[0;36m',
   white = '\27[0;37m',
   Black = '\27[1;30m',
   Red = '\27[1;31m',
   Green = '\27[1;32m',
   Yellow = '\27[1;33m',
   Blue = '\27[1;34m',
   Magenta = '\27[1;35m',
   Cyan = '\27[1;36m',
   White = '\27[1;37m',
   _black = '\27[40m',
   _red = '\27[41m',
   _green = '\27[42m',
   _yellow = '\27[43m',
   _blue = '\27[44m',
   _magenta = '\27[45m',
   _cyan = '\27[46m',
   _white = '\27[47m'
}

You can redefine your own if interested. You can also turn color on/off with the following:

local ascii = require 'sundown.ascii'

ascii.bw() -- black and white output
ascii.render[[
...
]]

ascii.color() -- colored output
ascii.render[[
...
]]

Advanced usage

All functions from the library sundown and houdini are accessible through sundown.C.func where func is the function of interest.

See the Sundown library page for more details.

Note that Houdini C function and structure names are prefixed here with sd_html_ (e.g. sd_html_renderer). Sundown C function and structure names are prefixed with sd_ (e.g. sd_markdown_render).

See sdcdefs.lua and htmlcdefs.lua for what is actually available.

About

A LuaJIT interface to the Sundown library (a Markdown implementation)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 82.4%
  • Lua 16.8%
  • CMake 0.8%