pandoc-ruby 2.0.1 → 2.1.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c07c31b644c343bcd4ab9371b2128579ced7577e
4
- data.tar.gz: 983a9f0c36bd180077d4449bb51639cb22edf5e7
2
+ SHA256:
3
+ metadata.gz: 8e8ca5b1e67ee24b1ce6da71e7d66b79c01de59784bca75862c37463c8b7c149
4
+ data.tar.gz: f6beef0283cf065db5f496449230fbf70fee63e699ebc8b5e3002440c707df78
5
5
  SHA512:
6
- metadata.gz: cf592d887248d4d8f5131a8aebf55fcd4bf9b990cd34efd4058fc39629ccdc891d5ba40a8c470866d4448afedda6812bccd108aaf1ef49ddddaaf09ab8dec056
7
- data.tar.gz: 8d6e6a5e741360555372e5054d625612b7fe2a6c8a4437768c57972d35d76f9919b632b6fece80421d4607b265454bdc09f806d5d6a6a4c58eb1ad87bfe3f579
6
+ metadata.gz: f5389c2016eee54a1fd8d4238b0579c10ffc7ee35ee97a362eb90a44e6798aa9196674af80cb9abc3228db19aadd4e93e1ecf02d6229fd4231bd9bc947755b78
7
+ data.tar.gz: 2039942ca2d81756b3ce3077bcf1eb8c64347fe256d0c1ced34406f55028e84f788f289de484eb3c3350184a014c42c9b5ff54aed660ea74b0ef549398d8662b
data/Gemfile CHANGED
@@ -6,8 +6,9 @@ source 'http://rubygems.org'
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development, :test do
9
- gem 'minitest', '~>5.8.3'
10
- gem 'mocha', '~>1.1.0'
9
+ gem 'minitest'
10
+ gem 'mocha'
11
11
  gem 'rake'
12
12
  gem 'rdoc'
13
+ gem 'rubocop'
13
14
  end
data/Gemfile.lock CHANGED
@@ -1,23 +1,52 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- json (1.8.3)
5
- metaclass (0.0.4)
6
- minitest (5.8.4)
7
- mocha (1.1.0)
8
- metaclass (~> 0.0.1)
9
- rake (11.1.2)
10
- rdoc (4.2.2)
11
- json (~> 1.4)
4
+ ast (2.4.2)
5
+ json (2.6.3)
6
+ language_server-protocol (3.17.0.3)
7
+ minitest (5.20.0)
8
+ mocha (2.1.0)
9
+ ruby2_keywords (>= 0.0.5)
10
+ parallel (1.23.0)
11
+ parser (3.2.2.4)
12
+ ast (~> 2.4.1)
13
+ racc
14
+ psych (5.1.1.1)
15
+ stringio
16
+ racc (1.7.3)
17
+ rainbow (3.1.1)
18
+ rake (13.1.0)
19
+ rdoc (6.6.0)
20
+ psych (>= 4.0.0)
21
+ regexp_parser (2.8.2)
22
+ rexml (3.2.6)
23
+ rubocop (1.57.2)
24
+ json (~> 2.3)
25
+ language_server-protocol (>= 3.17.0)
26
+ parallel (~> 1.10)
27
+ parser (>= 3.2.2.4)
28
+ rainbow (>= 2.2.2, < 4.0)
29
+ regexp_parser (>= 1.8, < 3.0)
30
+ rexml (>= 3.2.5, < 4.0)
31
+ rubocop-ast (>= 1.28.1, < 2.0)
32
+ ruby-progressbar (~> 1.7)
33
+ unicode-display_width (>= 2.4.0, < 3.0)
34
+ rubocop-ast (1.30.0)
35
+ parser (>= 3.2.1.0)
36
+ ruby-progressbar (1.13.0)
37
+ ruby2_keywords (0.0.5)
38
+ stringio (3.0.9)
39
+ unicode-display_width (2.5.0)
12
40
 
13
41
  PLATFORMS
14
42
  ruby
15
43
 
16
44
  DEPENDENCIES
