Class: MultiMarkdown
- Inherits:
-
Object
- Object
- MultiMarkdown
- Defined in:
- lib/multi_markdown.rb,
lib/multi_markdown/version.rb,
ext/ruby_multi_markdown.c
Overview
Front-end to fletcher penney’s implementation of MultiMarkdown
A simple processor:
>> puts MultiMarkdown.new('Hello, World.').to_html
<p>Hello, World.</p>
With other stuff:
>> puts MultiMarkdown.new('"Hello World!"', :no_smart_quotes).to_html
<p>"Hello World!"</p>
Constant Summary collapse
- EXTENSIONS =
{ "compatibility" => {:desc => "Markdown compatibility mode (disables all other options)", :short => "c"}, "complete" => {:desc => "Force complete document", :short => "f"}, "snippet" => {:desc => "Force snippet only", :short => "s"}, "no_smart_quotes" => {:desc => "Disable Smart quotes", :short => false}, "no_footnotes" => {:desc => "Disable Footnotes", :short => false}, "no_anchors" => {:desc => "Don't add anchors to headers, etc.", :short => false}, "process_html" => {:desc => "Process Markdown inside HTML", :short => false}, "no_metadata" => {:desc => "Don't parse Metadata", :short => false}, "obfuscate_email_addresses" => {:desc => "Mask email addresses", :short => false}, "critic_markup_accept_all" => {:desc => "CriticMarkup: Accept all proposed changes", :short => "a"}, "critic_markup_reject_all" => {:desc => "CriticMarkup: Reject all proposed changes", :short => "r"}, "random_footnote_anchor_numbers" => {:desc => "Use random numbers for footnote link anchors", :short => false} }
- VERSION =
The ruby ‘multimarkdown’ gem version
"6.7.0.0"- MMD_VERSION =
rb_str_new2(version)
Instance Method Summary collapse
-
#extract_metadata_keys ⇒ Object
Return Array of metadata keys.
-
#extract_metadata_value(key) ⇒ Object
(also: #extract_metadata)
:call-seq: extract_metadata_value(key).
-
#initialize(text, *extensions) ⇒ MultiMarkdown
constructor
Create a new MultiMarkdown processor.
-
#language=(language) ⇒ Object
** Public Methods.
-
#metadata(key = nil) ⇒ Object
Returns a Hash cointaining all Metadata.
-
#to_html ⇒ Object
Return string containing HTML generated from MultiMarkdown text.
-
#to_latex ⇒ Object
Return string containing latex generated from MultiMarkdown text.
Constructor Details
#initialize(text, *extensions) ⇒ MultiMarkdown
Create a new MultiMarkdown processor. The ‘text` argument is a string containing MultiMarkdown text. Variable other arguments may be supplied to set various processing options. See MultiMarkdown::EXTENSIONS for more.
38 39 40 41 42 43 44 |
# File 'lib/multi_markdown.rb', line 38 def initialize(text, *extensions) extensions.each do |ext| raise "Unknown extension: #{ext.inspect}" unless EXTENSIONS.keys.include?(ext.to_s) send("#{ext}=", true) end self.start_engine(text); end |
Instance Method Details
#extract_metadata_keys ⇒ Object
Return Array of metadata keys
129 130 131 132 133 134 135 |
# File 'ext/ruby_multi_markdown.c', line 129 static VALUE (VALUE self) { char * = (get_mmd_engine(self)); VALUE str = rb_utf8_str_new_cstr(); free(); return rb_funcall(str, rb_intern("split"), 1, rb_str_new2("\n")); } |
#extract_metadata_value(key) ⇒ Object Also known as: extract_metadata
:call-seq: extract_metadata_value(key)
Fetches metadata specified by key from MultiMarkdown text
137 138 139 140 141 142 143 144 145 |
# File 'ext/ruby_multi_markdown.c', line 137 static VALUE (VALUE self, VALUE key) { Check_Type(key, T_STRING); char *pkey = StringValuePtr(key); char * = (get_mmd_engine(self), pkey); VALUE result = rb_utf8_str_new_cstr(); return result; } |
#language=(language) ⇒ Object
** Public Methods
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'ext/ruby_multi_markdown.c', line 85 static VALUE rb_multimarkdown_set_language(VALUE self, VALUE language) { short lang = ENGLISH; VALUE language_s = rb_funcall(language, rb_intern("to_s"), 0); if (rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("de")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("german")) == Qtrue) { lang = GERMANGUILL; } else if (rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("ch")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("de-ch")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("swiss")) == Qtrue) { lang = GERMAN; } else if (rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("nl")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("dutch")) == Qtrue) { lang = DUTCH; } else if (rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("fr")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("french")) == Qtrue) { lang = FRENCH; } else if (rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("sp")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("spanish")) == Qtrue) { lang = SPANISH; } else if (rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("sv")) == Qtrue || rb_funcall(language_s, rb_intern("=="), 1, rb_str_new2("swedish")) == Qtrue) { lang = SWEDISH; } mmd_engine_set_language(get_mmd_engine(self), lang); return language; } |
#metadata(key = nil) ⇒ Object
Returns a Hash cointaining all Metadata
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/multi_markdown.rb', line 51 def (key = nil) if .nil? = {} .each do |k| [k.downcase] = (k) end end if key [key.to_s.downcase] else .dup end end |
#to_html ⇒ Object
Return string containing HTML generated from MultiMarkdown text
113 114 115 116 117 118 119 |
# File 'ext/ruby_multi_markdown.c', line 113 static VALUE rb_multimarkdown_to_html(VALUE self) { char *html = mmd_engine_convert(get_mmd_engine(self), FORMAT_HTML); VALUE result = rb_utf8_str_new_cstr(html); free(html); return result; } |
#to_latex ⇒ Object
Return string containing latex generated from MultiMarkdown text
121 122 123 124 125 126 127 |
# File 'ext/ruby_multi_markdown.c', line 121 static VALUE rb_multimarkdown_to_latex(VALUE self) { char *latex = mmd_engine_convert(get_mmd_engine(self), FORMAT_LATEX); VALUE result = rb_utf8_str_new_cstr(latex); free(latex); return result; } |