paru 0.2.5 → 0.2.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 185b75188642b10c09282a90bfc79cf3668881f7
4
- data.tar.gz: a6ad0e6180196916b569e92c855bb6d0f5bca2c7
3
+ metadata.gz: e35691d50c4e8cf7e53951d9ba6988dc42137720
4
+ data.tar.gz: c9f3c94e69dd101e0f9f369e531ae7e5ce74681b
5
5
  SHA512:
6
- metadata.gz: 6e6140070d0709f90fbd9c23ef86c01685fe1e2f7421203cb8c732f00ece343fe8bdf0c87eee5d4d302697c54153fa37321d2e515b6a077c2354fe6dfb365d30
7
- data.tar.gz: 19606ebcbbf9bed59c9c2cbaa694f56d9b2998dd07c8d1b6067f5715d5fde07e3c145fbad059c3458ffc757e7193acfa97e50e08fd915a028ba671fbb874898e
6
+ metadata.gz: cd6440963be644a3833c2902bd403d30f66785efdfe0c7f34997b172dac19356da484e232b924339c35e7fb3905940e723f875834da2a68b16976758929c4b42
7
+ data.tar.gz: 3d4c0c55ab5ab82c4d129afdbe2a779ea54f20ecdcec1dd6a42e1680d6e26eae37ad98a07871a7160e4f9167c80743bab8adca4d91b22d293fa71bec1ab6a0b2
@@ -19,6 +19,8 @@
19
19
  require "shellwords"
20
20
  require "yaml"
21
21
 
22
+ require_relative "error.rb"
23
+
22
24
  module Paru
23
25
  # Pandoc is a wrapper around the pandoc document converter. See
24
26
  # <http://pandoc.org/README.html> for details about pandoc. The Pandoc
@@ -76,6 +78,9 @@ module Paru
76
78
  #
77
79
  #
78
80
  class Pandoc
81
+
82
+ # Path to the pandoc executatble to use by paru.
83
+ PARU_PANDOC_PATH = "PARU_PANDOC_PATH"
79
84
 
80
85
  # Gather information about the pandoc installation. It runs +pandoc
81
86
  # --version+ and extracts pandoc's version number and default data
@@ -85,18 +90,7 @@ module Paru
85
90
  # @return [Hash{:version => String, :data_dir => String}] Pandoc's
86
91
  # version, such as "1.17.0.4" and the data directory, such as "/home/huub/.pandoc".
87
92
  def self.info()
88
- output = ''
89
- IO.popen('pandoc --version', 'r+') do |p|
90
- p.close_write
91
- output << p.read
92
- end
93
- version = output.match(/pandoc (\d+\.\d+.*)$/)[1]
94
- data_dir = output.match(/Default user data directory: (.+)$/)[1]
95
-
96
- {
97
- :version => version,
98
- :data_dir => data_dir
99
- }
93
+ @@info
100
94
  end
101
95
 
102
96
  # Create a new Pandoc converter, optionally configured by a block with
@@ -153,6 +147,7 @@ module Paru
153
147
  # @example Using <<
154
148
  # output = converter << 'this is a *strong* word'
155
149
  def convert(input)
150
+ begin
156
151
  output = ''
157
152
  IO.popen(to_command, 'r+') do |p|
158
153
  p << input
@@ -160,6 +155,9 @@ module Paru
160
155
  output << p.read
161
156
  end
162
157
  output
158
+ rescue StandardError => err
159
+ throw Error.new "Error while running '#{to_command}' on input:\n\n#{input}\n\nPandoc responds: '#{err.message}'"
160
+ end
163
161
  end
164
162
  alias << convert
165
163
 
@@ -169,7 +167,7 @@ module Paru
169
167
  # @param option_sep [String] the string to separate options with
170
168
  # @return [String] This converter's command line invocation string.
171
169
  def to_command(option_sep = " \\\n\t")
172
- "pandoc\t#{to_option_string option_sep}"
170
+ "#{@@pandoc_exec.shellescape}\t#{to_option_string option_sep}"
173
171
  end
174
172
 
175
173
  private
@@ -199,8 +197,42 @@ module Paru
199
197
  options_arr.join(option_sep)
200
198
  end
201
199
 
200
+ # determine pandoc_executable to use in paru
201
+ @@pandoc_exec = if ENV.has_key? PARU_PANDOC_PATH
202
+ ENV[PARU_PANDOC_PATH]
203
+ else
204
+ "pandoc"
205
+ end
206
+
207
+ begin
208
+ version_string = ''
209
+ IO.popen("#{@@pandoc_exec} --version", 'r+') do |p|
210
+ p.close_write
211
+ version_string << p.read
212
+ end
213
+ rescue StandardError => err
214
+ throw Error.new "Unable to run pandoc via command '#{@@pandoc_exec} --version': #{err.message}"
215
+ end
216
+
217
+ version = version_string.match(/pandoc (\d+\.\d+.*)$/)[1]
218
+ data_dir = version_string.match(/Default user data directory: (.+)$/)[1]
219
+
220
+ @@info = {
221
+ :version => version,
222
+ :data_dir => data_dir
223
+ }
224
+
225
+ # Load the options for the appropriate major version of pandoc
226
+ major_version = @@info[:version].split(".").first.to_i
227
+
228
+ if not [1, 2].include? major_version
229
+ throw Error.new "Unknown major pandoc version: '#{major_version}'. Expected the major version to be '1' or '2'. Please check the pandoc path: '#{@@pandoc_exec}'."
230
+ # defaults to version 1
231
+ major_version = 1
232
+ end
233
+
202
234
  # For each pandoc command line option a method is defined as follows:
