pandocomatic 0.1.4.10 → 0.1.4.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pandocomatic/command/command.rb +0 -1
  3. data/lib/pandocomatic/command/convert_dir_command.rb +26 -0
  4. data/lib/pandocomatic/command/convert_file_command.rb +12 -0
  5. data/lib/pandocomatic/command/convert_file_multiple_command.rb +15 -19
  6. data/lib/pandocomatic/command/convert_list_command.rb +23 -0
  7. data/lib/pandocomatic/command/copy_file_command.rb +12 -0
  8. data/lib/pandocomatic/command/create_link_command.rb +26 -0
  9. data/lib/pandocomatic/command/skip_command.rb +22 -0
  10. data/lib/pandocomatic/configuration.rb +11 -3
  11. data/lib/pandocomatic/error/cli_error.rb +2 -0
  12. data/lib/pandocomatic/error/configuration_error.rb +2 -0
  13. data/lib/pandocomatic/error/io_error.rb +2 -0
  14. data/lib/pandocomatic/error/pandoc_error.rb +3 -1
  15. data/lib/pandocomatic/error/pandocomatic_error.rb +27 -0
  16. data/lib/pandocomatic/error/processor_error.rb +2 -0
  17. data/lib/pandocomatic/pandocomatic.rb +160 -152
  18. data/lib/pandocomatic/printer/command_printer.rb +2 -0
  19. data/lib/pandocomatic/printer/configuration_errors_printer.rb +2 -0
  20. data/lib/pandocomatic/printer/error_printer.rb +3 -0
  21. data/lib/pandocomatic/printer/finish_printer.rb +6 -1
  22. data/lib/pandocomatic/printer/help_printer.rb +2 -0
  23. data/lib/pandocomatic/printer/printer.rb +29 -17
  24. data/lib/pandocomatic/printer/summary_printer.rb +29 -15
  25. data/lib/pandocomatic/printer/version_printer.rb +2 -0
  26. data/lib/pandocomatic/printer/warning_printer.rb +15 -10
  27. data/lib/pandocomatic/processor.rb +19 -7
  28. data/lib/pandocomatic/processors/fileinfo_preprocessor.rb +26 -24
  29. data/lib/pandocomatic/processors/metadata_preprocessor.rb +17 -16
  30. data/lib/pandocomatic/warning.rb +19 -12
  31. metadata +3 -3
@@ -19,8 +19,12 @@
19
19
  module Pandocomatic
20
20
  require_relative './summary_printer.rb'
21
21
 
22
+ # Printer for the end of the conversion process in non-quiet mode
22
23
  class FinishPrinter < SummaryPrinter
23
- MINUTE = 60 # seconds
24
+ # A minute has 60 seconds
25
+ MINUTE = 60
26
+
27
+ # Create a new FinishPrinter
24
28
  def initialize(command, input, output, start_time)
25
29
  super command, input, output
26
30
  set_template 'finish.txt'
@@ -29,6 +33,7 @@ module Pandocomatic
29
33
  @end_time = Time.now
30
34
  end
31
35
 
36
+ # Calculate the duration of the whole conversion process
32
37
  def duration()
33
38
  seconds = @end_time - @start_time
34
39
  if seconds > MINUTE
@@ -19,7 +19,9 @@
19
19
  module Pandocomatic
20
20
  require_relative './printer.rb'
21
21
 
22
+ # Printer for pandocomatic's help
22
23
  class HelpPrinter < Printer
24
+ # Create a new HelpPrinter
23
25
  def initialize()
24
26
  super 'help.txt'
25
27
  end
@@ -17,27 +17,39 @@
17
17
  # with pandocomatic. If not, see <http://www.gnu.org/licenses/>.
18
18
  #++
19
19
  module Pandocomatic
20
- require 'erb'
20
+ require 'erb'
21
21
 
22
- class Printer
22
+ # Printer base class for printing information from pandocomatic
23
+ class Printer
23
24
 
24
- def initialize(template_file = 'help.txt')
25
- set_template template_file
26
- end
25
+ # Create a new Printer
26
+ #
27
+ # @param template_file [String = 'help.txt'] the template to use when
28
+ # printing.
29
+ def initialize(template_file = 'help.txt')
30
+ set_template template_file
31
+ end
27
32
 
28
- def set_template(template_file)
29
- dir = File.dirname(__FILE__)
30
- @template = File.absolute_path(File.join(dir, 'views', template_file))
31
- end
33
+ # Set the template used by this Printer
34
+ #
35
+ # @param template_file [String] the template to use
36
+ def set_template(template_file)
37
+ dir = File.dirname(__FILE__)
38
+ @template = File.absolute_path(File.join(dir, 'views', template_file))
39
+ end
32
40
 
33
- def to_s()
34
- erb = ERB.new(File.read(@template), 0, '>')
35
- erb.result(binding())
36
- end
41
+ # Create a string based on this printer's template
42
+ #
43
+ # @return [String]
44
+ def to_s()
45
+ erb = ERB.new(File.read(@template), 0, '>')
46
+ erb.result(binding())
47
+ end
37
48
 
