pandocomatic 0.2.6 → 0.2.7.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6777ab9ccebbe75dff8b2e818b9092604517db7039035a11612f2cc93dd5ad81
|
4
|
+
data.tar.gz: eae1fffb172cecd76b805cc1b59e72546a4950d2689356d36bacca0dcd67618f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4b1ff0b99853e723c9f8cdda7d4340e81cf2bc649864e35544a596e4d4d8370507b6a1737e64b754cc77a31f2150759734671a336543b05af07fccb86a1831a
|
7
|
+
data.tar.gz: 84320c981c1100d36ac44c575358439899e612652fc82b22e1af3154d7d11e92a23bbbb97759a609c53092898bdf06932ede70a6ae6c275a460bbdf4cc121cce
|
data/lib/pandocomatic/cli.rb
CHANGED
@@ -66,7 +66,10 @@ module Pandocomatic
|
|
66
66
|
opt :output, 'Output', :short => '-o', :type => String
|
67
67
|
opt :input, 'Input', :short => '-i', :type => String, :multi => true
|
68
68
|
|
69
|
-
#
|
69
|
+
# Experimental
|
70
|
+
opt :root_path, 'Root path', :short => '-r', :type => String
|
71
|
+
|
72
|
+
# Common
|
70
73
|
opt :show_version, 'Version', :short => '-v', :long => 'version'
|
71
74
|
opt :show_help, 'Help', :short => '-h', :long => 'help'
|
72
75
|
end
|
@@ -122,6 +125,10 @@ module Pandocomatic
|
|
122
125
|
raise CLIError.new(:no_output_given) if not multiple_inputs and File.directory? input.first
|
123
126
|
end
|
124
127
|
|
128
|
+
if options[:root_path_given]
|
129
|
+
options[:root_path] = File.absolute_path options[:root_path]
|
130
|
+
end
|
131
|
+
|
125
132
|
# Data dir, if specified, should be an existing and readable directory
|
126
133
|
if options[:data_dir_given]
|
127
134
|
data_dir = File.absolute_path options[:data_dir]
|
@@ -109,6 +109,11 @@ module Pandocomatic
|
|
109
109
|
|
110
110
|
pandoc_options = Configuration.extend_value(pandoc_options, template['pandoc'])
|
111
111
|
end
|
112
|
+
|
113
|
+
# Write out the results of the conversion process to file.
|
114
|
+
if @dst.to_s.empty? and @metadata.pandoc_options.has_key? 'output'
|
115
|
+
@dst = @metadata.pandoc_options['output']
|
116
|
+
end
|
112
117
|
|
113
118
|
template = Configuration.extend_value(@metadata.pandocomatic, template) if @metadata.has_pandocomatic?
|
114
119
|
|
@@ -130,11 +135,6 @@ module Pandocomatic
|
|
130
135
|
input = pandoc input, pandoc_options, File.dirname(@src)
|
131
136
|
output = postprocess input, template
|
132
137
|
|
133
|
-
# Write out the results of the conversion process to file.
|
134
|
-
if @dst.to_s.empty? and @metadata.pandoc_options.has_key? 'output'
|
135
|
-
@dst = @metadata.pandoc_options['output']
|
136
|
-
end
|
137
|
-
|
138
138
|
begin
|
139
139
|
unless use_output_option @dst then
|
140
140
|
File.open(@dst, 'w') do |file|
|
@@ -187,9 +187,9 @@ module Pandocomatic
|
|
187
187
|
if PANDOC_OPTIONS_WITH_PATH.include? option
|
188
188
|
is_executable = option == "filter"
|
189
189
|
if value.is_a? Array
|
190
|
-
value = value.map {|v| @config.update_path(v, src_dir, is_executable)}
|
190
|
+
value = value.map {|v| @config.update_path(v, src_dir, absolute_dst, is_executable)}
|
191
191
|
else
|
192
|
-
value = @config.update_path(value, src_dir, is_executable)
|
192
|
+
value = @config.update_path(value, src_dir, @dst, is_executable)
|
193
193
|
end
|
194
194
|
end
|
195
195
|
|
@@ -264,10 +264,10 @@ module Pandocomatic
|
|
264
264
|
processors = config[type]
|
265
265
|
output = input
|
266
266
|
processors.each do |processor|
|
267
|
-
script = if @config.is_local_path processor
|
267
|
+
script = if @config.is_local_path? processor
|
268
268
|
processor
|
269
269
|
else
|
270
|
-
@config.update_path(processor, File.dirname(@src), true)
|
270
|
+
@config.update_path(processor, File.dirname(@src), @dst, true)
|
271
271
|
end
|
272
272
|
|
273
273
|
command, *parameters = script.shellsplit # split on spaces unless it is preceded by a backslash
|
@@ -58,6 +58,10 @@ module Pandocomatic
|
|
58
58
|
's5' => 'html'
|
59
59
|
}
|
60
60
|
|
61
|
+
# Indicator for paths that should be treated as "relative to the root
|
62
|
+
# path". These paths start with this ROOT_PATH_INDICATOR.
|
63
|
+
ROOT_PATH_INDICATOR = "$ROOT$"
|
64
|
+
|
61
65
|
# A Configuration object models a pandocomatic configuration.
|
62
66
|
class Configuration
|
63
67
|
|
@@ -90,6 +94,8 @@ module Pandocomatic
|
|
90
94
|
nil
|
91
95
|
end
|
92
96
|
|
97
|
+
@root_path = determine_root_path options
|
98
|
+
|
93
99
|
# Extend the command classes by setting the source tree root
|
94
100
|
# directory, and the options quiet and dry-run, which are used when
|
95
101
|
# executing a command: if dry-run the command is not actually
|
@@ -231,6 +237,13 @@ module Pandocomatic
|
|
231
237
|
@options[:data_dir_given]
|
232
238
|
end
|
233
239
|
|
240
|
+
# Is the root path CLI option given?
|
241
|
+
#
|
242
|
+
# @return [Boolean]
|
243
|
+
def root_path?()
|
244
|
+
@options[:root_path_given]
|
245
|
+
end
|
246
|
+
|
234
247
|
# Is the config CLI option given?
|
235
248
|
#
|
236
249
|
# @return [Boolean]
|
@@ -528,29 +541,30 @@ module Pandocomatic
|
|
528
541
|
# @param path [String] path to the executable
|
529
542
|
# @param src_dir [String] the source directory from which pandocomatic
|
530
543
|
# conversion process has been started
|
531
|
-
# @param
|
544
|
+
# @param dst [String] the destination path
|
545
|
+
# @param check_executable [Boolean = false] Should the executable be
|
532
546
|
# verified to be executable? Defaults to false.
|
533
547
|
#
|
534
548
|
# @return [String] the updated path.
|
535
|
-
def update_path(path, src_dir, check_executable = false, output = false)
|
549
|
+
def update_path(path, src_dir, dst = "", check_executable = false, output = false)
|
536
550
|
updated_path = path
|
537
551
|
|
538
|
-
if is_local_path path
|
552
|
+
if is_local_path? path
|
539
553
|
# refers to a local dir; strip the './' before appending it to
|
540
554
|
# the source directory as to prevent /some/path/./to/path
|
541
555
|
updated_path = path[2..-1]
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
556
|
+
elsif is_absolute_path? path
|
557
|
+
updated_path = path
|
558
|
+
elsif is_root_relative_path? path
|
559
|
+
updated_path = make_path_root_relative path, dst, @root_path
|
560
|
+
else
|
561
|
+
if check_executable
|
562
|
+
updated_path = Configuration.which path
|
563
|
+
end
|
549
564
|
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
end
|
565
|
+
if updated_path.nil? or not check_executable then
|
566
|
+
# refers to data-dir
|
567
|
+
updated_path = File.join @data_dir, path
|
554
568
|
end
|
555
569
|
end
|
556
570
|
|
@@ -643,7 +657,7 @@ module Pandocomatic
|
|
643
657
|
end
|
644
658
|
end
|
645
659
|
|
646
|
-
def is_local_path(path)
|
660
|
+
def is_local_path?(path)
|
647
661
|
if Gem.win_platform? then
|
648
662
|
path.match("^\\.\\\\\.*$")
|
649
663
|
else
|
@@ -818,7 +832,7 @@ module Pandocomatic
|
|
818
832
|
end
|
819
833
|
|
820
834
|
|
821
|
-
def is_absolute_path(path)
|
835
|
+
def is_absolute_path?(path)
|
822
836
|
if Gem.win_platform? then
|
823
837
|
path.match("^[a-zA-Z]:\\\\\.*$")
|
824
838
|
else
|
@@ -826,6 +840,44 @@ module Pandocomatic
|
|
826
840
|
end
|
827
841
|
end
|
828
842
|
|
843
|
+
def is_root_relative_path?(path)
|
844
|
+
path.start_with? ROOT_PATH_INDICATOR
|
845
|
+
end
|
846
|
+
|
847
|
+
def make_path_root_relative(path, dst, root)
|
848
|
+
# Find how to get to the root directopry from dst directory.
|
849
|
+
# Assumption is that dst is a subdirectory of root.
|
850
|
+
dst_dir = File.dirname(File.absolute_path(dst))
|
851
|
+
|
852
|
+
path.delete_prefix! ROOT_PATH_INDICATOR if is_root_relative_path? path
|
853
|
+
|
854
|
+
if File.realpath("#{dst_dir}").start_with? File.realpath(root) then
|
855
|
+
rel_start = ""
|
856
|
+
|
857
|
+
until File.identical?(File.realpath("#{dst_dir}/#{rel_start}"), File.realpath(root)) do
|
858
|
+
# invariant dst_dir/rel_start <= root
|
859
|
+
rel_start += "../"
|
860
|
+
end
|
861
|
+
|
862
|
+
if rel_start.end_with? "/" and path.start_with? "/" then
|
863
|
+
"#{rel_start}#{path.delete_prefix("/")}"
|
864
|
+
else
|
865
|
+
"#{rel_start}#{path}"
|
866
|
+
end
|
867
|
+
else
|
868
|
+
# Because the destination is not in a subdirectory of root, a
|
869
|
+
# relative path to that root cannot be created. Instead,
|
870
|
+
# the path is assumed to be absolute relative to root
|
871
|
+
if root.end_with? "/" or path.start_with? "/"
|
872
|
+
"#{root}#{path}"
|
873
|
+
else
|
874
|
+
"#{root}/#{path}"
|
875
|
+
end
|
876
|
+
end
|
877
|
+
|
878
|
+
|
879
|
+
end
|
880
|
+
|
829
881
|
def determine_config_file(options, data_dir = Dir.pwd)
|
830
882
|
config_file = ''
|
831
883
|
|
@@ -884,5 +936,15 @@ module Pandocomatic
|
|
884
936
|
|
885
937
|
path
|
886
938
|
end
|
939
|
+
|
940
|
+
def determine_root_path(options)
|
941
|
+
if options[:root_path_given] then
|
942
|
+
options[:root_path]
|
943
|
+
elsif options[:output_given] then
|
944
|
+
File.absolute_path(File.dirname options[:output])
|
945
|
+
else
|
946
|
+
File.absolute_path "."
|
947
|
+
end
|
948
|
+
end
|
887
949
|
end
|
888
950
|
end
|
@@ -25,6 +25,9 @@ DESCRIPTION
|
|
25
25
|
|
26
26
|
OPTIONS
|
27
27
|
|
28
|
+
|
29
|
+
Required:
|
30
|
+
|
28
31
|
-i PATH, --input PATH
|
29
32
|
Convert PATH. If this option is not given, INPUT is
|
30
33
|
converted. INPUT and --input cannot be used together.
|
@@ -36,7 +39,8 @@ OPTIONS
|
|
36
39
|
-o PATH, --output PATH
|
37
40
|
Create converted files and directories in PATH.
|
38
41
|
|
39
|
-
|
42
|
+
|
43
|
+
Optional:
|
40
44
|
|
41
45
|
-d PATH, --data-dir PATH
|
42
46
|
Configure pandocomatic to use PATH as its data directory.
|
@@ -99,6 +103,18 @@ OPTIONS
|
|
99
103
|
|
100
104
|
-y, --dry-run Configure pandocomatic to run the conversion process, but do
|
101
105
|
not actually run it. Default is FALSE.
|
106
|
+
|
107
|
+
|
108
|
+
Experimental:
|
109
|
+
|
110
|
+
-r PATH, --root-path PATH
|
111
|
+
Set the root path to use with paths that are specified as
|
112
|
+
relative to that root path. It is used mostly with the
|
113
|
+
--css pandoc option. It defaults to the directory of the
|
114
|
+
specified output.
|
115
|
+
|
116
|
+
|
117
|
+
Common:
|
102
118
|
|
103
119
|
-v, --version Show the version. If this option is used, all other options
|
104
120
|
are ignored.
|
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.
|
4
|
+
version: 0.2.7.0
|
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:
|
11
|
+
date: 2020-05-06 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.4.0
|
20
17
|
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: '0.4'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.4.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.4.0
|
30
27
|
- - "~>"
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: '0.4'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 0.4.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
|
@@ -147,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
147
|
requirements:
|
148
148
|
- - ">="
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version: 2.
|
150
|
+
version: '2.5'
|
151
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
152
|
requirements:
|
153
153
|
- - ">="
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
157
157
|
- pandoc, a universal document converter
|
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: Automate the use of pandoc
|