moredown 1.0.0

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.
@@ -0,0 +1,172 @@
1
+ rootdir = File.dirname(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift "#{rootdir}/lib"
3
+
4
+ require 'test/unit'
5
+ require 'moredown'
6
+
7
+ class MoredownTest < Test::Unit::TestCase
8
+ def test_that_base_markdown_is_working
9
+ text = "Hello. This is **bold**."
10
+ html = "<p>Hello. This is <strong>bold</strong>.</p>\n"
11
+ assert_equal html, Moredown.text_to_html(text)
12
+ end
13
+
14
+ def test_moredown
15
+ text = "Hello. This is **bold**."
16
+ html = "<p>Hello. This is <strong>bold</strong>.</p>\n"
17
+ assert_equal html, Moredown.new(text).to_html
18
+ end
19
+
20
+
21
+ def test_youtube_videos
22
+ text = "![Video](youtube:12345678)"
23
+ html = "<p><object id=\"swf-1\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"425\" height=\"350\"><param name=\"movie\" value=\"http://www.youtube.com/v/12345678\" /><!--[if !IE]>--><object type=\"application/x-shockwave-flash\" data=\"http://www.youtube.com/v/12345678\" width=\"425\" height=\"350\"><!--<![endif]--><a href=\"http://www.youtube.com/v/12345678\"><img src=\"http://img.youtube.com/vi/12345678/default.jpg\" alt=\"\" /></a><!--[if !IE]>--></object><!--<![endif]--></object></p>\n"
24
+ assert_equal html, Moredown.text_to_html(text)
25
+
26
+ text = "![Video](youtube:12345678 \"200 100\")"
27
+ html = 'width="200" height="100"'
28
+ assert Moredown.text_to_html(text).include?(html), "Width should be 200 and height should be 100"
29
+
30
+ text = <<TEXT
31
+ Here is a video:
32
+
33
+ ![Video](youtube:12345678)
34
+
35
+ That was _awesome_.
36
+ TEXT
37
+ html = "<p>Here is a video:</p>\n\n<p><object id=\"swf-1\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"425\" height=\"350\"><param name=\"movie\" value=\"http://www.youtube.com/v/12345678\" /><!--[if !IE]>--><object type=\"application/x-shockwave-flash\" data=\"http://www.youtube.com/v/12345678\" width=\"425\" height=\"350\"><!--<![endif]--><a href=\"http://www.youtube.com/v/12345678\"><img src=\"http://img.youtube.com/vi/12345678/default.jpg\" alt=\"\" /></a><!--[if !IE]>--></object><!--<![endif]--></object></p>\n\n<p>That was <em>awesome</em>.</p>\n"
38
+ assert_equal html, Moredown.text_to_html(text)
39
+ end
40
+
41
+ def test_image_alignments
42
+ text = "![Image](/image.jpg):left"
43
+ html = "<p><img style=\"float: left; margin: 0 10px 10px 0;\" src=\"/image.jpg\" alt=\"Image\" /></p>\n"
44
+ assert_equal html, Moredown.text_to_html(text)
45
+
46
+ text = "![Image](/image.jpg):left"
47
+ html = "<p><img class=\"left\" src=\"/image.jpg\" alt=\"Image\" /></p>\n"
48
+ assert_equal html, Moredown.text_to_html(text, :has_stylesheet => true)
49
+
50
+ text = "![Image](/image.jpg):right"
51
+ html = "<p><img style=\"float: right; margin: 0 0 10px 10px;\" src=\"/image.jpg\" alt=\"Image\" /></p>\n"
52
+ assert_equal html, Moredown.text_to_html(text)
53
+
54
+ text = "![Image](/image.jpg):right"
55
+ html = "<p><img class=\"right\" src=\"/image.jpg\" alt=\"Image\" /></p>\n"
56
+ assert_equal html, Moredown.text_to_html(text, :has_stylesheet => true)
57
+
58
+ text = "![Image](/image.jpg):center"
59
+ html = "<p><img style=\"display: block; margin: auto;\" src=\"/image.jpg\" alt=\"Image\" /></p>\n"
60
+ assert_equal html, Moredown.text_to_html(text)
61
+
62
+ text = "![Image](/image.jpg):center"
63
+ html = "<p><img class=\"center\" src=\"/image.jpg\" alt=\"Image\" /></p>\n"
64
+ assert_equal html, Moredown.text_to_html(text, :has_stylesheet => true)
65
+ end
66
+
67
+ def test_code
68
+ text = <<TEXT
69
+ Here is some code:
70
+
71
+ def test_code
72
+ puts 'test'
73
+ end
74
+
75
+ That is all.
76
+ TEXT
77
+ html = "<p>Here is some code:</p>\n\n<pre class=\"prettyprint\"><code>def test_code\n puts 'test'\nend\n</code></pre>\n\n<p>That is all.</p>\n"
78
+ assert_equal html, Moredown.text_to_html(text)
79
+ end
80
+
81
+ def test_emotes
82
+ assert_equal "<p>:-)</p>\n", Moredown.text_to_html(':-)'), "Emotes are ignored when the switch is off"
83
+
84
+ text = ':-)'
85
+ html = "<p><img src=\"/images/emote-smile.png\" alt=\":-)\" width=\"16\" height=\"16\" /></p>\n"
86
+ assert_equal html, Moredown.text_to_html(text, :emotes => true)
87
+
88
+ text = ':-P'
89
+ html = "<p><img src=\"/images/emote-tongue.png\" alt=\":-P\" width=\"16\" height=\"16\" /></p>\n"
90
+ assert_equal html, Moredown.text_to_html(text, :emotes => true)
91
+
92
+ text = ':-D'
93
+ html = "<p><img src=\"/images/emote-grin.png\" alt=\":-D\" width=\"16\" height=\"16\" /></p>\n"
94
+ assert_equal html, Moredown.text_to_html(text, :emotes => true)
95
+
96
+ text = ':-('
97
+ html = "<p><img src=\"/images/emote-sad.png\" alt=\":-(\" width=\"16\" height=\"16\" /></p>\n"
98
+ assert_equal html, Moredown.text_to_html(text, :emotes => true)
99
+
100
+ text = ':-@'
101
+ html = "<p><img src=\"/images/emote-angry.png\" alt=\":-@\" width=\"16\" height=\"16\" /></p>\n"
102
+ assert_equal html, Moredown.text_to_html(text, :emotes => true)
103
+
104
+ text = ';-)'
105
+ html = "<p><img src=\"/images/emote-wink.png\" alt=\";-)\" width=\"16\" height=\"16\" /></p>\n"
106
+ assert_equal html, Moredown.text_to_html(text, :emotes => true)
107
+ end
108
+
109
+ def test_base_url
110
+ text = "![Image](/images/test.jpg)"
111
+ html = "<p><img src=\"http://www.example.com/images/test.jpg\" alt=\"Image\" /></p>\n"
112
+ assert_equal html, Moredown.text_to_html(text, :base_url => 'http://www.example.com')
113
+ end
114
+
115
+ def test_remap_headings
116
+ text = "<h1>Heading</h1>\n<h2>Sub-heading</h2>"
117
+ html = "<h1>Heading</h1>\n\n\n<h2>Sub-heading</h2>\n\n"
118
+ assert_equal html, Moredown.text_to_html(text, :map_headings => 0)
119
+
120
+ text = "<h1>Heading</h1>\n<h2>Sub-heading</h2>"
121
+ html = "<h2>Heading</h2>\n\n\n<h3>Sub-heading</h3>\n\n"
122
+ assert_equal html, Moredown.text_to_html(text, :map_headings => 1)
123
+
124
+ text = "<h1>Heading</h1>\n<h2>Sub-heading</h2>"
125
+ html = "<h3>Heading</h3>\n\n\n<h4>Sub-heading</h4>\n\n"
126
+ assert_equal html, Moredown.text_to_html(text, :map_headings => 2)
127
+
128
+ text = <<TEXT
129
+ Heading
130
+ =======
131
+
132
+ Sub-heading
133
+ -----------
134
+ TEXT
135
+ html = "<h3>Heading</h3>\n\n<h4>Sub-heading</h4>\n"
136
+ assert_equal html, Moredown.text_to_html(text, :map_headings => 2)
137
+ end
138
+
139
+ def test_flash_movies
140
+ text = '![Flash](flash:movieclip.swf)'
141
+ html = "<p><object id=\"swf-1\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"400\" height=\"300\"><param name=\"movie\" value=\"movieclip.swf\" /><!--[if !IE]>--><object type=\"application/x-shockwave-flash\" data=\"movieclip.swf\" width=\"400\" height=\"300\"><!--<![endif]-->Flash is not available.<!--[if !IE]>--></object><!--<![endif]--></object></p>\n"
142
+ assert_equal html, Moredown.text_to_html(text)
143
+
144
+ text = '![Flash](flash:movieclip.swf "800 600")'
145
+ html = 'width="800" height="600"'
146
+ assert Moredown.text_to_html(text).include?(html), "Width should be 800 and height should be 600"
147
+ end
148
+
149
+ def test_swfobject
150
+ text = "Here is some flash:
151
+
152
+ ![Flash](flash:movieclip.swf)
153
+
154
+ ![Flash](flash:movieclip.swf)
155
+
156
+ And that's all."
157
+ html = "<script type=\"text/javascript\" src=\"./swfobject.js\"></script><script type=\"text/javascript\">
158
+ /*<![CDATA[*/
159
+ swfobject.registerObject(\"swf-1\", \"10\");
160
+ swfobject.registerObject(\"swf-2\", \"10\");
161
+ /*]]>*/
162
+ </script>
163
+ <p>Here is some flash:</p>
164
+
165
+ <p><object id=\"swf-1\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"400\" height=\"300\"><param name=\"movie\" value=\"movieclip.swf\" /><!--[if !IE]>--><object type=\"application/x-shockwave-flash\" data=\"movieclip.swf\" width=\"400\" height=\"300\"><!--<![endif]-->No Flash<!--[if !IE]>--></object><!--<![endif]--></object></p>
166
+
167
+ <p><object id=\"swf-2\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"400\" height=\"300\"><param name=\"movie\" value=\"movieclip.swf\" /><!--[if !IE]>--><object type=\"application/x-shockwave-flash\" data=\"movieclip.swf\" width=\"400\" height=\"300\"><!--<![endif]-->No Flash<!--[if !IE]>--></object><!--<![endif]--></object></p>
168
+
169
+ <p>And that's all.</p>\n"
170
+ assert_equal html, Moredown.text_to_html(text, :swfobject => { :src => './swfobject.js', :version => '10', :fallback => 'No Flash' })
171
+ end
172
+ end
@@ -0,0 +1,43 @@
1
+ rootdir = File.dirname(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift "#{rootdir}/lib"
3
+
4
+ require 'test/unit'
5
+ require 'rdiscount'
6
+
7
+ class RDiscountTest < Test::Unit::TestCase
8
+ def test_that_discount_does_not_blow_up_with_weird_formatting_case
9
+ text = (<<-TEXT).gsub(/^ {4}/, '').rstrip
10
+ 1. some text
11
+
12
+ 1.
13
+ TEXT
14
+ RDiscount.new(text).to_html
15
+ end
16
+
17
+ def test_that_smart_converts_double_quotes_to_curly_quotes
18
+ rd = RDiscount.new(%("Quoted text"), :smart)
19
+ assert_equal %(<p>&ldquo;Quoted text&rdquo;</p>\n), rd.to_html
20
+ end
21
+
22
+ def test_that_smart_converts_double_quotes_to_curly_quotes_before_a_heading
23
+ rd = RDiscount.new(%("Quoted text"\n\n# Heading), :smart)
24
+ assert_equal %(<p>&ldquo;Quoted text&rdquo;</p>\n\n<h1>Heading</h1>\n), rd.to_html
25
+ end
26
+
27
+ def test_that_smart_converts_double_quotes_to_curly_quotes_after_a_heading
28
+ rd = RDiscount.new(%(# Heading\n\n"Quoted text"), :smart)
29
+ assert_equal %(<h1>Heading</h1>\n\n<p>&ldquo;Quoted text&rdquo;</p>\n), rd.to_html
30
+ end
31
+
32
+ def test_that_generate_toc_sets_toc_ids
33
+ rd = RDiscount.new("# Level 1\n\n## Level 2", :generate_toc)
34
+ assert rd.generate_toc
35
+ assert_equal %(<h1 id="Level+1\">Level 1</h1>\n\n<h2 id="Level+2\">Level 2</h2>\n), rd.to_html
36
+ end
37
+
38
+ def test_should_get_the_generated_toc
39
+ rd = RDiscount.new("# Level 1\n\n## Level 2", :generate_toc)
40
+ exp = %(<ul>\n <li><a href="#Level+1">Level 1</a>\n <ul>\n <li><a href="#Level+2">Level 2</a> </li>\n </ul>\n </li>\n </ul>)
41
+ assert_equal exp, rd.toc_content.strip
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: moredown
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Nathan Hoad
8
+ - Ryan Tomayko
9
+ - David Loren Parsons
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2009-10-23 00:00:00 +10:00
15
+ default_executable: rdiscount
16
+ dependencies: []
17
+
18
+ description: An extension to the RDiscount Markdown formatter
19
+ email: nathan@nathanhoad.net
20
+ executables:
21
+ - rdiscount
22
+ extensions: []
23
+
24
+ extra_rdoc_files:
25
+ - README.markdown
26
+ files:
27
+ - COPYING
28
+ - README.markdown
29
+ - Rakefile
30
+ - VERSION
31
+ - bin/rdiscount
32
+ - ext/Csio.c
33
+ - ext/amalloc.h
34
+ - ext/config.h
35
+ - ext/cstring.h
36
+ - ext/docheader.c
37
+ - ext/dumptree.c
38
+ - ext/extconf.rb
39
+ - ext/generate.c
40
+ - ext/markdown.c
41
+ - ext/markdown.h
42
+ - ext/mkdio.c
43
+ - ext/mkdio.h
44
+ - ext/rdiscount.c
45
+ - ext/resource.c
46
+ - ext/toc.c
47
+ - lib/markdown.rb
48
+ - lib/moredown.rb
49
+ - lib/rdiscount.rb
50
+ - moredown.gemspec
51
+ - test/benchmark.rb
52
+ - test/benchmark.txt
53
+ - test/markdown_test.rb
54
+ - test/moredown_test.rb
55
+ - test/rdiscount_test.rb
56
+ has_rdoc: true
57
+ homepage: http://nathanhoad.net/projects/moredown
58
+ licenses: []
59
+
60
+ post_install_message:
61
+ rdoc_options:
62
+ - --charset=UTF-8
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: "0"
76
+ version:
77
+ requirements: []
78
+
79
+ rubyforge_project:
80
+ rubygems_version: 1.3.5
81
+ signing_key:
82
+ specification_version: 3
83
+ summary: Markdown plus more!
84
+ test_files:
85
+ - test/benchmark.rb
86
+ - test/markdown_test.rb
87
+ - test/moredown_test.rb
88
+ - test/rdiscount_test.rb