38
- def print()
39
- puts to_s()
40
- end
49
+ # Print to STDOUT
50
+ def print()
51
+ puts to_s()
52
+ end
41
53
 
42
- end
54
+ end
43
55
  end
@@ -17,23 +17,37 @@
17
17
  # with pandocomatic. If not, see <http://www.gnu.org/licenses/>.
18
18
  #++
19
19
  module Pandocomatic
20
- require_relative './printer.rb'
20
+ require_relative './printer.rb'
21
21
 
22
- class SummaryPrinter < Printer
23
- def initialize(command, input, output)
24
- super 'summary.txt'
25
- @command = command
26
- @input = input
27
- @output = output
28
- end
22
+ # Printer for printing a summary of the conversion process in non-quiet mode
23
+ class SummaryPrinter < Printer
29
24
 
30
- def commands()
31
- "#{@command.count} command#{'s' if @command.count != 1}"
32
- end
25
+ # Create a new SummaryPrinter
26
+ #
27
+ # @param command [Command] the command to summarize
28
+ # @param input [String] the filename of the input file
29
+ # @param output [String] the filename of the output file
30
+ def initialize(command, input, output)
31
+ super 'summary.txt'
32
+ @command = command
33
+ @input = input
34
+ @output = output
35
+ end
33
36
 
34
- def has_output?()
35
- not @output.nil? and not @output.empty?
36
- end
37
+ # A string representation of the commands being executed
38
+ #
39
+ # @return [String]
40
+ def commands()
41
+ "#{@command.count} command#{'s' if @command.count != 1}"
42
+ end
37
43
 
38
- end
44
+ # Is there an output file?
45
+ #
46
+ # @return [Boolean] True if there is an output defined in this
47
+ # SummaryPrinter, false otherwise
48
+ def has_output?()
49
+ not @output.nil? and not @output.empty?
50
+ end
51
+
52
+ end
39
53
  end
@@ -19,8 +19,10 @@
19
19
  module Pandocomatic
20
20
  require_relative './printer.rb'
21
21
 
22
+ # Printer to print pandocomatic's version
22
23
  class VersionPrinter < Printer
23
24
 
25
+ # Create a new VersionPrinter
24
26
  def initialize version
25
27
  super 'version.txt'
26
28
  @version = version
@@ -17,17 +17,22 @@
17
17
  # with pandocomatic. If not, see <http://www.gnu.org/licenses/>.
18
18
  #++
19
19
  module Pandocomatic
20
- require_relative './printer.rb'
20
+ require_relative './printer.rb'
21
21
 
22
- class WarningPrinter < Printer
23
- def initialize(warning)
24
- template = 'warning.txt'
25
- super template
26
- @warning = warning
27
- end
22
+ # Printer for warnings
23
+ class WarningPrinter < Printer
24
+ # Create a new WarningPrinter
25
+ #
26
+ # @param warning [Warning] the warning to print
27
+ def initialize(warning)
28
+ template = 'warning.txt'
29
+ super template
30
+ @warning = warning
31
+ end
28
32
 
29
- def print
30
- warn to_s
33
+ # Print warnings to STDERR rather than STDOUT
34
+ def print
35
+ warn to_s
36
+ end
31
37
  end
32
- end
33
38
  end
@@ -17,14 +17,26 @@
17
17
  # with pandocomatic. If not, see <http://www.gnu.org/licenses/>.
18
18
  #++
19
19
  module Pandocomatic
20
- require 'open3'
20
+ require 'open3'
21
21
 
22
- class Processor
22
+ # Generic class for processors used to preprocess, postproces, setup, and
23
+ # cleanup with external scripts or programs during the conversion process.
24
+ #
25
+ # For preprocessors and postprocessors it is assumed that the input is the
26
+ # contents of the file to convert and the output the processed input. In
27
+ # the end, the output will be put through pandoc.
28
+ class Processor
23
29
 
24
- def self.run script, input
25
- output, _ = Open3.capture2(script, :stdin_data => input)
26
- output
27
- end
30
+ # Run script on input and return captured output
31
+ #
32
+ # @param script [String] path to script to run
33
+ # @param input [String] input to process in the script
34
+ #
35
+ # @return [String] output of script.
36
+ def self.run script, input
37
+ output, _ = Open3.capture2(script, :stdin_data => input)
38
+ output
39
+ end
28
40
 
29
- end
41
+ end
30
42
  end
@@ -18,30 +18,32 @@
18
18
  #++
19
19
  module Pandocomatic
20
20
 
21
- require_relative '../processor.rb'
21
+ require_relative '../processor.rb'
22
22
 
