| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package mark
- import "strings"
- // Mark
- type Mark struct {
- *parse
- Input string
- }
- // Mark options used to configure your Mark object
- // set `Smartypants` and `Fractions` to true to enable
- // smartypants and smartfractions rendering.
- type Options struct {
- Gfm bool
- Tables bool
- Smartypants bool
- Fractions bool
- }
- // DefaultOptions return an options struct with default configuration
- // it's means that only Gfm, and Tables set to true.
- func DefaultOptions() *Options {
- return &Options{
- Gfm: true,
- Tables: true,
- }
- }
- // New return a new Mark
- func New(input string, opts *Options) *Mark {
- // Preprocessing
- input = strings.Replace(input, "\t", " ", -1)
- if opts == nil {
- opts = DefaultOptions()
- }
- return &Mark{
- Input: input,
- parse: newParse(input, opts),
- }
- }
- // parse and render input
- func (m *Mark) Render() string {
- m.parse.parse()
- m.render()
- return m.output
- }
- // AddRenderFn let you pass NodeType, and RenderFn function
- // and override the default Node rendering
- func (m *Mark) AddRenderFn(typ NodeType, fn RenderFn) {
- m.renderFn[typ] = fn
- }
- // Staic render function
- func Render(input string) string {
- m := New(input, nil)
- return m.Render()
- }
|