paru 0.2.4.6 → 0.2.4.7

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: 76f86581e1e26603a9f55ae60486552c537f0714
4
- data.tar.gz: e61570f118ec77fa9ebf544f6c22d41c6e2e1437
3
+ metadata.gz: 1332fd988cbb97b8dd7cd1c45c20a90706cfb537
4
+ data.tar.gz: 168c0c5db7710ac7ae6e7abe4f5219c6a77ea248
5
5
  SHA512:
6
- metadata.gz: ae430e95dadc46085b1fb56c3a1c8a44c06bf1da5bbfec0893b654e6c0e0e612df34cf0b0fd03b4c0cba32e794bf1558e148c014578fc1264f792e0762d2bbe5
7
- data.tar.gz: 54a434f05bb8d027cdb91330075bdd776b8c5d0de3b692a548cbb282fae609113aa86ad5d57aa4f3917b7c3681abd16d5b84a79efc042ad9df3c3615bcd39add
6
+ metadata.gz: 6fd6c4f49fa011d4001151202e5c974f3ed7f972c6b1ed922ef6ca60adfc1821a8b2a773c04fdb6a3462d62ee6cb2d8b6fe8039835ec7f0a531e884a1127e87b
7
+ data.tar.gz: 61e852b82fc8844a5b1cb58f1a2ee599aef73fcc06d265bd3f4e924e3a75e5f0a560e6e0e0fff9fe8ceb224ff78c54dc1e38a96067d80986b22a4e7ea914d52a
data/lib/paru.rb CHANGED
@@ -18,10 +18,11 @@
18
18
  #++
19
19
  module Paru
20
20
  require "paru/pandoc"
21
- require "paru/error"
22
21
  require "paru/filter"
22
+ require "paru/filter_error"
23
+ require "paru/error"
23
24
  require "paru/pandoc2yaml"
24
25
 
25
26
  # Paru's current version
26
- VERSION = [0, 2, 4, 5]
27
+ VERSION = [0, 2, 4, 7]
27
28
  end
data/lib/paru/filter.rb CHANGED
@@ -19,7 +19,7 @@
19
19
  module Paru
20
20
 
21
21
  require_relative "./selector"
22
- require_relative "filter/document"
22
+ require_relative "./filter/document"
23
23
 
24
24
  # Paru filter is a wrapper around pandoc's JSON api, which is based on
25
25
  # {pandoc-types}[https://hackage.haskell.org/package/pandoc-types-1.17.0.4/docs/Text-Pandoc-Definition.html].
@@ -298,4 +298,8 @@ module Paru
298
298
  end
299
299
 
300
300
  end
301
+
302
+ # FilterError is thrown when there is an error during fitlering
303
+ class FilterError < Error
304
+ end
301
305
  end
@@ -20,10 +20,11 @@ module Paru
20
20
  module PandocFilter
21
21
 
22
22
  require "json"
23
- require_relative "./node"
24
- require_relative "./plain"
25
- require_relative "./meta"
26
- require_relative "./version"
23
+ require_relative "./node.rb"
24
+ require_relative "./plain.rb"
25
+ require_relative "./meta.rb"
26
+ require_relative "./version.rb"
27
+ require_relative "../filter_error.rb"
27
28
 
28
29
  # Pandoc type version key
29
30
  VERSION = "pandoc-api-version"
@@ -49,9 +50,37 @@ module Paru
49
50
  #
50
51
  # @param json [String] a JSON string representation of the AST of a document
51
52
  # @return [Document] the newly created document
53
+ #
54
+ # @raise [ParuFilterError] when parsing JSON AST from pandoc fails
55
+ # or the parsed results do not make sense.
52
56
  def self.from_JSON(json)
