pandocomatic 0.1.4.10 → 0.1.4.11

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.
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