diff --git a/html.go b/html.go
index 4c8a2d6..0c83ea0 100644
--- a/html.go
+++ b/html.go
@@ -80,16 +80,20 @@ type HTMLRendererParameters struct {
HeaderIDPrefix string
// If set, add this text to the back of each Header ID, to ensure uniqueness.
HeaderIDSuffix string
+
+ Title string // Document title (used if CompletePage is set)
+ CSS string // Optional CSS file URL (used if CompletePage is set)
+
+ Flags HTMLFlags
+ Extensions Extensions
}
// HTML is a type that implements the Renderer interface for HTML output.
//
-// Do not create this directly, instead use the HTMLRenderer function.
+// Do not create this directly, instead use the NewHTMLRenderer function.
type HTML struct {
flags HTMLFlags
closeTag string // how to end singleton tags: either " />" or ">"
- title string // document title
- css string // optional css file url (used with HTML_COMPLETE_PAGE)
parameters HTMLRendererParameters
@@ -114,17 +118,6 @@ const (
htmlClose = ">"
)
-// HTMLRenderer creates and configures an HTML object, which
-// satisfies the Renderer interface.
-//
-// flags is a set of HTMLFlags ORed together.
-// title is the title of the document, and css is a URL for the document's
-// stylesheet.
-// title and css are only used when HTML_COMPLETE_PAGE is selected.
-func HTMLRenderer(flags HTMLFlags, extensions Extensions, title string, css string) Renderer {
- return HTMLRendererWithParameters(flags, extensions, title, css, HTMLRendererParameters{})
-}
-
type HTMLWriter struct {
bytes.Buffer
}
@@ -139,26 +132,25 @@ func (r *HTML) Write(b []byte) (int, error) {
return r.w.Write(b)
}
-func HTMLRendererWithParameters(flags HTMLFlags, extensions Extensions, title string,
- css string, renderParameters HTMLRendererParameters) Renderer {
+// NewHTMLRenderer creates and configures an HTML object, which
+// satisfies the Renderer interface.
+func NewHTMLRenderer(params HTMLRendererParameters) Renderer {
// configure the rendering engine
closeTag := htmlClose
- if flags&UseXHTML != 0 {
+ if params.Flags&UseXHTML != 0 {
closeTag = xhtmlClose
}
- if renderParameters.FootnoteReturnLinkContents == "" {
- renderParameters.FootnoteReturnLinkContents = `[return]`
+ if params.FootnoteReturnLinkContents == "" {
+ params.FootnoteReturnLinkContents = `[return]`
}
var writer HTMLWriter
return &HTML{
- flags: flags,
- extensions: extensions,
+ flags: params.Flags,
+ extensions: params.Extensions,
closeTag: closeTag,
- title: title,
- css: css,
- parameters: renderParameters,
+ parameters: params,
headerCount: 0,
currentLevel: 0,
@@ -694,7 +686,7 @@ func (r *HTML) DocumentHeader() {
}
r.w.WriteString("
\n")
r.w.WriteString(" ")
- r.NormalText([]byte(r.title))
+ r.NormalText([]byte(r.parameters.Title))
r.w.WriteString("\n")
r.w.WriteString(" \n")
- if r.css != "" {
+ if r.parameters.CSS != "" {
r.w.WriteString(" \n")
@@ -1412,9 +1404,9 @@ func (r *HTML) writeDocumentHeader(w *bytes.Buffer, sr *SPRenderer) {
w.WriteString("\n")
w.WriteString(" ")
if r.extensions&Smartypants != 0 {
- w.Write(sr.Process([]byte(r.title)))
+ w.Write(sr.Process([]byte(r.parameters.Title)))
} else {
- w.Write(esc([]byte(r.title), false))
+ w.Write(esc([]byte(r.parameters.Title), false))
}
w.WriteString("\n")
w.WriteString(" \n")
- if r.css != "" {
+ if r.parameters.CSS != "" {
w.WriteString(" \n")
diff --git a/latex.go b/latex.go
index d059fa1..21a5d0d 100644
--- a/latex.go
+++ b/latex.go
@@ -19,17 +19,17 @@ import "bytes"
// Latex is a type that implements the Renderer interface for LaTeX output.
//
-// Do not create this directly, instead use the LatexRenderer function.
+// Do not create this directly, instead use the NewLatexRenderer function.
type Latex struct {
w HTMLWriter
}
-// LatexRenderer creates and configures a Latex object, which
+// NewLatexRenderer creates and configures a Latex object, which
// satisfies the Renderer interface.
//
// flags is a set of LATEX_* options ORed together (currently no such options
// are defined).
-func LatexRenderer(flags int) Renderer {
+func NewLatexRenderer(flags int) Renderer {
var writer HTMLWriter
return &Latex{
w: writer,
diff --git a/markdown.go b/markdown.go
index ae7968c..95dff1e 100644
--- a/markdown.go
+++ b/markdown.go
@@ -345,8 +345,10 @@ type Options struct {
// It processes markdown input with no extensions enabled.
func MarkdownBasic(input []byte) []byte {
// set up the HTML renderer
- htmlFlags := UseXHTML
- renderer := HTMLRenderer(htmlFlags, CommonExtensions, "", "")
+ renderer := NewHTMLRenderer(HTMLRendererParameters{
+ Flags: UseXHTML,
+ Extensions: CommonExtensions,
+ })
// set up the parser
return Markdown(input, renderer, Options{Extensions: 0})
@@ -373,7 +375,10 @@ func MarkdownBasic(input []byte) []byte {
// * Custom Header IDs
func MarkdownCommon(input []byte) []byte {
// set up the HTML renderer
- renderer := HTMLRenderer(CommonHtmlFlags, CommonExtensions, "", "")
+ renderer := NewHTMLRenderer(HTMLRendererParameters{
+ Flags: CommonHtmlFlags,
+ Extensions: CommonExtensions,
+ })
return Markdown(input, renderer, DefaultOptions)
}
@@ -382,8 +387,8 @@ func MarkdownCommon(input []byte) []byte {
// The supplied Renderer is used to format the output, and extensions dictates
// which non-standard extensions are enabled.
//
-// To use the supplied Html or LaTeX renderers, see HtmlRenderer and
-// LatexRenderer, respectively.
+// To use the supplied HTML or LaTeX renderers, see NewHTMLRenderer and
+// NewLatexRenderer, respectively.
func Markdown(input []byte, renderer Renderer, options Options) []byte {
if renderer == nil {
return nil
diff --git a/test_helpers.go b/test_helpers.go
index 1675120..fc1f415 100644
--- a/test_helpers.go
+++ b/test_helpers.go
@@ -43,8 +43,9 @@ func execRecoverableTestSuite(t *testing.T, tests []string, params TestParams, s
}
func runMarkdown(input string, params TestParams) string {
- renderer := HTMLRendererWithParameters(params.HTMLFlags,
- params.Options.Extensions, "", "", params.HTMLRendererParameters)
+ params.HTMLRendererParameters.Flags = params.HTMLFlags
+ params.HTMLRendererParameters.Extensions = params.Options.Extensions
+ renderer := NewHTMLRenderer(params.HTMLRendererParameters)
return string(Markdown([]byte(input), renderer, params.Options))
}