Class: AsciiDataTools::Controller::EditController

Inherits:
AbstractController show all
Includes:
ExternalPrograms, Filter
Defined in:
lib/ascii-data-tools/controller.rb

Instance Method Summary collapse

Methods included from ExternalPrograms

#diff, #diff_command_for, #edit_differences, #modify_file_mtime_to, #sort

Methods inherited from AbstractController

#initialize, #type_determiner

Constructor Details

This class inherits a constructor from AsciiDataTools::Controller::AbstractController

Instance Method Details

#runObject



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/ascii-data-tools/controller.rb', line 50

def run
  editor = Editor.new(&@configuration.editor)
  formatting_filter = FormattingFilter.new(input_source.filename, type_determiner)
  formatting_filter << input_source
  
  formatting_filter.write(editor[0])
  editor.edit
  
  if not editor.changed?(0)        
    @configuration.user_feedback_stream.puts "The file is unmodified."
  else
    encoding_filter = Filter::Filter.new {|record| record.encode }
    parsing_filter = ParsingFilter.new(@configuration.record_types)
    encoding_filter << (parsing_filter << InputSource.new(nil, editor[0].open))
    encoding_filter.write(output_stream)
  end
end