rmultimarkdown 4.6.0.1 → 4.6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +3 -1
- data/bin/rmultimarkdown +13 -18
- data/ext/multi_markdown.c +23 -4
- data/lib/multi_markdown.bundle +0 -0
- data/lib/multi_markdown.rb +24 -43
- data/lib/multi_markdown/version.rb +1 -1
- data/test/extensions_test.rb.rb +174 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 167af5d3d0863a48d28427711ecbc8bcd42fe9cd
|
4
|
+
data.tar.gz: 83c2e5097b502293ae34ce4ba5ad293f4acf6af6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ea5083a0b5d47cc067f35db9152ce9245e1991eb525be81cef504f883a593122dd0c7b2f98341b634ce01e3a1e47aae7f089347b553774e0844efd77da7419e
|
7
|
+
data.tar.gz: 7cd100553e21772c28fedb0a56ede9f8b87790f3bc0a8c58ed7dde10dc1b65c578b30cd8370ebf35480ba7c4eba83e746607fd6a63a2282a7efc31ea934b9dc3
|
data/Rakefile
CHANGED
data/bin/rmultimarkdown
CHANGED
@@ -30,6 +30,7 @@ class Parser
|
|
30
30
|
next if @used_short.include?(c) || c == "_"
|
31
31
|
return c # returns from short_from method
|
32
32
|
end
|
33
|
+
nil
|
33
34
|
end
|
34
35
|
|
35
36
|
def validate(options) # remove this method if you want fewer lines of code and don't need validations
|
@@ -52,14 +53,14 @@ class Parser
|
|
52
53
|
@result = (@default_values || {}).clone # reset or new
|
53
54
|
@optionparser ||= OptionParser.new do |p| # prepare only once
|
54
55
|
@options.each do |o|
|
55
|
-
@used_short << short = o[2][:short] || short_from(o[0])
|
56
|
+
@used_short << short = o[2][:short] == false ? nil : o[2][:short] || short_from(o[0])
|
56
57
|
@result[o[0]] = o[2][:default] || false # set default
|
57
58
|
klass = o[2][:default].class == Fixnum ? Integer : o[2][:default].class
|
58
59
|
desk = o[1] + (o[2][:nodefault] ? "" : " (default is #{@result[o[0]]})")
|
59
60
|
if [TrueClass, FalseClass, NilClass].include?(klass) # boolean switch
|
60
|
-
p.on("-" << short, "--
|
61
|
+
p.on(short && "-" << short, "--" << o[0].to_s.gsub("_", "-"), desk) {|x| @result[o[0]] = x}
|
61
62
|
else # argument with parameter
|
62
|
-
p.on("-" << short, "--" << o[0].to_s.gsub("_", "-") << " " << (o[2][:name] ? "[#{o[2][:name].to_s}]" : ""), klass, desk) {|x| @result[o[0]] = x}
|
63
|
+
p.on(short && "-" << short, "--" << o[0].to_s.gsub("_", "-") << " " << (o[2][:name] ? "[#{o[2][:name].to_s}]" : ""), klass, desk) {|x| @result[o[0]] = x}
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
@@ -85,25 +86,19 @@ end
|
|
85
86
|
options = Parser.new do |p|
|
86
87
|
p.banner = "Ruby interface to MultiMarkdown"
|
87
88
|
p.version = "rmultimarkdown #{MultiMarkdown::VERSION}"
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
p.option :output, "send output to FILE (default is stdout)", :name => "FILE", :default => "", :nodefault => true
|
95
|
-
p.option :to, "convert to FORMAT", :name => "FORMAT", :default => "html", :value_in_set => ["html","latex","memoir","beamer","odf","opml"]
|
96
|
-
p.option :extract, "extract and display metadata specified by KEY", :name => "KEY", :default => "", :nodefault => true
|
89
|
+
p.option :output, "send output to FILE (default is stdout)", :name => "FILE", :default => "", :nodefault => true, :short => "o"
|
90
|
+
p.option :to, "convert to FORMAT", :name => "FORMAT", :default => "html", :value_in_set => ["html","latex"], :short => "t"
|
91
|
+
p.option :extract, "extract and display metadata specified by KEY", :name => "KEY", :default => "", :nodefault => true, :short => "e"
|
92
|
+
MultiMarkdown::EXTENSIONS.each do |ext, opts|
|
93
|
+
p.option ext.to_sym, opts[:desc], :default => false, :short => opts[:short] || false
|
94
|
+
end
|
97
95
|
end.process!
|
98
96
|
|
99
97
|
# Convert options to MultiMarkdown module's options
|
100
98
|
mmopts = []
|
101
|
-
|
102
|
-
mmopts <<
|
103
|
-
|
104
|
-
mmopts << :smart if options[:smart]
|
105
|
-
mmopts << :notes if options[:notes]
|
106
|
-
mmopts << :compatibility if options[:compatibility]
|
99
|
+
MultiMarkdown::EXTENSIONS.each do |ext, description|
|
100
|
+
mmopts << ext.to_sym if options[ext.to_sym]
|
101
|
+
end
|
107
102
|
|
108
103
|
# ARGV will now only contain input filename, if it contains anything
|
109
104
|
STDIN.reopen(ARGV[0], 'rb') if ARGV.any?
|
data/ext/multi_markdown.c
CHANGED
@@ -19,16 +19,35 @@ static VALUE rb_cMultiMarkdown;
|
|
19
19
|
|
20
20
|
static int get_exts(VALUE self) {
|
21
21
|
int extensions = 0;
|
22
|
-
if (rb_funcall(self, rb_intern("
|
22
|
+
if (rb_funcall(self, rb_intern("complete"), 0) == Qtrue)
|
23
|
+
extensions = extensions | EXT_COMPLETE;
|
24
|
+
if (rb_funcall(self, rb_intern("snippet"), 0) == Qtrue)
|
25
|
+
extensions = extensions | EXT_SNIPPET;
|
26
|
+
if (rb_funcall(self, rb_intern("no_smart_quotes"), 0) != Qtrue)
|
23
27
|
extensions = extensions | EXT_SMART;
|
24
|
-
if (rb_funcall(self, rb_intern("
|
28
|
+
if (rb_funcall(self, rb_intern("no_footnotes"), 0) != Qtrue)
|
25
29
|
extensions = extensions | EXT_NOTES;
|
26
|
-
if (rb_funcall(self, rb_intern("
|
27
|
-
extensions = extensions |
|
30
|
+
if (rb_funcall(self, rb_intern("no_anchors"), 0) == Qtrue)
|
31
|
+
extensions = extensions | EXT_NO_LABELS;
|
28
32
|
if (rb_funcall(self, rb_intern("filter_styles"), 0) == Qtrue)
|
29
33
|
extensions = extensions | EXT_FILTER_STYLES;
|
34
|
+
if (rb_funcall(self, rb_intern("filter_html"), 0) == Qtrue)
|
35
|
+
extensions = extensions | EXT_FILTER_HTML;
|
30
36
|
if (rb_funcall(self, rb_intern("process_html"), 0) == Qtrue)
|
31
37
|
extensions = extensions | EXT_PROCESS_HTML;
|
38
|
+
if (rb_funcall(self, rb_intern("no_metadata"), 0) == Qtrue)
|
39
|
+
extensions = extensions | EXT_NO_METADATA;
|
40
|
+
if (rb_funcall(self, rb_intern("obfuscate_email_addresses"), 0) == Qtrue)
|
41
|
+
extensions = extensions | EXT_OBFUSCATE;
|
42
|
+
if (rb_funcall(self, rb_intern("critic_markup_accept_all"), 0) == Qtrue)
|
43
|
+
extensions = extensions | EXT_CRITIC | EXT_CRITIC_ACCEPT;
|
44
|
+
if (rb_funcall(self, rb_intern("critic_markup_reject_all"), 0) == Qtrue)
|
45
|
+
extensions = extensions | EXT_CRITIC | EXT_CRITIC_REJECT;
|
46
|
+
if (rb_funcall(self, rb_intern("random_footnote_anchor_numbers"), 0) == Qtrue)
|
47
|
+
extensions = extensions | EXT_RANDOM_FOOT;
|
48
|
+
if (rb_funcall(self, rb_intern("escaped_line_breaks"), 0) == Qtrue)
|
49
|
+
extensions = extensions | EXT_ESCAPED_LINE_BREAKS;
|
50
|
+
|
32
51
|
/* Compatibility overwrites all other extensions */
|
33
52
|
if (rb_funcall(self, rb_intern("compatibility"), 0) == Qtrue)
|
34
53
|
extensions = EXT_COMPATIBILITY;
|
data/lib/multi_markdown.bundle
CHANGED
Binary file
|
data/lib/multi_markdown.rb
CHANGED
@@ -13,55 +13,36 @@ require 'multi_markdown/version'
|
|
13
13
|
#
|
14
14
|
class MultiMarkdown
|
15
15
|
|
16
|
-
|
17
|
-
|
16
|
+
EXTENSIONS = {
|
17
|
+
"compatibility" => {:desc => "Markdown compatibility mode (disables all other options)", :short => "c"},
|
18
|
+
"complete" => {:desc => "Force complete document", :short => "f"},
|
19
|
+
"snippet" => {:desc => "Force snippet only", :short => "s"},
|
20
|
+
"no_smart_quotes" => {:desc => "Disable Smart quotes", :short => false},
|
21
|
+
"no_footnotes" => {:desc => "Disable Footnotes", :short => false},
|
22
|
+
"no_anchors" => {:desc => "Don't add anchors to headers, etc.", :short => false},
|
23
|
+
"filter_styles" => {:desc => "Filter out style blocks", :short => false},
|
24
|
+
"filter_html" => {:desc => "Filter out raw HTML", :short => false},
|
25
|
+
"process_html" => {:desc => "Process Markdown inside HTML", :short => false},
|
26
|
+
"no_metadata" => {:desc => "Don't parse Metadata", :short => false},
|
27
|
+
"obfuscate_email_addresses" => {:desc => "Mask email addresses", :short => false},
|
28
|
+
"critic_markup_accept_all" => {:desc => "CriticMarkup: Accept all proposed changes", :short => "a"},
|
29
|
+
"critic_markup_reject_all" => {:desc => "CriticMarkup: Reject all proposed changes", :short => "r"},
|
30
|
+
"random_footnote_anchor_numbers" => {:desc => "Use random numbers for footnote link anchors", :short => false},
|
31
|
+
"escaped_line_breaks" => {:desc => "Escaped line break", :short => false}
|
32
|
+
}
|
18
33
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
# Do not output `<style>` tags included in the source text.
|
23
|
-
attr_accessor :filter_styles
|
24
|
-
|
25
|
-
# Do not output any raw HTML included in the source text.
|
26
|
-
attr_accessor :filter_html
|
27
|
-
|
28
|
-
# Process MultiMarkdown inside of raw HTML
|
29
|
-
attr_accessor :process_html
|
30
|
-
|
31
|
-
# Markdown compatibility mode
|
32
|
-
attr_accessor :compatibility
|
33
|
-
|
34
|
-
# Included for compatibility with RedCloth's interface.
|
35
|
-
attr_accessor :fold_lines
|
34
|
+
EXTENSIONS.keys.each do |ext|
|
35
|
+
attr_accessor ext
|
36
|
+
end
|
36
37
|
|
37
38
|
# Create a new MultiMarkdown processor. The `text` argument is a string
|
38
39
|
# containing MultiMarkdown text. Variable other arguments may be supplied to
|
39
|
-
# set various processing options
|
40
|
-
#
|
41
|
-
# * `:smart` - Enable SmartyPants processing.
|
42
|
-
# * `:notes` - Enable footnotes.
|
43
|
-
# * `:filter_styles` - Do not output `<style>` tags included in the
|
44
|
-
# source text.
|
45
|
-
# * `:filter_html` - Do not output raw HTML included in the
|
46
|
-
# source text.
|
47
|
-
# * `:process_html` - Process MultiMarkdown code inside HTML tags.
|
48
|
-
# * `:compatibility` - Process MultiMarkdown code in Markdown
|
49
|
-
# compatibility mode (disables all other extensions)
|
50
|
-
# * `:fold_lines` - RedCloth compatible line folding (not used).
|
51
|
-
#
|
40
|
+
# set various processing options. See MultiMarkdown::EXTENSIONS for more.
|
52
41
|
def initialize(text, *extensions)
|
53
42
|
@text = text
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
@filter_html = false
|
58
|
-
@process_html = false
|
59
|
-
@compatibility = false
|
60
|
-
extensions.each { |e| send("#{e}=", true) }
|
61
|
-
if @compatibility
|
62
|
-
@smart = false
|
63
|
-
@notes = false
|
64
|
-
@process_html = false
|
43
|
+
extensions.each do |ext|
|
44
|
+
raise "Unknown extension: #{ext.inspect}" unless EXTENSIONS.keys.include?(ext.to_s)
|
45
|
+
send("#{ext}=", true)
|
65
46
|
end
|
66
47
|
end
|
67
48
|
|
@@ -0,0 +1,174 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
$: << File.join(File.dirname(__FILE__), "../lib")
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'multi_markdown'
|
7
|
+
|
8
|
+
class ExtensionsTest < Test::Unit::TestCase
|
9
|
+
|
10
|
+
def test_force_complete_document
|
11
|
+
mmd = 'Some very simple _Markdown_'
|
12
|
+
|
13
|
+
# Don't change anything (default)
|
14
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
15
|
+
assert !multimarkdown.to_html.include?('<html>'), "Found '<html>' tag: '#{multimarkdown.to_html}'"
|
16
|
+
|
17
|
+
# Force complete document
|
18
|
+
multimarkdown = MultiMarkdown.new(mmd, :complete)
|
19
|
+
assert multimarkdown.to_html.include?('<html>'), "Didn't find '<html>' tag: '#{multimarkdown.to_html}'"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_force_snippet_mode
|
23
|
+
mmd = "Meta1: Value\nMeta2: Value2\n\nHello!"
|
24
|
+
|
25
|
+
# Don't change anything (default)
|
26
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
27
|
+
assert multimarkdown.to_html.include?('<html>'), "Didn't find '<html>' tag: '#{multimarkdown.to_html}'"
|
28
|
+
|
29
|
+
# Force snippet
|
30
|
+
multimarkdown = MultiMarkdown.new(mmd, :snippet)
|
31
|
+
assert !multimarkdown.to_html.include?('<html>'), "Found '<html>' tag: '#{multimarkdown.to_html}'"
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_smart_quotes
|
35
|
+
mmd = 'Quotes are "beautiful"'
|
36
|
+
|
37
|
+
# Don't change anything (default)
|
38
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
39
|
+
assert multimarkdown.to_html.include?('“'), "Didn't find nice quote '“': '#{multimarkdown.to_html}'"
|
40
|
+
assert multimarkdown.to_html.include?('”'), "Didn't find nice quote '”': '#{multimarkdown.to_html}'"
|
41
|
+
assert !multimarkdown.to_html.include?('"'), "Found quote '"': '#{multimarkdown.to_html}'"
|
42
|
+
|
43
|
+
# Disble smart quotes
|
44
|
+
multimarkdown = MultiMarkdown.new(mmd, :no_smart_quotes)
|
45
|
+
assert_equal '<p>Quotes are "beautiful"</p>', multimarkdown.to_html.strip
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_footnotes
|
49
|
+
mmd = <<eof
|
50
|
+
Here is some text containing a footnote.[^somesamplefootnote]
|
51
|
+
|
52
|
+
[^somesamplefootnote]: Here is the text of the footnote itself.
|
53
|
+
eof
|
54
|
+
|
55
|
+
# Don't change anything (default)
|
56
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
57
|
+
assert multimarkdown.to_html.include?('class="footnotes"'), "Didn't find footnote container: '#{multimarkdown.to_html}'"
|
58
|
+
assert multimarkdown.to_html.include?('text of the footnote itself'), "Didn't find footnote text: '#{multimarkdown.to_html}'"
|
59
|
+
assert multimarkdown.to_html.include?('#fnref:1'), "Didn't find footnote anchor '#fnref:1': '#{multimarkdown.to_html}'"
|
60
|
+
|
61
|
+
multimarkdown = MultiMarkdown.new(mmd, :random_footnote_anchor_numbers)
|
62
|
+
assert !multimarkdown.to_html.include?('#fnref:1'), "Found footnote anchor '#fnref:1': '#{multimarkdown.to_html}'"
|
63
|
+
|
64
|
+
multimarkdown = MultiMarkdown.new(mmd, :no_footnotes)
|
65
|
+
assert !multimarkdown.to_html.include?('class="footnotes"'), "Found footnote container: '#{multimarkdown.to_html}'"
|
66
|
+
assert multimarkdown.to_html.include?('[^somesamplefootnote]'), "Didn't find footnote markdown text: '#{multimarkdown.to_html}'"
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_anchors
|
71
|
+
mmd = '# A Heading'
|
72
|
+
|
73
|
+
# Don't change anything (default)
|
74
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
75
|
+
assert multimarkdown.to_html.include?('id="aheading"'), "Didn't find a tag with 'id=\"aheading\"': '#{multimarkdown.to_html}'"
|
76
|
+
|
77
|
+
# Turn off auto anchors
|
78
|
+
multimarkdown = MultiMarkdown.new(mmd, :no_anchors)
|
79
|
+
assert !multimarkdown.to_html.include?('id="aheading"'), "Found a tag with 'id=\"aheading\"': '#{multimarkdown.to_html}'"
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_filter_styles
|
83
|
+
mmd = '<style>p {color: red}</style> <span style="color: blue">It is blue!</span>'
|
84
|
+
|
85
|
+
# Don't change anything (default)
|
86
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
87
|
+
assert multimarkdown.to_html.include?('<style>p {color: red}</style>'), "Didn't find '<style>' tag: '#{multimarkdown.to_html}'"
|
88
|
+
assert multimarkdown.to_html.include?('style="color: blue"'), "Didn't inline 'style': '#{multimarkdown.to_html}'"
|
89
|
+
|
90
|
+
# Disbale styles
|
91
|
+
multimarkdown = MultiMarkdown.new(mmd, :filter_styles)
|
92
|
+
assert !multimarkdown.to_html.include?('<style>p {color: red}</style>'), "Found '<style>' tag: '#{multimarkdown.to_html}'"
|
93
|
+
# Doesn't work: assert !multimarkdown.to_html.include?('style="color: blue"'), "Found inline 'style': '#{multimarkdown.to_html}'"
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_filter_html
|
97
|
+
mmd = '<span>Hello from HTML</span>Pure Markdown'
|
98
|
+
|
99
|
+
# Don't change anything (default)
|
100
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
101
|
+
assert multimarkdown.to_html.include?('<span>Hello from HTML</span>'), "Didn't find '<span>' tag: '#{multimarkdown.to_html}'"
|
102
|
+
assert multimarkdown.to_html.include?('Pure Markdown<'), "Didn't find Markdown: '#{multimarkdown.to_html}'"
|
103
|
+
|
104
|
+
# Disbale html
|
105
|
+
multimarkdown = MultiMarkdown.new(mmd, :filter_html)
|
106
|
+
assert_equal "<p>Hello from HTMLPure Markdown</p>", multimarkdown.to_html.strip
|
107
|
+
end
|
108
|
+
|
109
|
+
# TODO
|
110
|
+
# See https://github.com/fletcher/MultiMarkdown-4/issues/97
|
111
|
+
def disabled_test_markdown_in_html
|
112
|
+
mmd = 'Hello <span>[World](http://world.de)</span>!'
|
113
|
+
|
114
|
+
# No Markdown in html supported (default)
|
115
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
116
|
+
assert_equal "<p>Hello <span>_World_</span>!</p>", multimarkdown.to_html.strip
|
117
|
+
|
118
|
+
# now with the extension turned on
|
119
|
+
multimarkdown = MultiMarkdown.new(mmd, :process_html)
|
120
|
+
assert_equal "<p>Hello <span><em>World</em></span>!</p>", multimarkdown.to_html.strip
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
def test_no_metadata
|
125
|
+
mmd = "A: B\n\nBlabla"
|
126
|
+
|
127
|
+
# Don't do anything (default)
|
128
|
+
multimarkdown = MultiMarkdown.new(mmd, :no_metadata)
|
129
|
+
assert multimarkdown.to_html.include?('A: B'), "Didn't find metadata style text: '#{multimarkdown.to_html}'"
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_obfuscation
|
133
|
+
mmd = '[Contact me](mailto:mail@example.com)'
|
134
|
+
|
135
|
+
# Don't do anything (default)
|
136
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
137
|
+
assert multimarkdown.to_html.include?('mail@example.com'), "Didn't find email address: '#{multimarkdown.to_html}'"
|
138
|
+
|
139
|
+
# Obfuscate
|
140
|
+
multimarkdown = MultiMarkdown.new(mmd, :obfuscate_email_addresses)
|
141
|
+
assert !multimarkdown.to_html.include?('mail@example.com'), "Found email address: '#{multimarkdown.to_html}'"
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_critic_markup
|
145
|
+
mmd = 'This is a {++green ++} test.'
|
146
|
+
|
147
|
+
# Don't do anything (default)
|
148
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
149
|
+
assert_equal "<p>This is a {++green ++} test.</p>", multimarkdown.to_html.strip
|
150
|
+
|
151
|
+
# Include changes
|
152
|
+
multimarkdown = MultiMarkdown.new(mmd, :critic_markup_accept_all)
|
153
|
+
assert_equal "<p>This is a green test.</p>", multimarkdown.to_html.strip
|
154
|
+
|
155
|
+
# Ignore changes
|
156
|
+
multimarkdown = MultiMarkdown.new(mmd, :critic_markup_reject_all)
|
157
|
+
assert_equal "<p>This is a test.</p>", multimarkdown.to_html.strip
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_escaped_line_breaks
|
161
|
+
mmd = <<eof
|
162
|
+
This is a cool MultiMarkdown\\
|
163
|
+
Feature
|
164
|
+
eof
|
165
|
+
|
166
|
+
# Don't do anything (default)
|
167
|
+
multimarkdown = MultiMarkdown.new(mmd)
|
168
|
+
assert !multimarkdown.to_html.include?('<br/>'), "Found '<br/>' tag: '#{multimarkdown.to_html}'"
|
169
|
+
|
170
|
+
multimarkdown = MultiMarkdown.new(mmd, :escaped_line_breaks)
|
171
|
+
assert multimarkdown.to_html.include?('<br/>'), "Didn't find '<br/>' tag: '#{multimarkdown.to_html}'"
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rmultimarkdown
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.6.0.
|
4
|
+
version: 4.6.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Till Schulte-Coerne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- lib/multi_markdown.bundle
|
45
45
|
- lib/multi_markdown.rb
|
46
46
|
- lib/rmultimarkdown.rb
|
47
|
+
- test/extensions_test.rb.rb
|
47
48
|
- test/multi_markdown_test.rb
|
48
49
|
- ext/multi_markdown.c
|
49
50
|
- ext/extconf.h
|
@@ -109,4 +110,5 @@ signing_key:
|
|
109
110
|
specification_version: 4
|
110
111
|
summary: A MultiMarkdown 4 binding for Ruby
|
111
112
|
test_files:
|
113
|
+
- test/extensions_test.rb.rb
|
112
114
|
- test/multi_markdown_test.rb
|