pandoc-ruby 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,7 +50,7 @@ This gem was inspired by [Albino](http://github.com/github/albino).
50
50
 
51
51
  ## Caveats
52
52
 
53
- * This has only been tested on *nix systems.
53
+ * This has only been tested on \*nix systems.
54
54
  * ODT is not currently supported because it is a binary format.
55
55
  * PDF conversion may require additional dependencies and has not been tested.
56
56
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
@@ -20,11 +20,7 @@ class PandocRuby
20
20
  def initialize(*args)
21
21
  target = args.shift
22
22
  @target = File.exists?(target) ? File.read(target) : target rescue target
23
- if args[0] && !args[0].respond_to?(:each_pair) && EXECUTABLES.include?(args[0])
24
- @executable = args.shift
25
- else
26
- @executable = 'pandoc'
27
- end
23
+ @executable = EXECUTABLES.include?(args[0]) ? args.shift : 'pandoc'
28
24
  @options = args
29
25
  end
30
26
 
@@ -33,7 +29,12 @@ class PandocRuby
33
29
  execute executable + convert_options
34
30
  end
35
31
  alias_method :to_s, :convert
36
-
32
+
33
+ def to_html
34
+ @options << {:to => :html}
35
+ convert
36
+ end
37
+
37
38
  private
38
39
 
39
40
  def execute(command)
@@ -46,7 +47,6 @@ private
46
47
  output
47
48
  end
48
49
 
49
-
50
50
  def convert_options
51
51
  @options.inject('') do |string, opt|
52
52
  string + if opt.respond_to?(:each_pair)
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{pandoc-ruby}
8
- s.version = "0.0.7"
8
+ s.version = "0.0.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["William Melody"]
@@ -25,6 +25,8 @@ Gem::Specification.new do |s|
25
25
  "VERSION",
26
26
  "lib/pandoc-ruby.rb",
27
27
  "pandoc-ruby.gemspec",
28
+ "test/benchmark.rb",
29
+ "test/benchmark.txt",
28
30
  "test/test.md",
29
31
  "test/test_conversions.rb",
30
32
  "test/test_helper.rb",
@@ -36,7 +38,8 @@ Gem::Specification.new do |s|
36
38
  s.rubygems_version = %q{1.3.5}
37
39
  s.summary = %q{PandocRuby}
38
40
  s.test_files = [
39
- "test/test_conversions.rb",
41
+ "test/benchmark.rb",
42
+ "test/test_conversions.rb",
40
43
  "test/test_helper.rb",
41
44
  "test/test_pandoc-ruby.rb"
42
45
  ]
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # From on Ryan Tomayako's benchmark script from:
4
+ # http://tomayko.com/writings/ruby-markdown-libraries-real-cheap-for-you-two-for-price-of-one
5
+
6
+ iterations = 100
7
+ test_file = "#{File.dirname(__FILE__)}/benchmark.txt"
8
+ impl_gems = {
9
+ 'BlueCloth' => 'bluecloth',
10
+ 'RDiscount' => 'rdiscount',
11
+ 'Maruku' => 'maruku',
12
+ 'PandocRuby' => 'pandoc-ruby'
13
+ }
14
+
15
+ implementations = impl_gems.keys
16
+
17
+ # Attempt to require each implementation and remove any that are not
18
+ # installed.
19
+ implementations.reject! do |class_name|
20
+ begin
21
+ require impl_gems[class_name]
22
+ false
23
+ rescue LoadError => boom
24
+ puts "#{class_name} excluded. Try: gem install #{impl_gems[class_name]}"
25
+ true
26
+ end
27
+ end
28
+
29
+ # Grab actual class objects.
30
+ implementations.map! { |class_name| Object.const_get(class_name) }
31
+
32
+ def benchmark(implementation, text, iterations)
33
+ start = Time.now
34
+ iterations.times do |i|
35
+ implementation.new(text).to_html
36
+ end
37
+ Time.now - start
38
+ end
39
+
40
+ test_data = File.read(test_file)
41
+
42
+ puts "Spinning up ..."
43
+ implementations.each { |impl| benchmark(impl, test_data, 1) }
44
+
45
+ puts "Running benchmarks ..."
46
+ results =
47
+ implementations.inject([]) do |r,impl|
48
+ GC.start
49
+ r << [ impl, benchmark(impl, test_data, iterations) ]
50
+ end
51
+
52
+ puts "Results for #{iterations} iterations:"
53
+ results.each do |impl,time|
54
+ printf " %10s %09.06fs total time, %09.06fs average\n",
55
+ "#{impl}:", time, time / iterations
56
+ end
@@ -0,0 +1,306 @@
1
+ Markdown: Basics
2
+ ================
3
+
4
+ <ul id="ProjectSubmenu">
5
+ <li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
6
+ <li><a class="selected" title="Markdown Basics">Basics</a></li>
7
+ <li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
8
+ <li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
9
+ <li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
10
+ </ul>
11
+
12
+
13
+ Getting the Gist of Markdown's Formatting Syntax
14
+ ------------------------------------------------
15
+
16
+ This page offers a brief overview of what it's like to use Markdown.
17
+ The [syntax page] [s] provides complete, detailed documentation for
18
+ every feature, but Markdown should be very easy to pick up simply by
19
+ looking at a few examples of it in action. The examples on this page
20
+ are written in a before/after style, showing example syntax and the
21
+ HTML output produced by Markdown.
22
+
23
+ It's also helpful to simply try Markdown out; the [Dingus] [d] is a
24
+ web application that allows you type your own Markdown-formatted text
25
+ and translate it to XHTML.
26
+
27
+ **Note:** This document is itself written using Markdown; you
28
+ can [see the source for it by adding '.text' to the URL] [src].
29
+
30
+ [s]: /projects/markdown/syntax "Markdown Syntax"
31
+ [d]: /projects/markdown/dingus "Markdown Dingus"
32
+ [src]: /projects/markdown/basics.text
33
+
34
+
35
+ ## Paragraphs, Headers, Blockquotes ##
36
+
37
+ A paragraph is simply one or more consecutive lines of text, separated
38
+ by one or more blank lines. (A blank line is any line that looks like a
39
+ blank line -- a line containing nothing spaces or tabs is considered
40
+ blank.) Normal paragraphs should not be intended with spaces or tabs.
41
+
42
+ Markdown offers two styles of headers: *Setext* and *atx*.
43
+ Setext-style headers for `<h1>` and `<h2>` are created by
44
+ "underlining" with equal signs (`=`) and hyphens (`-`), respectively.
45
+ To create an atx-style header, you put 1-6 hash marks (`#`) at the
46
+ beginning of the line -- the number of hashes equals the resulting
47
+ HTML header level.
48
+
49
+ Blockquotes are indicated using email-style '`>`' angle brackets.
50
+
51
+ Markdown:
52
+
53
+ A First Level Header
54
+ ====================
55
+
56
+ A Second Level Header
57
+ ---------------------
58
+
59
+ Now is the time for all good men to come to
60
+ the aid of their country. This is just a
61
+ regular paragraph.
62
+
63
+ The quick brown fox jumped over the lazy
64
+ dog's back.
65
+
66
+ ### Header 3
67
+
68
+ > This is a blockquote.
69
+ >
70
+ > This is the second paragraph in the blockquote.
71
+ >
72
+ > ## This is an H2 in a blockquote
73
+
74
+
75
+ Output:
76
+
77
+ <h1>A First Level Header</h1>
78
+
79
+ <h2>A Second Level Header</h2>
80
+
81
+ <p>Now is the time for all good men to come to
82
+ the aid of their country. This is just a
83
+ regular paragraph.</p>
84
+
85
+ <p>The quick brown fox jumped over the lazy
86
+ dog's back.</p>
87
+
88
+ <h3>Header 3</h3>
89
+
90
+ <blockquote>
91
+ <p>This is a blockquote.</p>
92
+
93
+ <p>This is the second paragraph in the blockquote.</p>
94
+
95
+ <h2>This is an H2 in a blockquote</h2>
96
+ </blockquote>
97
+
98
+
99
+
100
+ ### Phrase Emphasis ###
101
+
102
+ Markdown uses asterisks and underscores to indicate spans of emphasis.
103
+
104
+ Markdown:
105
+
106
+ Some of these words *are emphasized*.
107
+ Some of these words _are emphasized also_.
108
+
109
+ Use two asterisks for **strong emphasis**.
110
+ Or, if you prefer, __use two underscores instead__.
111
+
112
+ Output:
113
+
114
+ <p>Some of these words <em>are emphasized</em>.
115
+ Some of these words <em>are emphasized also</em>.</p>
116
+
117
+ <p>Use two asterisks for <strong>strong emphasis</strong>.
118
+ Or, if you prefer, <strong>use two underscores instead</strong>.</p>
119
+
120
+
121
+
122
+ ## Lists ##
123
+
124
+ Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
125
+ `+`, and `-`) as list markers. These three markers are
126
+ interchangable; this:
127
+
128
+ * Candy.
129
+ * Gum.
130
+ * Booze.
131
+
132
+ this:
133
+
134
+ + Candy.
135
+ + Gum.
136
+ + Booze.
137
+
138
+ and this:
139
+
140
+ - Candy.
141
+ - Gum.
142
+ - Booze.
143
+
144
+ all produce the same output:
145
+
146
+ <ul>
147
+ <li>Candy.</li>
148
+ <li>Gum.</li>
149
+ <li>Booze.</li>
150
+ </ul>
151
+
152
+ Ordered (numbered) lists use regular numbers, followed by periods, as
153
+ list markers:
154
+
155
+ 1. Red
156
+ 2. Green
157
+ 3. Blue
158
+
159
+ Output:
160
+
161
+ <ol>
162
+ <li>Red</li>
163
+ <li>Green</li>
164
+ <li>Blue</li>
165
+ </ol>
166
+
167
+ If you put blank lines between items, you'll get `<p>` tags for the
168
+ list item text. You can create multi-paragraph list items by indenting
169
+ the paragraphs by 4 spaces or 1 tab:
170
+
171
+ * A list item.
172
+
173
+ With multiple paragraphs.
174
+
175
+ * Another item in the list.
176
+
177
+ Output:
178
+
179
+ <ul>
180
+ <li><p>A list item.</p>
181
+ <p>With multiple paragraphs.</p></li>
182
+ <li><p>Another item in the list.</p></li>
183
+ </ul>
184
+
185
+
186
+
187
+ ### Links ###
188
+
189
+ Markdown supports two styles for creating links: *inline* and
190
+ *reference*. With both styles, you use square brackets to delimit the
191
+ text you want to turn into a link.
192
+
193
+ Inline-style links use parentheses immediately after the link text.
194
+ For example:
195
+
196
+ This is an [example link](http://example.com/).
197
+
198
+ Output:
199
+
200
+ <p>This is an <a href="http://example.com/">
201
+ example link</a>.</p>
202
+
203
+ Optionally, you may include a title attribute in the parentheses:
204
+
205
+ This is an [example link](http://example.com/ "With a Title").
206
+
207
+ Output:
208
+
209
+ <p>This is an <a href="http://example.com/" title="With a Title">
210
+ example link</a>.</p>
211
+
212
+ Reference-style links allow you to refer to your links by names, which
213
+ you define elsewhere in your document:
214
+
215
+ I get 10 times more traffic from [Google][1] than from
216
+ [Yahoo][2] or [MSN][3].
217
+
218
+ [1]: http://google.com/ "Google"
219
+ [2]: http://search.yahoo.com/ "Yahoo Search"
220
+ [3]: http://search.msn.com/ "MSN Search"
221
+
222
+ Output:
223
+
224
+ <p>I get 10 times more traffic from <a href="http://google.com/"
225
+ title="Google">Google</a> than from <a href="http://search.yahoo.com/"
226
+ title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
227
+ title="MSN Search">MSN</a>.</p>
228
+
229
+ The title attribute is optional. Link names may contain letters,
230
+ numbers and spaces, but are *not* case sensitive:
231
+
232
+ I start my morning with a cup of coffee and
233
+ [The New York Times][NY Times].
234
+
235
+ [ny times]: http://www.nytimes.com/
236
+
237
+ Output:
238
+
239
+ <p>I start my morning with a cup of coffee and
240
+ <a href="http://www.nytimes.com/">The New York Times</a>.</p>
241
+
242
+
243
+ ### Images ###
244
+
245
+ Image syntax is very much like link syntax.
246
+
247
+ Inline (titles are optional):
248
+
249
+ ![alt text](/path/to/img.jpg "Title")
250
+
251
+ Reference-style:
252
+
253
+ ![alt text][id]
254
+
255
+ [id]: /path/to/img.jpg "Title"
256
+
257
+ Both of the above examples produce the same output:
258
+
259
+ <img src="/path/to/img.jpg" alt="alt text" title="Title" />
260
+
261
+
262
+
263
+ ### Code ###
264
+
265
+ In a regular paragraph, you can create code span by wrapping text in
266
+ backtick quotes. Any ampersands (`&`) and angle brackets (`<` or
267
+ `>`) will automatically be translated into HTML entities. This makes
268
+ it easy to use Markdown to write about HTML example code:
269
+
270
+ I strongly recommend against using any `<blink>` tags.
271
+
272
+ I wish SmartyPants used named entities like `&mdash;`
273
+ instead of decimal-encoded entites like `&#8212;`.
274
+
275
+ Output:
276
+
277
+ <p>I strongly recommend against using any
278
+ <code>&lt;blink&gt;</code> tags.</p>
279
+
280
+ <p>I wish SmartyPants used named entities like
281
+ <code>&amp;mdash;</code> instead of decimal-encoded
282
+ entites like <code>&amp;#8212;</code>.</p>
283
+
284
+
285
+ To specify an entire block of pre-formatted code, indent every line of
286
+ the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,
287
+ and `>` characters will be escaped automatically.
288
+
289
+ Markdown:
290
+
291
+ If you want your page to validate under XHTML 1.0 Strict,
292
+ you've got to put paragraph tags in your blockquotes:
293
+
294
+ <blockquote>
295
+ <p>For example.</p>
296
+ </blockquote>
297
+
298
+ Output:
299
+
300
+ <p>If you want your page to validate under XHTML 1.0 Strict,
301
+ you've got to put paragraph tags in your blockquotes:</p>
302
+
303
+ <pre><code>&lt;blockquote&gt;
304
+ &lt;p&gt;For example.&lt;/p&gt;
305
+ &lt;/blockquote&gt;
306
+ </code></pre>
@@ -54,7 +54,13 @@ class TestPandocRuby < Test::Unit::TestCase
54
54
  converter.expects(:execute).with('pandoc --toc').returns(true)
55
55
  assert converter.convert
56
56
  end
57
-
57
+
58
+ should "convert to html with to_html" do
59
+ converter = PandocRuby.new(@file)
60
+ converter.expects(:execute).with('pandoc --to=html').returns(true)
61
+ assert converter.to_html
62
+ end
63
+
58
64
  should "work with strings" do
59
65
  converter = PandocRuby.new('## this is a title')
60
66
  assert_match %r(h2), converter.convert
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pandoc-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Melody
@@ -40,6 +40,8 @@ files:
40
40
  - VERSION
41
41
  - lib/pandoc-ruby.rb
42
42
  - pandoc-ruby.gemspec
43
+ - test/benchmark.rb
44
+ - test/benchmark.txt
43
45
  - test/test.md
44
46
  - test/test_conversions.rb
45
47
  - test/test_helper.rb
@@ -73,6 +75,7 @@ signing_key:
73
75
  specification_version: 3
74
76
  summary: PandocRuby
75
77
  test_files:
78
+ - test/benchmark.rb
76
79
  - test/test_conversions.rb
77
80
  - test/test_helper.rb
78
81
  - test/test_pandoc-ruby.rb