53
- doc = JSON.parse json
54
- version, metadata, contents = doc.values_at(VERSION, META, BLOCKS)
57
+ begin
58
+ doc = JSON.parse json
59
+ version, metadata, contents = doc.values_at(VERSION, META, BLOCKS)
60
+ rescue Exception => e
61
+ raise FilterError.new <<~WARNING
62
+ Unable to read document.
63
+
64
+ Most likely cause: Paru expects a pandoc installation that has been
65
+ compiled with pandoc-types >= #{CURRENT_PANDOC_VERSION.join('.')}. You can
66
+ check which pandoc-types have been compiled with your pandoc installation by
67
+ running `pandoc -v`.
68
+
69
+ Original error message: #{e.message}
70
+ WARNING
71
+ end
72
+
73
+ if -1 == (version <=> CURRENT_PANDOC_VERSION)
74
+ if metadata.has_key?('_debug')
75
+ warn <<~WARNING
76
+ pandoc-types API version used in document (version = #{version.join('.')}) is
77
+ smaller than the version of pandoc-types used by paru
78
+ (#{CURRENT_PANDOC_VERSION.join('.')}. If you experience unexpected results,
79
+ please try updating pandoc or downgrading paru.
80
+ WARNING
81
+ end
82
+ end
83
+
55
84
  PandocFilter::Document.new version, metadata, contents
56
85
  end
57
86
 
@@ -26,7 +26,7 @@ module Paru
26
26
  # @see http://hackage.haskell.org/package/pandoc-types-1.17.0.4/docs/Text-Pandoc-Definition.html#t:MetaValue
27
27
  #
28
28
  # @!attribute value
29
- # @return [String]
29
+ # @return [String|Boolean]
30
30
  class MetaValue < Node
31
31
 
32
32
  attr_accessor :value
@@ -0,0 +1,24 @@
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
+ #++
19
+ require_relative "./error.rb"
20
+ module Paru
21
+ # A FilterError raised when there is an error while running a filter.
22
+ class FilterError < Error
23
+ end
24
+ end
@@ -1,29 +1,48 @@
1
- #!/usr/bin/env ruby
2
- ##
3
- # pandoc2yaml.rb extracts the metadata from a pandoc markdown file and prints
4
- # that metadata out again as a pandoc markdown file with nothing in it but that
5
- # metadata
1
+ #--
2
+ # Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
6
3
  #
7
- # Usage:
4
+ # This file is part of Paru
8
5
  #
9
- # pandoc2yaml.rb input_file
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
10
  #
11
- ##
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
+ #++
12
19
  module Paru
13
- module Pandoc2Yaml
14
- require "json"
15
- require_relative "./pandoc.rb"
20
+ require "json"
21
+ require_relative "./pandoc.rb"
16
22
 
23
+ # Utility class to extract YAML metadata form a markdown file in pandoc's
24
+ # own markdown format.
25
+ class Pandoc2Yaml
17
26
  # Paru converters:
18
27
  # Note. When converting metadata back to the pandoc markdown format, you have
19
28
  # to use the option "standalone", otherwise the metadata is skipped
29
+
30
+ # Converter from pandoc's markdown to pandoc's AST JSON
20
31
  PANDOC_2_JSON = Paru::Pandoc.new {from "markdown"; to "json"}
32
+
33
+ # Converter from pandoc's AST JSON back to pandoc. Note the
34
+ # 'standalone' property, which is needed to output the metadata as
35
+ # well.
21
36
  JSON_2_PANDOC = Paru::Pandoc.new {from "json"; to "markdown"; standalone}
22
37
 
23
38
  # When converting a pandoc document to JSON, or vice versa, the JSON object
24
39
  # has the following three properties:
40
+
41
+ # Pandoc-type API version key
25
42
  VERSION = "pandoc-api-version"
43
+ # Meta block key
26
44
  META = "meta"
45
+ # Content's blocks key
27
46
  BLOCKS = "blocks"
28
47
 
29
48
  # Extract the YAML metadata from input document
data/lib/paru/selector.rb CHANGED
@@ -25,7 +25,6 @@ module Paru
25
25
  class SelectorParseError < Error
26
26
  end
27
27
 
28
-
29
28
  # A Selector models a relationship between Pandoc AST nodes, such as
30
29
  # parent-child or sibling. Selectors in paru are like CSS selectors, but
31
30
  # more limited because the Pandoc AST is quite simple.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4.6
4
+ version: 0.2.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Huub de Beer
@@ -80,6 +80,7 @@ files:
80
80
  - lib/paru/filter/table_row.rb
81
81
  - lib/paru/filter/target.rb
82
82
  - lib/paru/filter/version.rb
83
+ - lib/paru/filter_error.rb
83
84
  - lib/paru/pandoc.rb
84
85
  - lib/paru/pandoc2yaml.rb
85
86
  - lib/paru/pandoc_options.yaml