23
- # FileInfoPreprocessor collects information about a file to be converted and
24
- # mixes that information into that file's metadata. It is a default
25
- # preprocessor.
26
- #
27
- # @param input [String] the contents of the document being preprocessed
28
- # @param path [String] the path to the input document
29
- # @param options [Hash] pandoc options collected by pandocomatic to run on
30
- # this file
31
- class FileInfoPreprocessor < Processor
32
- def self.run input, path, options
33
- created_at = File.stat(path).ctime
34
- modified_at = File.stat(path).mtime
35
- output = input
36
- output << "\n\n---\n"
37
- output << "pandocomatic-fileinfo:\n"
38
- output << " from: #{options['from']}\n" if options.has_key? 'from'
39
- output << " to: #{options['to']}\n" if options.has_key? 'to'
40
- output << " template: #{options['template']}\n" if options.has_key? 'template'
41
- output << " path: '#{path}'\n"
42
- output << " created: #{created_at.strftime '%Y-%m-%d'}\n"
43
- output << " modified: #{modified_at.strftime '%Y-%m-%d'}\n"
44
- output << "...\n\n"
23
+ # FileInfoPreprocessor collects information about a file to be converted and
24
+ # mixes that information into that file's metadata. It is a default
25
+ # preprocessor.
26
+ #
27
+ class FileInfoPreprocessor < Processor
28
+ # Run this FileInfoPreprocessor
29
+ #
30
+ # @param input [String] the contents of the document being preprocessed
31
+ # @param path [String] the path to the input document
32
+ # @param options [Hash] pandoc options collected by pandocomatic to run on
33
+ # this file
34
+ def self.run input, path, options
35
+ created_at = File.stat(path).ctime
36
+ modified_at = File.stat(path).mtime
37
+ output = input
38
+ output << "\n\n---\n"
39
+ output << "pandocomatic-fileinfo:\n"
40
+ output << " from: #{options['from']}\n" if options.has_key? 'from'
41
+ output << " to: #{options['to']}\n" if options.has_key? 'to'
42
+ output << " template: #{options['template']}\n" if options.has_key? 'template'
43
+ output << " path: '#{path}'\n"
44
+ output << " created: #{created_at.strftime '%Y-%m-%d'}\n"
45
+ output << " modified: #{modified_at.strftime '%Y-%m-%d'}\n"
46
+ output << "...\n\n"
47
+ end
45
48
  end
46
- end
47
49
  end
@@ -18,22 +18,23 @@
18
18
  #++
19
19
  module Pandocomatic
20
20
 
21
- require 'yaml'
22
- require_relative '../processor.rb'
21
+ require 'yaml'
22
+ require_relative '../processor.rb'
23
23
 
24
- # MetadataPreprocessor mixes in the metadata section of a template into a
25
- # document before pandoc is run to convert that document. It is a default
26
- # preprocessor.
27
- #
28
- # @param input [String] the contents of the document that is being
29
- # preprocessed
30
- # @param metadata [Hash = {}] the metadata to mix-in
31
- class MetadataPreprocessor < Processor
32
- def self.run input, metadata = {}
33
- output = input
34
- output << "\n\n"
35
- output << YAML.dump(metadata)
36
- output << "...\n\n"
24
+ # MetadataPreprocessor mixes in the metadata section of a template into a
25
+ # document before pandoc is run to convert that document. It is a default
26
+ # preprocessor.
27
+ class MetadataPreprocessor < Processor
28
+ # Run this MetadataPreprocessor
29
+ #
30
+ # @param input [String] the contents of the document that is being
31
+ # preprocessed
32
+ # @param metadata [Hash = {}] the metadata to mix-in
33
+ def self.run input, metadata = {}
34
+ output = input
35
+ output << "\n\n"
36
+ output << YAML.dump(metadata)
37
+ output << "...\n\n"
38
+ end
37
39
  end
38
- end
39
40
  end
@@ -17,20 +17,27 @@
17
17
  # with pandocomatic. If not, see <http://www.gnu.org/licenses/>.
18
18
  #++
19
19
  module Pandocomatic
20
-
21
- class Warning
22
20
 
23
- # :skipping_link_because_it_points_outside_the_source_tree
24
-
25
- def initialize(message = :unknown, data = nil)
26
- @message = message
27
- @data = data
28
- end
21
+ # A warning given during the conversion process.
22
+ class Warning
29
23
 
30
- def has_data?
31
- not @data.nil?
32
- end
24
+ # :skipping_link_because_it_points_outside_the_source_tree
25
+
26
+ # Create a new Warning with message and some extra data
27
+ #
28
+ # @param message [Symbol = :unknown] the message translation key.
29
+ # @param data [Object = nil] optional data attached to the message.
30
+ def initialize(message = :unknown, data = nil)
31
+ @message = message
32
+ @data = data
33
+ end
33
34
 
34
- end
35
+ # Does this Warning have any data associated with it?
36
+ #
37
+ # @return [Boolean] True if there is data attached, false otherwise.
38
+ def has_data?
39
+ not @data.nil?
40
+ end
35
41
 
42
+ end
36
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pandocomatic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4.10
4
+ version: 0.1.4.11
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-07-15 00:00:00.000000000 Z
11
+ date: 2017-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paru
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  requirements:
154
154
  - pandoc, a universal document converer <http://pandoc.org>
155
155
  rubyforge_project:
156
- rubygems_version: 2.6.11
156
+ rubygems_version: 2.5.2
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: Automating the use of pandoc