203
- OPTIONS = YAML.load_file File.join(__dir__, 'pandoc_options.yaml')
235
+ OPTIONS = YAML.load_file File.join(__dir__, "pandoc_options_version_#{major_version}.yaml")
204
236
 
205
237
  OPTIONS.keys.each do |option|
206
238
  if OPTIONS[option].is_a? Array then
@@ -17,6 +17,7 @@
17
17
  # along with Paru. If not, see <http://www.gnu.org/licenses/>.
18
18
  # See http://pandoc.org/README.html for an overview of all options
19
19
  #++
20
+ # Options for pandoc version 1.x, in order of occurrence in the pandoc manual.
20
21
  # General options
21
22
  from: ""
22
23
  read: ""
@@ -0,0 +1,111 @@
1
+ #--
2
+ # Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
3
+ #
4
+ # This file is part of Paru
5
+ #
6
+ # Paru is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # Paru is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with Paru. If not, see <http://www.gnu.org/licenses/>.
18
+ # See http://pandoc.org/README.html for an overview of all options
19
+ #++
20
+ # In order as listed in the output of `pandoc- h` for pandoc version 2.x
21
+ from: ""
22
+ read: ""
23
+ to: ""
24
+ write: ""
25
+ output: ""
26
+ data_dir: ""
27
+ base_header_level: 1
28
+ indented-code-classes: ""
29
+ filter: [""]
30
+ lua-filter: [""]
31
+ preserver-tabs: true
32
+ tab-stop: 4
33
+ track-changes: "accept"
34
+ file-scope: ""
35
+ extract-media: ""
36
+ standalone: true
37
+ template: ""
38
+ metadata: [""]
39
+ variable: [""]
40
+ print-default-template: ""
41
+ print-default-data-file: ""
42
+ dpi: 96
43
+ eol: "native"
44
+ wrap: "auto"
45
+ columns: 78
46
+ toc: true
47
+ table-of-contents: true
48
+ no-highlight: true
49
+ highlight-style: ""
50
+ syntax-definition: ""
51
+ include-in-header: [""]
52
+ include-before-body: [""]
53
+ include-after-body: [""]
54
+ resource-path: ""
55
+ self-contained: true
56
+ html-q-tags: true
57
+ ascii: true
58
+ reference-links: true
59
+ reference-location: "block"
60
+ atx-headers: ""
61
+ top-level-division: "section"
62
+ number-sections: true
63
+ number-offset: 2
64
+ listings: true
65
+ incremental: true
66
+ slide-level: 1
67
+ section-divs: true
68
+ default-image-extension: "png"
69
+ email-obfuscation: "none"
70
+ id-prefix: ""
71
+ title-prefix: ""
72
+ css: [""]
73
+ reference-doc: ""
74
+ epub-subdirectory: ""
75
+ epub-cover-image: ""
76
+ epub-metadata: ""
77
+ epub-embed-font: ""
78
+ epub-chapter-level: 1
79
+ latex-engine: ""
80
+ latex-engine-opt: ""
81
+ bibliography: ""
82
+ csl: ""
83
+ citation-abbreviation: ""
84
+ natbib: true
85
+ biblatex: true
86
+ latexmathml: ""
87
+ asciimathml: ""
88
+ mathml: true
89
+ mimetex: ""
90
+ webtex: ""
91
+ jsmath: ""
92
+ mathjax: ""
93
+ katex: ""
94
+ katex-stylesheet: ""
95
+ gladtex: true
96
+ abbreviations: ""
97
+ trace: true
98
+ dump-args: true
99
+ ignore-args: true
100
+ verbose: true
101
+ quiet: true
102
+ fail-if-warnings: true
103
+ log: ""
104
+ bash-completion: true
105
+ list_input_formats: true
106
+ list_output_formats: true
107
+ list_extensions: true
108
+ list_highlight_languages: true
109
+ list_highlight_styles: true
110
+ version: true
111
+ help: true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huub de Beer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-17 00:00:00.000000000 Z
11
+ date: 2017-06-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Use Pandoc (http://www.pandoc.org) with ruby
14
14
  email: Huub@heerdebeer.org
@@ -84,7 +84,8 @@ files:
84
84
  - lib/paru/filter_error.rb
85
85
  - lib/paru/pandoc.rb
86
86
  - lib/paru/pandoc2yaml.rb
87
- - lib/paru/pandoc_options.yaml
87
+ - lib/paru/pandoc_options_version_1.yaml
88
+ - lib/paru/pandoc_options_version_2.yaml
88
89
  - lib/paru/selector.rb
89
90
  homepage: https://heerdebeer.org/Software/markdown/paru/
90
91
  licenses:
@@ -106,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
107
  version: '0'
107
108
  requirements: []
108
109
  rubyforge_project:
109
- rubygems_version: 2.6.11
110
+ rubygems_version: 2.5.2
110
111
  signing_key:
111
112
  specification_version: 4
112
113
  summary: Paru is a ruby wrapper around pandoc