pandocomatic 0.2.5.0.betad → 0.2.5.0.betae
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pandocomatic/multiple_files_input.rb +5 -3
- data/lib/pandocomatic/pandoc_metadata.rb +55 -41
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fc5078287ef035d1bd1734f28d6248f095ca6ec2ccf8c7bf6a4d702d3f7919b
|
4
|
+
data.tar.gz: e06523b3dd232c7688c30903082fdadc5133f413e651aeddb86c983690fd9700
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33669dd83b7de3921af91a19468dbbb4d5a640c9dd69886fb1d4fd673a523a2a53b5b8844f5aaea10e793b93fb54327a9dd6e9a8c5070557f522904d911e26eb
|
7
|
+
data.tar.gz: 530bb6418f57a25d780e83e338f0fd37484eb30c0e765aa79fa634368eba58061724d2858a670dc07c09ad993e180fa2584d719a027c3a6b397d5be0e9faa190
|
@@ -81,7 +81,7 @@ module Pandocomatic
|
|
81
81
|
def create_temp_file()
|
82
82
|
# Concatenate all input files into one (temporary) input file
|
83
83
|
# created in the same directory as the first input file
|
84
|
-
@tmp_file = Tempfile.new(
|
84
|
+
@tmp_file = Tempfile.new("pandocomatic_tmp_", File.dirname(self.absolute_path))
|
85
85
|
|
86
86
|
contents = @input_files.map{|file|
|
87
87
|
@errors.push IOError.new(:file_does_not_exist, nil, file) unless File.exist? file
|
@@ -90,8 +90,10 @@ module Pandocomatic
|
|
90
90
|
File.read File.absolute_path(file)
|
91
91
|
}.join("\n\n")
|
92
92
|
|
93
|
-
|
94
|
-
|
93
|
+
metadata = PandocMetadata.load contents
|
94
|
+
|
95
|
+
if not metadata.unique?
|
96
|
+
warn "\nWarning: Encountered the pandocomatic metadata property in more than one YAML metadata block. Only the pandocomatic property from the first YAML metadata block is being used; the other pandocomatic properties have been discarded.\n\n"
|
95
97
|
end
|
96
98
|
|
97
99
|
@tmp_file.write contents
|
@@ -32,48 +32,12 @@ module Pandocomatic
|
|
32
32
|
# templates and input files.
|
33
33
|
class PandocMetadata < Hash
|
34
34
|
|
35
|
-
# Extract the metadata from an input file
|
36
|
-
#
|
37
|
-
# @param input_document [String] a path to an input file
|
38
|
-
# @return [String] the input document's metadata in the YAML format.
|
39
|
-
def self.extract_metadata(input_document)
|
40
|
-
begin
|
41
|
-
pandoc2yaml File.read(input_document)
|
42
|
-
rescue StandardError => e
|
43
|
-
raise IOError.new(:error_opening_file, e, input_document)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# Remove all metadata from an input string
|
48
|
-
#
|
49
|
-
# @param input [String] the input to remove all metadata from
|
50
|
-
# @return [String] the input with all metadata blocks removed
|
51
|
-
def self.remove_metadata(input)
|
52
|
-
input.gsub(METADATA_BLOCK, "\n");
|
53
|
-
end
|
54
|
-
|
55
35
|
# Extract the YAML metadata from an input string
|
56
36
|
#
|
57
37
|
# @param input [String] the input string
|
58
38
|
# @return [String] the YAML data embedded in the input string
|
59
39
|
def self.pandoc2yaml(input)
|
60
|
-
|
61
|
-
|
62
|
-
mined_metadata
|
63
|
-
.flatten
|
64
|
-
.map{|yaml| yaml.strip}
|
65
|
-
.join("\n")
|
66
|
-
end
|
67
|
-
|
68
|
-
# Does the pandocomatic metadata property occur at most once?
|
69
|
-
#
|
70
|
-
# @return [Boolean] False if the pandocomatic metadata property does
|
71
|
-
# occur multiple times.
|
72
|
-
def self.unique_pandocomatic_property?(input)
|
73
|
-
1 >= input
|
74
|
-
.scan(METADATA_BLOCK)
|
75
|
-
.map {|match| YAML.load "---#{match.join()}..."}
|
76
|
-
.count {|yaml| yaml.key? "pandocomatic_" or yaml.key? "pandocomatic"}
|
40
|
+
extract_metadata(input).first
|
77
41
|
end
|
78
42
|
|
79
43
|
# Collect the metadata embedded in the src file and create a new
|
@@ -83,13 +47,22 @@ module Pandocomatic
|
|
83
47
|
# @return [PandocMetadata] the metadata in the source file, or an empty
|
84
48
|
# one if no such metadata is contained in the source file.
|
85
49
|
def self.load_file(src)
|
86
|
-
|
87
|
-
|
50
|
+
load(File.read src)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Collect the metadata embedded in the src file and create a new
|
54
|
+
# PandocMetadata instance
|
55
|
+
#
|
56
|
+
# @param input [String] the string to load the metadata from
|
57
|
+
# @return [PandocMetadata] the metadata in the source file, or an empty
|
58
|
+
# one if no such metadata is contained in the source file.
|
59
|
+
def self.load(input)
|
60
|
+
yaml, pandocomatic_blocks = extract_metadata(input)
|
88
61
|
|
89
|
-
if
|
62
|
+
if yaml.empty? then
|
90
63
|
PandocMetadata.new
|
91
64
|
else
|
92
|
-
PandocMetadata.new YAML.load(
|
65
|
+
PandocMetadata.new YAML.load(yaml), 1 >= pandocomatic_blocks
|
93
66
|
end
|
94
67
|
end
|
95
68
|
|
@@ -196,6 +169,47 @@ module Pandocomatic
|
|
196
169
|
has_pandocomatic? and pandocomatic.has_key? 'pandoc' and not pandocomatic['pandoc'].nil?
|
197
170
|
end
|
198
171
|
|
172
|
+
private
|
173
|
+
|
174
|
+
# Extract the metadata from an input file
|
175
|
+
#
|
176
|
+
# @param input [String] the string to extract metadata from
|
177
|
+
# @return [Array] The return value is an array with the following two
|
178
|
+
# values:
|
179
|
+
#
|
180
|
+
# 1. The extracted metadata as a YAML string
|
181
|
+
# 2. The number of times the pandocomatic properties did occur in the
|
182
|
+
# input.
|
183
|
+
#
|
184
|
+
# If more than one pandocomatic property is contained in the input,
|
185
|
+
# all but the first are discarded and are not present in the
|
186
|
+
# extracted metadata YAML string.
|
187
|
+
def self.extract_metadata(input)
|
188
|
+
metadata_blocks = input
|
189
|
+
.scan(METADATA_BLOCK)
|
190
|
+
.map {|match| YAML.load "---#{match.join()}..."}
|
191
|
+
|
192
|
+
pandocomatic_blocks = 0
|
193
|
+
|
194
|
+
metadata_blocks = metadata_blocks.each do |metadata|
|
195
|
+
metadata.delete_if do |key|
|
196
|
+
if key == "pandocomatic_" or key == "pandocomatic"
|
197
|
+
pandocomatic_blocks += 1
|
198
|
+
|
199
|
+
1 < pandocomatic_blocks
|
200
|
+
else
|
201
|
+
false
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
yaml_string = metadata_blocks
|
207
|
+
.map {|metadata| YAML.dump(metadata)}
|
208
|
+
.join("\n")
|
209
|
+
|
210
|
+
return [yaml_string, pandocomatic_blocks]
|
211
|
+
end
|
212
|
+
|
199
213
|
end
|
200
214
|
|
201
215
|
end
|
metadata
CHANGED
@@ -1,53 +1,53 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pandocomatic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.5.0.
|
4
|
+
version: 0.2.5.0.betae
|
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: 2019-
|
11
|
+
date: 2019-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paru
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.3.2.0
|
20
17
|
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: 0.3.2
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.3.2.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 0.3.2.0
|
30
27
|
- - "~>"
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: 0.3.2
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.3.2.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: optimist
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: 3.0.0
|
40
|
-
- - "
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 3.0.0
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 3.0.0
|
50
|
-
- - "
|
50
|
+
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 3.0.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
157
157
|
- pandoc, a universal document converer <http://pandoc.org>
|
158
158
|
rubyforge_project:
|
159
|
-
rubygems_version:
|
159
|
+
rubygems_version: 2.7.7
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: Automating the use of pandoc
|