17
- minitest (~> 5.8.3)
18
- mocha (~> 1.1.0)
45
+ minitest
46
+ mocha
19
47
  rake
20
48
  rdoc
49
+ rubocop
21
50
 
22
51
  BUNDLED WITH
23
- 1.12.2
52
+ 2.2.28
data/README.md CHANGED
@@ -1,74 +1,77 @@
1
1
  # PandocRuby
2
2
 
3
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/xwmx/pandoc-ruby/tests.yml?branch=master)](https://github.com/xwmx/pandoc-ruby/actions)
4
+ [![Gem Version](https://img.shields.io/gem/v/pandoc-ruby)](http://rubygems.org/gems/pandoc-ruby)
5
+ [![Gem Downloads](https://img.shields.io/gem/dt/pandoc-ruby)](http://rubygems.org/gems/pandoc-ruby)
6
+
3
7
  PandocRuby is a wrapper for [Pandoc](http://johnmacfarlane.net/pandoc/), a
4
8
  Haskell library with command line tools for converting one markup format to
5
9
  another.
6
10
 
7
- Pandoc can convert documents in markdown, reStructuredText, textile, HTML,
8
- DocBook, LaTeX, or MediaWiki markup to a variety of formats, including
9
- markdown, reStructuredText, HTML, LaTeX, ConTeXt, PDF, RTF, DocBook XML,
10
- OpenDocument XML, ODT, GNU Texinfo, MediaWiki markup, groff man pages,
11
- HTML slide shows, EPUB, and Microsoft Word docx.
12
-
13
- *This documentation is for version 2 and higher. For version 1 documentation
14
- [see here](https://github.com/alphabetum/pandoc-ruby/blob/v1.0.0/README.markdown).*
11
+ Pandoc can convert documents from a variety of formats including markdown,
12
+ reStructuredText, textile, HTML, DocBook, LaTeX, and MediaWiki markup to a
13
+ variety of other formats, including markdown, reStructuredText, HTML, LaTeX,
14
+ ConTeXt, PDF, RTF, DocBook XML, OpenDocument XML, ODT, GNU Texinfo, MediaWiki
15
+ markup, groff man pages, HTML slide shows, EPUB, Microsoft Word docx, and more.
15
16
 
16
17
  ## Installation
17
18
 
18
- First, make sure to
19
- [install Pandoc](http://johnmacfarlane.net/pandoc/installing.html).
19
+ First, [install Pandoc](http://johnmacfarlane.net/pandoc/installing.html).
20
20
 
21
- Next, add PandocRuby to your Gemfile
21
+ PandocRuby is available on [RubyGems](http://rubygems.org/gems/pandoc-ruby):
22
22
 
23
- ```ruby
24
- gem 'pandoc-ruby'
23
+ ```bash
24
+ gem install pandoc-ruby
25
25
  ```
26
26
 
27
- or install PandocRuby from [RubyGems](http://rubygems.org/gems/pandoc-ruby).
27
+ To install with [Bundler](https://bundler.io/), add the following to your
28
+ Gemfile:
28
29
 
29
- ```bash
30
- gem install pandoc-ruby
30
+ ```ruby
31
+ gem 'pandoc-ruby'
31
32
  ```
32
33
 
34
+ Then run `bundle install`
35
+
33
36
  ## Usage
34
37
 
35
38
  ```ruby
36
39
  require 'pandoc-ruby'
37
- @converter = PandocRuby.new('# Markdown Title', :from => :markdown, :to => :rst)
40
+ @converter = PandocRuby.new('# Markdown Title', from: :markdown, to: :rst)
38
41
  puts @converter.convert
39
42
  ```
40
43
 
41
- This takes the Markdown formatted file and converts it to reStructuredText.
44
+ This takes the Markdown formatted string and converts it to reStructuredText.
42
45
 
43
46
  You can also use the `#convert` class method:
44
47
 
45
48
  ```ruby
46
- puts PandocRuby.convert('# Markdown Title', :from => :markdown, :to => :html)
49
+ puts PandocRuby.convert('# Markdown Title', from: :markdown, to: :html)
47
50
  ```
48
51
 
49
52
  Other arguments are simply converted into command line options, accepting
50
- symbols or strings for options without arguments and hashes of strings or
51
- symbols for options with arguments.
53
+ symbols and strings for options and hashes for options with arguments.
52
54
 
53
55
  ```ruby
54
- PandocRuby.convert('# Markdown Title', :s, {:f => :markdown, :to => :rst}, 'no-wrap', :table_of_contents)
56
+ PandocRuby.convert('# Markdown Title', :s, {f: :markdown, to: :rst}, '--wrap=none', :table_of_contents)
55
57
  ```
56
58
 
57
59
  is equivalent to
58
60
 
59
61
  ```bash
60
- echo "# Markdown Title" | pandoc -s -f markdown --to=rst --no-wrap --table-of-contents
62
+ echo "# Markdown Title" | pandoc -s -f markdown --to=rst --wrap=none --table-of-contents
61
63
  ```
62
64
 
63
65
  Also provided are `#to_[writer]` instance methods for each of the writers,
64
66
  and these can also accept options:
65
67
 
66
68
  ```ruby
67
- PandocRuby.new("# Some title").to_html(:no_wrap)
68
- # => "<div id=\"some-title\"><h1>Some title</h1></div>"
69
+ PandocRuby.new('# Example').to_html(:ascii)
70
+ # => "<h1 id="example">Example</h1>"
69
71
  # or
70
- PandocRuby.new("# Some title").to_rst
71
- # => "Some title\n=========="
72
+ PandocRuby.new("# Example").to_rst
73
+ # => "Example
74
+ # ======="
72
75
  ```
73
76
 
74
77
  Similarly, there are class methods for each of the readers, so readers
@@ -79,23 +82,55 @@ PandocRuby.html("<h1>hello</h1>").to_latex
79
82
  # => "\\section{hello}"
80
83
  ```
81
84
 
82
- PandocRuby assumes the `pandoc` executable is via your environment's `$PATH`
85
+ Available readers and writers are can be found in the following
86
+ variables:
87
+ - [`PandocRuby::READERS`](lib/pandoc-ruby.rb#L10)
88
+ - [`PandocRuby::STRING_WRITERS`](lib/pandoc-ruby.rb#L48)
89
+ - [`PandocRuby::BINARY_WRITERS`](lib/pandoc-ruby.rb#L104)
90
+ - [`PandocRuby::WRITERS`](lib/pandoc-ruby.rb#L113)
91
+
92
+ PandocRuby assumes the `pandoc` executable is in your environment's `$PATH`
83
93
  variable. If you'd like to set an explicit path to the `pandoc` executable,
84
94
  you can do so with `PandocRuby.pandoc_path = '/path/to/pandoc'`
85
95
 
96
+ ### Converting Files
97
+
86
98
  PandocRuby can also take an array of one or more file paths as the first
87
99
  argument. The files will be concatenated together with a blank line between
88
100
  each and used as input.
89
101
 
90
102
  ```ruby
91
103
  # One file path as a single-element array.
92
- PandocRuby.html(['/path/to/file1.html']).to_markdown
104
+ PandocRuby.new(['/path/to/file1.docx'], from: 'docx').to_html
93
105
  # Multiple file paths as an array.
94
- PandocRuby.html(['/path/to/file1.html', '/path/to/file2.html']).to_markdown
106
+ PandocRuby.new(['/path/to/file1.docx', '/path/to/file1.docx'], from: 'docx').to_html
107
+ ```
108
+
109
+ If you are trying to generate a standalone file with full file headers rather
110
+ than just a marked up fragment, remember to pass the `:standalone` option so
111
+ the correct header and footer are added.
112
+
113
+ ```ruby
114
+ PandocRuby.new("# Some title", :standalone).to_rtf
115
+ ```
116
+
117
+ ### Extensions
118
+
119
+ Pandoc [extensions](https://pandoc.org/MANUAL.html#extensions) can be
120
+ used to modify the behavior of readers and writers. To use an extension,
121
+ add the extension with a `+` or `-` after the reader or writer name:
122
+
123
+ ```ruby
124
+ # Without extension:
125
+ PandocRuby.new("Line 1\n# Heading", from: 'markdown_strict').to_html
126
+ # => "<p>Line 1</p>\n<h1>Heading</h1>\n"
127
+
128
+ # With `+blank_before_header` extension:
129
+ PandocRuby.new("Line 1\n# Heading", from: 'markdown_strict+blank_before_header').to_html
130
+ # => "<p>Line 1 # Heading</p>\n
95
131
  ```
96
132
 
97
- Available format readers and writers are available in the `PandocRuby::READERS`
98
- and `PandocRuby::WRITERS` constants.
133
+ ### More Information
99
134
 
100
135
  For more information on Pandoc, see the
101
136
  [Pandoc documentation](http://johnmacfarlane.net/pandoc/)
@@ -103,24 +138,15 @@ or run `man pandoc`
103
138
  ([also available here](http://johnmacfarlane.net/pandoc/pandoc.1.html)).
104
139
 
105
140
  If you'd prefer a pure-Ruby extended markdown interpreter that can output a
106
- few different formats, take a look at [Maruku](http://maruku.rubyforge.org/).
107
- If you want to use the full reStructuredText syntax from within Ruby, check
108
- out [RbST](https://github.com/alphabetum/rbst), a docutils wrapper.
141
+ few different formats, take a look at
142
+ [kramdown](https://kramdown.gettalong.org/). If you want to use the full
143
+ reStructuredText syntax from within Ruby, check out
144
+ [RbST](https://github.com/xwmx/rbst), a docutils wrapper.
109
145
 
110
146
  This gem was inspired by [Albino](http://github.com/github/albino). For a
111
147
  slightly different approach to using Pandoc with Ruby, see
112
148
  [Pandoku](http://github.com/dahlia/pandoku).
113
149
 
114
- ## Additional Notes
115
-
116
- If you are trying to generate a standalone file with full file headers rather
117
- than just a marked up fragment, remember to pass the `:standalone` option so
118
- the correct header and footer are added.
119
-
120
- ```ruby
121
- PandocRuby.new("# Some title", :standalone).to_rtf
122
- ```
123
-
124
150
  ## Note on Patches/Pull Requests
125
151
 
126
152
  * Fork the project.
data/Rakefile CHANGED
@@ -1,12 +1,10 @@
1
- # encoding: utf-8
2
-
3
1
  require 'rubygems'
4
2
  require 'bundler'
5
3
  begin
6
4
  Bundler.setup(:default, :development)
7
5
  rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts 'Run `bundle install` to install missing gems'
6
+ warn e.message
7
+ warn 'Run `bundle install` to install missing gems'
10
8
  exit e.status_code
11
9
  end
12
10
  require 'rake'
@@ -29,3 +27,34 @@ Rake::RDocTask.new do |rdoc|
29
27
  rdoc.rdoc_files.include('README*')
30
28
  rdoc.rdoc_files.include('lib/**/*.rb')
31
29
  end
30
+
31
+ require './lib/pandoc-ruby.rb'
32
+ desc <<HEREDOC
33
+ Regenerate test files in existing formats.
34
+ HEREDOC
35
+ task :regenerate_files do
36
+ extensions = []
37
+ files_dir = File.join(File.dirname(__FILE__), 'test', 'files')
38
+
39
+ Dir.glob(File.join(files_dir, 'format*')) do |f|
40
+ extensions << f.match(/format\.(\w+)\Z/)[1]
41
+ end
42
+
43
+ from_content = File.read(File.join(files_dir, 'format.markdown'))
44
+
45
+ extensions.each do |to|
46
+ next if to == 'markdown'
47
+
48
+ to_file = File.join(files_dir, "format.#{to}")
49
+
50
+ converted_content = PandocRuby.convert(
51
+ from_content,
52
+ :from => 'markdown',
53
+ :to => to
54
+ )
55
+
56
+ File.open(to_file, 'w') do |file|
57
+ file.write(converted_content)
58
+ end
59
+ end
60
+ end