module Fileconv::Base

Public Instance Methods

conv(**opts) click to toggle source

Run file conversion

# File lib/fileconv/base.rb, line 192
def conv(**opts)
  @meta = {}
  @opts = opts
  @opts[:read_file_opts] ||= {}
  @opts[:write_file_opts] ||= {}

  pre_init_conv()
  init_conv()
  post_init_conv()

  glob = input_ext ?  "*." + input_ext : "*"
  files = Dir.glob(::File.join(input_dir, glob))
  files = pre_input_files(files)
  files = input_files(files)
  files = post_input_files(files)

  files.each do |filename|
    process_file(filename)
  end

  pre_conv_result
  result = conv_result
  post_result = post_conv_result(result)
  if post_result
    Dir.mkdir output_dir if !Dir.exists? output_dir
    ::File.write(::File.join(output_dir, result_filename), post_result, @opts[:write_file_opts])
  end
end

Private Instance Methods

process_file(filename) click to toggle source
# File lib/fileconv/base.rb, line 149
def process_file(filename)
  if FileTest.directory? filename
    return
  end

  acc = {orig_filename: filename}
  pre_init_acc(acc)
  init_acc(acc)
  post_init_acc(acc)

  raw = nil
  unless @opts[:disable_read_file]
    raw = read_file(filename, acc)
    raw = ::File.read(filename, @opts[:read_file_opts]) unless raw
  end

  converted_file = pre_convert_file(raw, acc)
  if @opts[:line_mode]
    # Line mode
    converted_file = process_line(converted_file, acc)
  end

  converted_file = convert_file(converted_file, acc)
  converted_file = post_convert_file(converted_file, acc)
  if converted_file
    out = output_filename(::File.basename(filename), acc)
    Dir.mkdir output_dir if !Dir.exists? output_dir
    ::File.write(::File.join(output_dir, out), converted_file, @opts[:read_file_opts])
  end
end
process_line(raw_lines, acc) click to toggle source
# File lib/fileconv/base.rb, line 180
def process_line(raw_lines, acc)
  lines = []
  raw_lines.each do |line|
    converted_line = pre_convert_line(line, acc)
    converted_line = convert_line(converted_line, acc)
    converted_line = post_convert_line(converted_line, acc)
    lines.push *converted_line
  end
  lines
end