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
Hello, World.
With other stuff: >> puts MultiMarkdown.new('"Hello World!"', :no_smart_quotes).to_html
"Hello World!"
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.2"- MMD_VERSION =
rb_str_new_cstr(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
141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'ext/ruby_multi_markdown.c', line 141
static VALUE rb_multimarkdown_extract_metadata_keys(VALUE self) {
mmd_engine *engine = get_mmd_engine(self);
size_t end = 0;
if (!mmd_engine_has_metadata(engine, &end)) {
return rb_ary_new();
}
char *metadata_keys = mmd_engine_metadata_keys(engine);
VALUE str = rb_utf8_str_new_cstr(metadata_keys);
free(metadata_keys);
return rb_funcall(str, rb_intern("split"), 1, rb_str_new_cstr("\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
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'ext/ruby_multi_markdown.c', line 156
static VALUE rb_multimarkdown_extract_metadata_value(VALUE self, VALUE key) {
Check_Type(key, T_STRING);
mmd_engine *engine = get_mmd_engine(self);
size_t end = 0;
if (!mmd_engine_has_metadata(engine, &end)) {
return Qnil;
}
char *metadata = mmd_engine_metavalue_for_key(engine, StringValueCStr(key));
if (metadata == NULL) {
return Qnil;
}
return rb_utf8_str_new_cstr(metadata);
}
|
#language=(language) ⇒ Object
** Public Methods
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'ext/ruby_multi_markdown.c', line 101
static VALUE rb_multimarkdown_set_language(VALUE self, VALUE language) {
short lang = ENGLISH;
VALUE language_s = rb_obj_as_string(language);
const char *s = StringValueCStr(language_s);
if (strcmp(s, "de") == 0 || strcmp(s, "german") == 0) {
lang = GERMANGUILL;
} else if (strcmp(s, "ch") == 0 || strcmp(s, "de-ch") == 0 || strcmp(s, "swiss") == 0) {
lang = GERMAN;
} else if (strcmp(s, "nl") == 0 || strcmp(s, "dutch") == 0) {
lang = DUTCH;
} else if (strcmp(s, "fr") == 0 || strcmp(s, "french") == 0) {
lang = FRENCH;
} else if (strcmp(s, "sp") == 0 || strcmp(s, "spanish") == 0) {
lang = SPANISH;
} else if (strcmp(s, "sv") == 0 || strcmp(s, "swedish") == 0) {
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 @cached_metadata.nil? @cached_metadata = {} .each do |k| @cached_metadata[k.downcase] = (k) end end if key @cached_metadata[key.to_s.downcase] else @cached_metadata.dup end end |
#to_html ⇒ Object
Return string containing HTML generated from MultiMarkdown text
125 126 127 128 129 130 131 |
# File 'ext/ruby_multi_markdown.c', line 125 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
133 134 135 136 137 138 139 |
# File 'ext/ruby_multi_markdown.c', line 133 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; } |