Class: PEGMarkdown
- Inherits:
-
Object
- Object
- PEGMarkdown
- Defined in:
- lib/peg_markdown.rb,
ext/markdown.c
Overview
Front-end to jgm’s peg-markdown implementation of Markdown, the humane text markup language.
A simple processor:
>>> puts Markdown.new("Hello, World.").to_html
<p>Hello, World.</p>
With other stuff:
>>> puts Markdown.new("_Hello -- World!_", :smart, :filter_html).to_html
<p><em>Hello World!</em></p>
Instance Attribute Summary collapse
-
#filter_html ⇒ Object
Do not output any raw HTML included in the source text.
-
#filter_styles ⇒ Object
Do not output <style> tags included in the source text.
-
#fold_lines ⇒ Object
Included for compatibility with RedCloth’s interface.
-
#notes ⇒ Object
Set true to have footnotes processed.
-
#smart ⇒ Object
Set true to have smarty-like quote translation performed.
-
#text ⇒ Object
(also: #to_s)
readonly
Original Markdown formatted text.
Instance Method Summary collapse
-
#initialize(text, *extensions) ⇒ PEGMarkdown
constructor
Create a new Markdown processor.
- #to_groff_mm(*args) ⇒ Object
- #to_html(*args) ⇒ Object
- #to_latex(*args) ⇒ Object
Constructor Details
#initialize(text, *extensions) ⇒ PEGMarkdown
Create a new Markdown processor. The text argument is a string containing Markdown text. Variable other arguments may be supplied to set various processing options:
-
:smart- Enable SmartyPants processing. -
:notes- Enable footnotes. -
:filter_styles- Do not output <style> tags included in the source text. -
:filter_html- Do not output raw HTML included in the source text. -
:fold_lines- RedCloth compatible line folding (not used).
46 47 48 49 50 51 52 53 |
# File 'lib/peg_markdown.rb', line 46 def initialize(text, *extensions) @text = text @smart = false @notes = false @filter_styles = false @filter_html = false extensions.each { |e| send("#{e}=", true) } end |
Instance Attribute Details
#filter_html ⇒ Object
Do not output any raw HTML included in the source text.
29 30 31 |
# File 'lib/peg_markdown.rb', line 29 def filter_html @filter_html end |
#filter_styles ⇒ Object
Do not output <style> tags included in the source text.
26 27 28 |
# File 'lib/peg_markdown.rb', line 26 def filter_styles @filter_styles end |
#fold_lines ⇒ Object
Included for compatibility with RedCloth’s interface.
32 33 34 |
# File 'lib/peg_markdown.rb', line 32 def fold_lines @fold_lines end |
#notes ⇒ Object
Set true to have footnotes processed.
23 24 25 |
# File 'lib/peg_markdown.rb', line 23 def notes @notes end |
#smart ⇒ Object
Set true to have smarty-like quote translation performed.
20 21 22 |
# File 'lib/peg_markdown.rb', line 20 def smart @smart end |
#text ⇒ Object (readonly) Also known as: to_s
Original Markdown formatted text.
17 18 19 |
# File 'lib/peg_markdown.rb', line 17 def text @text end |
Instance Method Details
#to_groff_mm(*args) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'ext/markdown.c', line 55 static VALUE rb_markdown_to_groff_mm(int argc, VALUE *argv, VALUE self) { /* grab char pointer to markdown input text */ VALUE text = rb_funcall(self, rb_intern("text"), 0); Check_Type(text, T_STRING); char * ptext = StringValuePtr(text); /* flip extension bits - note that defaults are different than * for HTML */ int extensions = EXT_SMART | EXT_NOTES | EXT_FILTER_HTML | EXT_FILTER_STYLES; if ( rb_funcall(self, rb_intern("smart"), 0) == Qfalse ) extensions = extensions & ~ EXT_SMART ; if ( rb_funcall(self, rb_intern("notes"), 0) == Qfalse ) extensions = extensions & ~ EXT_NOTES ; char *groff = markdown_to_string(ptext, extensions, GROFF_MM_FORMAT); VALUE result = rb_str_new2(groff); free(groff); return result; } |
#to_html(*args) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'ext/markdown.c', line 6 static VALUE rb_markdown_to_html(int argc, VALUE *argv, VALUE self) { /* grab char pointer to markdown input text */ VALUE text = rb_funcall(self, rb_intern("text"), 0); Check_Type(text, T_STRING); char * ptext = StringValuePtr(text); /* flip extension bits */ int extensions = 0; if ( rb_funcall(self, rb_intern("smart"), 0) == Qtrue ) extensions = extensions | EXT_SMART ; if ( rb_funcall(self, rb_intern("notes"), 0) == Qtrue ) extensions = extensions | EXT_NOTES ; if ( rb_funcall(self, rb_intern("filter_html"), 0) == Qtrue ) extensions = extensions | EXT_FILTER_HTML ; if ( rb_funcall(self, rb_intern("filter_styles"), 0) == Qtrue ) extensions = extensions | EXT_FILTER_STYLES ; char *html = markdown_to_string(ptext, extensions, HTML_FORMAT); VALUE result = rb_str_new2(html); free(html); return result; } |
#to_latex(*args) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'ext/markdown.c', line 32 static VALUE rb_markdown_to_latex(int argc, VALUE *argv, VALUE self) { /* grab char pointer to markdown input text */ VALUE text = rb_funcall(self, rb_intern("text"), 0); Check_Type(text, T_STRING); char * ptext = StringValuePtr(text); /* flip extension bits - note that defaults are different than * for HTML */ int extensions = EXT_SMART | EXT_NOTES | EXT_FILTER_HTML | EXT_FILTER_STYLES; if ( rb_funcall(self, rb_intern("smart"), 0) == Qfalse ) extensions = extensions & ~ EXT_SMART ; if ( rb_funcall(self, rb_intern("notes"), 0) == Qfalse ) extensions = extensions & ~ EXT_NOTES ; char *latex = markdown_to_string(ptext, extensions, LATEX_FORMAT); VALUE result = rb_str_new2(latex); free(latex); return result; } |