rdiscount 1.6.3 → 1.6.3.1
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.
- data/Rakefile +25 -24
- data/ext/rdiscount.c +29 -0
- data/lib/rdiscount.rb +31 -7
- data/rdiscount.gemspec +2 -2
- data/test/rdiscount_test.rb +39 -0
- metadata +3 -2
data/Rakefile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'date'
|
1
2
|
require 'rake/clean'
|
2
3
|
require 'digest/md5'
|
3
4
|
|
@@ -152,31 +153,31 @@ if defined?(Gem)
|
|
152
153
|
file package('.tar.gz') => %w[pkg/] + $spec.files do |f|
|
153
154
|
sh "git archive --format=tar HEAD | gzip > #{f.name}"
|
154
155
|
end
|
156
|
+
end
|
155
157
|
|
156
|
-
|
158
|
+
# GEMSPEC HELPERS ==========================================================
|
157
159
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
160
|
+
def source_version
|
161
|
+
line = File.read('lib/rdiscount.rb')[/^\s*VERSION = .*/]
|
162
|
+
line.match(/.*VERSION = '(.*)'/)[1]
|
163
|
+
end
|
162
164
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
end
|
165
|
+
file 'rdiscount.gemspec' => FileList['Rakefile','lib/rdiscount.rb'] do |f|
|
166
|
+
# read spec file and split out manifest section
|
167
|
+
spec = File.read(f.name)
|
168
|
+
head, manifest, tail = spec.split(" # = MANIFEST =\n")
|
169
|
+
head.sub!(/\.version = '.*'/, ".version = '#{source_version}'")
|
170
|
+
head.sub!(/\.date = '.*'/, ".date = '#{Date.today.to_s}'")
|
171
|
+
# determine file list from git ls-files
|
172
|
+
files = `git ls-files`.
|
173
|
+
split("\n").
|
174
|
+
sort.
|
175
|
+
reject{ |file| file =~ /^\./ || file =~ /^test\/MarkdownTest/ }.
|
176
|
+
map{ |file| " #{file}" }.
|
177
|
+
join("\n")
|
178
|
+
# piece file back together and write...
|
179
|
+
manifest = " s.files = %w[\n#{files}\n ]\n"
|
180
|
+
spec = [head,manifest,tail].join(" # = MANIFEST =\n")
|
181
|
+
File.open(f.name, 'w') { |io| io.write(spec) }
|
182
|
+
puts "updated #{f.name}"
|
182
183
|
end
|
data/ext/rdiscount.c
CHANGED
@@ -86,6 +86,35 @@ int rb_rdiscount__get_flags(VALUE ruby_obj)
|
|
86
86
|
if ( rb_funcall(ruby_obj, rb_intern("generate_toc"), 0) == Qtrue)
|
87
87
|
flags = flags | MKD_TOC;
|
88
88
|
|
89
|
+
/* no_image */
|
90
|
+
if ( rb_funcall(ruby_obj, rb_intern("no_image"), 0) == Qtrue)
|
91
|
+
flags = flags | MKD_NOIMAGE;
|
92
|
+
|
93
|
+
/* no_links */
|
94
|
+
if ( rb_funcall(ruby_obj, rb_intern("no_links"), 0) == Qtrue)
|
95
|
+
flags = flags | MKD_NOLINKS;
|
96
|
+
|
97
|
+
/* no_tables */
|
98
|
+
if ( rb_funcall(ruby_obj, rb_intern("no_tables"), 0) == Qtrue)
|
99
|
+
flags = flags | MKD_NOTABLES;
|
100
|
+
|
101
|
+
/* strict */
|
102
|
+
if ( rb_funcall(ruby_obj, rb_intern("strict"), 0) == Qtrue)
|
103
|
+
flags = flags | MKD_STRICT;
|
104
|
+
|
105
|
+
/* autolink */
|
106
|
+
if ( rb_funcall(ruby_obj, rb_intern("autolink"), 0) == Qtrue)
|
107
|
+
flags = flags | MKD_AUTOLINK;
|
108
|
+
|
109
|
+
/* safelink */
|
110
|
+
if ( rb_funcall(ruby_obj, rb_intern("safelink"), 0) == Qtrue)
|
111
|
+
flags = flags | MKD_SAFELINK;
|
112
|
+
|
113
|
+
/* no_pseudo_protocols */
|
114
|
+
if ( rb_funcall(ruby_obj, rb_intern("no_pseudo_protocols"), 0) == Qtrue)
|
115
|
+
flags = flags | MKD_NO_EXT;
|
116
|
+
|
117
|
+
|
89
118
|
return flags;
|
90
119
|
}
|
91
120
|
|
data/lib/rdiscount.rb
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
# end
|
25
25
|
#
|
26
26
|
class RDiscount
|
27
|
-
VERSION = '1.6.3'
|
27
|
+
VERSION = '1.6.3.1'
|
28
28
|
|
29
29
|
# Original Markdown formatted text.
|
30
30
|
attr_reader :text
|
@@ -32,7 +32,7 @@ class RDiscount
|
|
32
32
|
# Set true to have smarty-like quote translation performed.
|
33
33
|
attr_accessor :smart
|
34
34
|
|
35
|
-
# Do not output <style> tags included in the source text.
|
35
|
+
# Do not output <tt><style></tt> tags included in the source text.
|
36
36
|
attr_accessor :filter_styles
|
37
37
|
|
38
38
|
# Do not output any raw HTML included in the source text.
|
@@ -45,6 +45,27 @@ class RDiscount
|
|
45
45
|
# Enable Table Of Contents generation
|
46
46
|
attr_accessor :generate_toc
|
47
47
|
|
48
|
+
# Do not process <tt>![]</tt> and remove <tt><img></tt> tags from the output.
|
49
|
+
attr_accessor :no_image
|
50
|
+
|
51
|
+
# Do not process <tt>[]</tt> and remove <tt><a></tt> tags from the output.
|
52
|
+
attr_accessor :no_links
|
53
|
+
|
54
|
+
# Do not process tables
|
55
|
+
attr_accessor :no_tables
|
56
|
+
|
57
|
+
# Disable superscript and relaxed emphasis processing.
|
58
|
+
attr_accessor :strict
|
59
|
+
|
60
|
+
# Convert URL in links, even if they aren't encased in <tt><></tt>
|
61
|
+
attr_accessor :autolink
|
62
|
+
|
63
|
+
# Don't make hyperlinks from <tt>[][]</tt> links that have unknown URL types.
|
64
|
+
attr_accessor :safelink
|
65
|
+
|
66
|
+
# Do not process pseudo-protocols like <tt>[](id:name)</tt>
|
67
|
+
attr_accessor :no_pseudo_protocols
|
68
|
+
|
48
69
|
# Create a RDiscount Markdown processor. The +text+ argument
|
49
70
|
# should be a string containing Markdown text. Additional arguments may be
|
50
71
|
# supplied to set various processing options:
|
@@ -54,14 +75,17 @@ class RDiscount
|
|
54
75
|
# * <tt>:filter_html</tt> - Do not output any raw HTML tags included in
|
55
76
|
# the source text.
|
56
77
|
# * <tt>:fold_lines</tt> - RedCloth compatible line folding (not used).
|
78
|
+
# * <tt>:generate_toc</tt> - Enable Table Of Contents generation
|
79
|
+
# * <tt>:no_image</tt> - Do not output any <tt><img></tt> tags.
|
80
|
+
# * <tt>:no_links</tt> - Do not output any <tt><a></tt> tags.
|
81
|
+
# * <tt>:no_tables</tt> - Do not output any tables.
|
82
|
+
# * <tt>:strict</tt> - Disable superscript and relaxed emphasis processing.
|
83
|
+
# * <tt>:autolink</tt> - Greedily urlify links.
|
84
|
+
# * <tt>:safelink</tt> - Do not make links for unknown URL types.
|
85
|
+
# * <tt>:no_pseudo_protocols</tt> - Do not process pseudo-protocols.
|
57
86
|
#
|
58
|
-
# NOTE: The <tt>:filter_styles</tt> extension is not yet implemented.
|
59
87
|
def initialize(text, *extensions)
|
60
88
|
@text = text
|
61
|
-
@smart = nil
|
62
|
-
@filter_styles = nil
|
63
|
-
@filter_html = nil
|
64
|
-
@fold_lines = nil
|
65
89
|
extensions.each { |e| send("#{e}=", true) }
|
66
90
|
end
|
67
91
|
|
data/rdiscount.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'rdiscount'
|
3
|
-
s.version = '1.6.3'
|
3
|
+
s.version = '1.6.3.1'
|
4
4
|
s.summary = "Fast Implementation of Gruber's Markdown in C"
|
5
|
-
s.date = '2010-
|
5
|
+
s.date = '2010-04-20'
|
6
6
|
s.email = 'r@tomayko.com'
|
7
7
|
s.homepage = 'http://github.com/rtomayko/rdiscount'
|
8
8
|
s.has_rdoc = true
|
data/test/rdiscount_test.rb
CHANGED
@@ -64,4 +64,43 @@ class RDiscountTest < Test::Unit::TestCase
|
|
64
64
|
assert_equal input.encoding.name, output.encoding.name
|
65
65
|
end
|
66
66
|
end
|
67
|
+
|
68
|
+
def test_that_no_image_flag_works
|
69
|
+
rd = RDiscount.new(%( <img src="image.png" />), :no_image)
|
70
|
+
assert rd.to_html !~ /<img/
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_that_no_links_flag_works
|
74
|
+
rd = RDiscount.new(%([This link](http://example.net/) <a href="links.html">links</a>), :no_links)
|
75
|
+
assert rd.to_html !~ /<a /
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_that_no_tables_flag_works
|
79
|
+
rd = RDiscount.new(<<EOS, :no_tables)
|
80
|
+
aaa | bbbb
|
81
|
+
-----|------
|
82
|
+
hello|sailor
|
83
|
+
EOS
|
84
|
+
assert rd.to_html !~ /<table/
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_that_strict_flag_works
|
88
|
+
rd = RDiscount.new("foo_bar_baz", :strict)
|
89
|
+
assert_equal "<p>foo<em>bar</em>baz</p>\n", rd.to_html
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_that_autolink_flag_works
|
93
|
+
rd = RDiscount.new("http://github.com/rtomayko/rdiscount", :autolink)
|
94
|
+
assert_equal "<p><a href=\"http://github.com/rtomayko/rdiscount\">http://github.com/rtomayko/rdiscount</a></p>\n", rd.to_html
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_that_safelink_flag_works
|
98
|
+
rd = RDiscount.new("[IRC](irc://chat.freenode.org/#freenode)", :safelink)
|
99
|
+
assert_equal "<p>[IRC](irc://chat.freenode.org/#freenode)</p>\n", rd.to_html
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_that_no_pseudo_protocols_flag_works
|
103
|
+
rd = RDiscount.new("[foo](id:bar)", :no_pseudo_protocols)
|
104
|
+
assert_equal "<p>[foo](id:bar)</p>\n", rd.to_html
|
105
|
+
end
|
67
106
|
end
|
metadata
CHANGED
@@ -6,7 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 1
|
7
7
|
- 6
|
8
8
|
- 3
|
9
|
-
|
9
|
+
- 1
|
10
|
+
version: 1.6.3.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Ryan Tomayko
|
@@ -16,7 +17,7 @@ autorequire:
|
|
16
17
|
bindir: bin
|
17
18
|
cert_chain: []
|
18
19
|
|
19
|
-
date: 2010-
|
20
|
+
date: 2010-04-20 00:00:00 -07:00
|
20
21
|
default_executable:
|
21
22
|
dependencies: []
|
22
23
|
|