rdiscount 1.2.6.2 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/{README → README.markdown} +19 -15
- data/Rakefile +9 -5
- data/ext/dumptree.c +0 -0
- data/ext/generate.c +17 -1
- data/ext/mkdio.c +2 -2
- data/lib/markdown.rb +1 -0
- data/lib/rdiscount.rb +2 -9
- data/test/benchmark.rb +10 -3
- data/test/{rdiscount_test.rb → markdown_test.rb} +17 -16
- metadata +9 -9
data/{README → README.markdown}
RENAMED
@@ -1,16 +1,20 @@
|
|
1
|
-
|
1
|
+
Discount Markdown Processor for Ruby
|
2
|
+
====================================
|
2
3
|
|
3
|
-
Discount is an implementation of John Gruber's Markdown markup
|
4
|
-
|
5
|
-
|
6
|
-
and passes the Markdown test suite at
|
7
|
-
<http://daringfireball.net/projects/downloads/MarkdownTest_1.0.zip>
|
4
|
+
Discount is an implementation of John Gruber's Markdown markup language in C. It
|
5
|
+
implements all of the language described in [the markdown syntax document][1] and
|
6
|
+
passes the [Markdown 1.0 test suite][2].
|
8
7
|
|
9
|
-
Discount was developed by
|
10
|
-
|
11
|
-
RDiscount extension was developed by {Ryan Tomayko}[http://tomayko.com/].
|
8
|
+
Discount was developed by [David Loren Parsons][3]. The Ruby extension was
|
9
|
+
developed by [Ryan Tomayko][4].
|
12
10
|
|
13
|
-
|
11
|
+
[1]: http://daringfireball.net/projects/markdown/syntax
|
12
|
+
[2]: http://daringfireball.net/projects/downloads/MarkdownTest_1.0.zip
|
13
|
+
[3]: http://www.pell.portland.or.us/~orc
|
14
|
+
[4]: http://tomayko.com/
|
15
|
+
|
16
|
+
Installation, Hacking
|
17
|
+
---------------------
|
14
18
|
|
15
19
|
RDiscount Gem releases are published to RubyForge and can be installed as
|
16
20
|
follows:
|
@@ -23,11 +27,10 @@ The RDiscount sources are available via Git:
|
|
23
27
|
$ cd rdiscount
|
24
28
|
$ rake --tasks
|
25
29
|
|
26
|
-
For more information, see
|
27
|
-
|
28
|
-
http://github.com/rtomayko/rdiscount
|
30
|
+
For more information, see [the project page](http://github.com/rtomayko/rdiscount).
|
29
31
|
|
30
|
-
|
32
|
+
Usage
|
33
|
+
-----
|
31
34
|
|
32
35
|
RDiscount implements the basic protocol popularized by RedCloth and adopted
|
33
36
|
by BlueCloth:
|
@@ -46,7 +49,8 @@ require statements with the following:
|
|
46
49
|
require 'bluecloth'
|
47
50
|
end
|
48
51
|
|
49
|
-
|
52
|
+
COPYING
|
53
|
+
-------
|
50
54
|
|
51
55
|
Discount is free software; it is released under a BSD-style license
|
52
56
|
that allows you to do as you wish with it as long as you don't attempt
|
data/Rakefile
CHANGED
@@ -5,18 +5,18 @@ require 'rake/gempackagetask'
|
|
5
5
|
task :default => 'test:unit'
|
6
6
|
|
7
7
|
DLEXT = Config::CONFIG['DLEXT']
|
8
|
-
VERS = '1.2.
|
8
|
+
VERS = '1.2.7'
|
9
9
|
|
10
10
|
spec =
|
11
11
|
Gem::Specification.new do |s|
|
12
12
|
s.name = "rdiscount"
|
13
13
|
s.version = VERS
|
14
14
|
s.summary = "Fast Implementation of Gruber's Markdown in C"
|
15
|
-
s.files = FileList['README','COPYING','Rakefile','test/**','{lib,ext}/**.rb','ext/*.{c,h}']
|
15
|
+
s.files = FileList['README.markdown','COPYING','Rakefile','test/**','{lib,ext}/**.rb','ext/*.{c,h}']
|
16
16
|
s.bindir = 'bin'
|
17
17
|
s.require_path = 'lib'
|
18
18
|
s.has_rdoc = true
|
19
|
-
s.extra_rdoc_files = ['
|
19
|
+
s.extra_rdoc_files = ['COPYING']
|
20
20
|
s.test_files = FileList['test/*_test.rb']
|
21
21
|
s.extensions = ['ext/extconf.rb']
|
22
22
|
|
@@ -62,7 +62,7 @@ task :build => "lib/rdiscount.#{DLEXT}"
|
|
62
62
|
|
63
63
|
desc 'Run unit tests'
|
64
64
|
task 'test:unit' => [:build] do |t|
|
65
|
-
ruby 'test/
|
65
|
+
ruby 'test/markdown_test.rb'
|
66
66
|
end
|
67
67
|
|
68
68
|
desc 'Run conformance tests (MARKDOWN_TEST_VER=1.0)'
|
@@ -99,7 +99,7 @@ end
|
|
99
99
|
desc 'Generate API documentation'
|
100
100
|
task :doc => 'doc/index.html'
|
101
101
|
|
102
|
-
file 'doc/index.html' => FileList['lib
|
102
|
+
file 'doc/index.html' => FileList['lib/*.rb'] do |f|
|
103
103
|
sh((<<-end).gsub(/\s+/, ' '))
|
104
104
|
hanna --charset utf8 \
|
105
105
|
--fmt html \
|
@@ -129,6 +129,10 @@ task :release => [ "#{PKGNAME}.gem", "#{PKGNAME}.tar.gz" ] do |t|
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
+
desc 'Publish API docs to rubyforge'
|
133
|
+
task :publish => :doc do |t|
|
134
|
+
sh 'scp -rp doc/. rubyforge.org:/var/www/gforge-projects/wink/rdiscount'
|
135
|
+
end
|
132
136
|
|
133
137
|
# ==========================================================
|
134
138
|
# Discount Submodule
|
data/ext/dumptree.c
CHANGED
File without changes
|
data/ext/generate.c
CHANGED
@@ -701,7 +701,7 @@ maybe_tag_or_link(MMIOT *f)
|
|
701
701
|
|
702
702
|
if ( maybetag || (size >= 3 && strncmp(cursor(f), "!--", 3) == 0) ) {
|
703
703
|
Qstring(forbidden_tag(f) ? "<" : "<", f);
|
704
|
-
while ( ((c = peek(f,
|
704
|
+
while ( ((c = peek(f, 1)) != EOF) && (c != '>') )
|
705
705
|
cputc(pull(f), f);
|
706
706
|
return 1;
|
707
707
|
}
|
@@ -925,6 +925,22 @@ text(MMIOT *f)
|
|
925
925
|
case '[': if ( tag_text(f) || !linkylinky(0, f) )
|
926
926
|
Qchar(c, f);
|
927
927
|
break;
|
928
|
+
#if SUPERSCRIPT
|
929
|
+
case '^': if ( isthisspace(f,-1) || isthisspace(f,1) )
|
930
|
+
Qchar(c,f);
|
931
|
+
else {
|
932
|
+
char *sup = cursor(f);
|
933
|
+
int len = 0;
|
934
|
+
Qstring("<sup>",f);
|
935
|
+
while ( !isthisspace(f,1+len) ) {
|
936
|
+
++len;
|
937
|
+
}
|
938
|
+
shift(f,len);
|
939
|
+
reparse(sup, len, 0, f);
|
940
|
+
Qstring("</sup>", f);
|
941
|
+
}
|
942
|
+
break;
|
943
|
+
#endif
|
928
944
|
case '*':
|
929
945
|
case '_': if ( tag_text(f) )
|
930
946
|
Qchar(c, f);
|
data/ext/mkdio.c
CHANGED
@@ -80,7 +80,7 @@ snip(Line *p)
|
|
80
80
|
|
81
81
|
/* build a Document from any old input.
|
82
82
|
*/
|
83
|
-
typedef
|
83
|
+
typedef int (*getc_func)(void*);
|
84
84
|
|
85
85
|
Document *
|
86
86
|
populate(getc_func getc, void* ctx, int flags)
|
@@ -156,7 +156,7 @@ struct string_ctx {
|
|
156
156
|
} ;
|
157
157
|
|
158
158
|
|
159
|
-
static
|
159
|
+
static int
|
160
160
|
strget(struct string_ctx *in)
|
161
161
|
{
|
162
162
|
if ( !in->size ) return EOF;
|
data/lib/markdown.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rdiscount'
|
data/lib/rdiscount.rb
CHANGED
@@ -59,15 +59,8 @@ class RDiscount
|
|
59
59
|
extensions.each { |e| send("#{e}=", true) }
|
60
60
|
end
|
61
61
|
|
62
|
-
# Convert the Markdown #text to HTML.
|
63
|
-
#--
|
64
|
-
# This is method is replaced when the C extension is loaded.
|
65
|
-
def to_html
|
66
|
-
raise NotImplemented
|
67
|
-
end
|
68
|
-
|
69
62
|
end
|
70
63
|
|
71
|
-
|
72
|
-
|
64
|
+
Markdown = RDiscount unless defined? Markdown
|
65
|
+
|
73
66
|
require 'rdiscount.so'
|
data/test/benchmark.rb
CHANGED
@@ -2,16 +2,23 @@ require 'rubygems'
|
|
2
2
|
|
3
3
|
iterations = 100
|
4
4
|
test_file = "#{File.dirname(__FILE__)}/benchmark.txt"
|
5
|
-
implementations = %w[BlueCloth RDiscount Maruku
|
5
|
+
implementations = %w[BlueCloth RDiscount Maruku PEGMarkdown]
|
6
6
|
|
7
7
|
# Attempt to require each implementation and remove any that are not
|
8
8
|
# installed.
|
9
9
|
implementations.reject! do |class_name|
|
10
10
|
begin
|
11
|
-
|
11
|
+
module_path =
|
12
|
+
if class_name == 'PEGMarkdown'
|
13
|
+
'peg_markdown'
|
14
|
+
else
|
15
|
+
class_name.downcase
|
16
|
+
end
|
17
|
+
require module_path
|
12
18
|
false
|
13
19
|
rescue LoadError => boom
|
14
|
-
|
20
|
+
module_path.tr! '_', '-'
|
21
|
+
puts "#{class_name} excluded. Try: gem install #{module_path}"
|
15
22
|
true
|
16
23
|
end
|
17
24
|
end
|
@@ -1,31 +1,31 @@
|
|
1
1
|
$: << File.join(File.dirname(__FILE__), "../lib")
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
|
-
require '
|
4
|
+
require 'markdown'
|
5
5
|
|
6
6
|
MARKDOWN_TEST_DIR = "#{File.dirname(__FILE__)}/MarkdownTest_1.0.3"
|
7
7
|
|
8
|
-
class
|
8
|
+
class MarkdownTest < Test::Unit::TestCase
|
9
9
|
|
10
|
-
def
|
11
|
-
assert
|
12
|
-
"
|
10
|
+
def test_that_extension_methods_are_present_on_markdown_class
|
11
|
+
assert Markdown.instance_methods.include?('to_html'),
|
12
|
+
"Markdown class should respond to #to_html"
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_that_simple_one_liner_goes_to_html
|
16
|
-
markdown =
|
16
|
+
markdown = Markdown.new('Hello World.')
|
17
17
|
assert_respond_to markdown, :to_html
|
18
|
-
assert_equal "<p>Hello World.</p
|
18
|
+
assert_equal "<p>Hello World.</p>", markdown.to_html.strip
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_that_inline_markdown_goes_to_html
|
22
|
-
markdown =
|
22
|
+
markdown = Markdown.new('_Hello World_!')
|
23
23
|
assert_respond_to markdown, :to_html
|
24
|
-
assert_equal "<p><em>Hello World</em>!</p
|
24
|
+
assert_equal "<p><em>Hello World</em>!</p>", markdown.to_html.strip
|
25
25
|
end
|
26
26
|
|
27
27
|
def test_that_bluecloth_restrictions_are_supported
|
28
|
-
markdown =
|
28
|
+
markdown = Markdown.new('Hello World.')
|
29
29
|
[:filter_html, :filter_styles].each do |restriction|
|
30
30
|
assert_respond_to markdown, restriction
|
31
31
|
assert_respond_to markdown, "#{restriction}="
|
@@ -33,26 +33,27 @@ class RDiscountTest < Test::Unit::TestCase
|
|
33
33
|
assert_not_equal true, markdown.filter_html
|
34
34
|
assert_not_equal true, markdown.filter_styles
|
35
35
|
|
36
|
-
markdown =
|
36
|
+
markdown = Markdown.new('Hello World.', :filter_html, :filter_styles)
|
37
37
|
assert_equal true, markdown.filter_html
|
38
38
|
assert_equal true, markdown.filter_styles
|
39
39
|
end
|
40
40
|
|
41
41
|
def test_that_redcloth_attributes_are_supported
|
42
|
-
markdown =
|
42
|
+
markdown = Markdown.new('Hello World.')
|
43
43
|
assert_respond_to markdown, :fold_lines
|
44
44
|
assert_respond_to markdown, :fold_lines=
|
45
45
|
assert_not_equal true, markdown.fold_lines
|
46
46
|
|
47
|
-
markdown =
|
47
|
+
markdown = Markdown.new('Hello World.', :fold_lines)
|
48
48
|
assert_equal true, markdown.fold_lines
|
49
49
|
end
|
50
50
|
|
51
51
|
def test_that_redcloth_to_html_with_single_arg_is_supported
|
52
|
-
markdown =
|
52
|
+
markdown = Markdown.new('Hello World.')
|
53
53
|
assert_nothing_raised(ArgumentError) { markdown.to_html(true) }
|
54
54
|
end
|
55
55
|
|
56
|
+
|
56
57
|
# Build tests for each file in the MarkdownTest test suite
|
57
58
|
|
58
59
|
Dir["#{MARKDOWN_TEST_DIR}/Tests/*.text"].each do |text_file|
|
@@ -62,13 +63,13 @@ class RDiscountTest < Test::Unit::TestCase
|
|
62
63
|
method_name = basename.gsub(/[-,]/, '').gsub(/\s+/, '_').downcase
|
63
64
|
|
64
65
|
define_method "test_#{method_name}" do
|
65
|
-
markdown =
|
66
|
+
markdown = Markdown.new(File.read(text_file))
|
66
67
|
actual_html = markdown.to_html
|
67
68
|
assert_not_nil actual_html
|
68
69
|
end
|
69
70
|
|
70
71
|
define_method "test_#{method_name}_with_smarty_enabled" do
|
71
|
-
markdown =
|
72
|
+
markdown = Markdown.new(File.read(text_file), :smart)
|
72
73
|
actual_html = markdown.to_html
|
73
74
|
assert_not_nil actual_html
|
74
75
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdiscount
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Tomayko
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-08-02 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -20,17 +20,17 @@ executables: []
|
|
20
20
|
extensions:
|
21
21
|
- ext/extconf.rb
|
22
22
|
extra_rdoc_files:
|
23
|
-
- README
|
24
23
|
- COPYING
|
25
24
|
files:
|
26
|
-
- README
|
25
|
+
- README.markdown
|
27
26
|
- COPYING
|
28
27
|
- Rakefile
|
29
|
-
- test/benchmark.rb
|
30
|
-
- test/benchmark.txt
|
31
28
|
- test/MarkdownTest_1.0
|
32
29
|
- test/MarkdownTest_1.0.3
|
33
|
-
- test/
|
30
|
+
- test/benchmark.rb
|
31
|
+
- test/benchmark.txt
|
32
|
+
- test/markdown_test.rb
|
33
|
+
- lib/markdown.rb
|
34
34
|
- lib/rdiscount.rb
|
35
35
|
- ext/extconf.rb
|
36
36
|
- ext/docheader.c
|
@@ -69,9 +69,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
69
|
requirements: []
|
70
70
|
|
71
71
|
rubyforge_project: wink
|
72
|
-
rubygems_version: 1.
|
72
|
+
rubygems_version: 1.2.0
|
73
73
|
signing_key:
|
74
74
|
specification_version: 2
|
75
75
|
summary: Fast Implementation of Gruber's Markdown in C
|
76
76
|
test_files:
|
77
|
-
- test/
|
77
|
+
- test/markdown_test.rb
|