rmultimarkdown 4.6.0.1 → 4.6.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|