module MnConvert

Constants

MNCONVERT_JAR_PATH
MNCONVERT_JAR_VERSION
VERSION

Public Class Methods

convert(input_file, output_file, input_format, opts = {}) click to toggle source
# File lib/mnconvert.rb, line 34
def self.convert(input_file, output_file, input_format, opts = {})
  validate(opts, input_format)

  cmd = ["java", *jvm_options, "-jar", MNCONVERT_JAR_PATH,
         input_file, "--input-format", input_format,
         "--output", output_file, *optional_opts(opts)].join(" ")

  puts cmd if opts[:debug]
  output_str, error_str, status = Open3.capture3(cmd)
  p output_str if opts[:debug]

  unless status.success?
    raise error_str
  end
end
help() click to toggle source
# File lib/mnconvert.rb, line 22
def self.help
  cmd = ["java", *jvm_options, "-jar", MNCONVERT_JAR_PATH].join(" ")
  message, = Open3.capture3(cmd)
  message
end
jvm_options() click to toggle source
# File lib/mnconvert.rb, line 12
def self.jvm_options
  options = ["-Xss5m", "-Xmx1024m"]

  if RbConfig::CONFIG["host_os"].match?(/darwin|mac os/)
    options << "-Dapple.awt.UIElement=true"
  end

  options
end
version() click to toggle source
# File lib/mnconvert.rb, line 28
def self.version
  cmd = ["java", *jvm_options, "-jar", MNCONVERT_JAR_PATH, "-v"].join(" ")
  message, = Open3.capture3(cmd)
  message.strip
end

Private Class Methods

optional_opts(opts) click to toggle source
# File lib/mnconvert.rb, line 86
def optional_opts(opts)
  result = {
    sts_type: "--type",
    imagesdir: "--imagesdir",
    check_type: "--check-type",
    output_format: "--output-format",
    xsl_file: "--xsl-file",
  }.reject { |k, _| opts[k].nil? }.map { |k, v| "#{v} #{opts[k]}" }

  result << "--debug" if opts[:debug]
  result << "--split-bibdata" if opts[:split_bibdata]

  result
end
validate(opts, input_format) click to toggle source
# File lib/mnconvert.rb, line 53
def validate(opts, input_format)
  output_format = opts[:output_format]

  case input_format
  when InputFormat::MN
    validate_mn(opts, output_format)
  when InputFormat::STS
    validate_sts(opts, output_format)
  else
    raise StandardError.new("Invalid input format: #{input_format}")
  end
end
validate_mn(opts, output_format) click to toggle source
# File lib/mnconvert.rb, line 66
def validate_mn(opts, output_format)
  unless output_format.nil? || %w(iso niso).include?(output_format.to_s)
    raise StandardError.new("Invalid output format: #{output_format}")
  end

  if opts[:split_bibdata]
    raise StandardError.new("split_bibdata valid only for sts input")
  end

  if opts[:sts_type]
    raise StandardError.new("sts_type valid only for sts input")
  end
end
validate_sts(_opts, output_format) click to toggle source
# File lib/mnconvert.rb, line 80
def validate_sts(_opts, output_format)
  unless output_format.nil? || %w(xml adoc).include?(output_format.to_s)
    raise StandardError.new("Invalid output format: #{output_format}")
  end
end