Class: SeeingIsBelieving::EvaluateByMovingFiles

Inherits:
Object
  • Object
show all
Defined in:
lib/seeing_is_believing/evaluate_by_moving_files.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(program, file_path, options = {}) ⇒ EvaluateByMovingFiles

Returns a new instance of EvaluateByMovingFiles.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 35

def initialize(program, file_path,  options={})
  options = options.dup
  self.program           = program
  self.encoding          = options.delete(:encoding)           || "u"
  self.timeout_seconds   = options.delete(:timeout_seconds)    || 0 # 0 is the new infinity
  self.provided_input    = options.delete(:provided_input)     || String.new
  self.event_handler     = options.delete(:event_handler)      || raise(ArgumentError, "must provide an :event_handler")
  self.load_path_flags   = (options.delete(:load_path_dirs)    || []).map { |dir| ['-I', dir] }.flatten
  self.require_flags     = (options.delete(:require_files)     || ['seeing_is_believing/the_matrix']).map { |filename| ['-r', filename] }.flatten
  self.max_line_captures = (options.delete(:max_line_captures) || Float::INFINITY) # (optimization: child stops producing results at this number, even though it might make more sense for the consumer to stop emitting them)
  self.local_cwd         = options.delete(:local_cwd)          || false
  self.file_path         = file_path
  self.file_directory    = File.dirname file_path
  file_name              = File.basename file_path
  self.relative_filename = local_cwd ? file_name : file_path
  self.backup_filename   = File.join file_directory, "seeing_is_believing_backup.#{file_name}"

  options.any? && raise(ArgumentError, "Unknown options: #{options.inspect}")
end

Instance Attribute Details

#backup_filenameObject

Returns the value of attribute backup_filename.



33
34
35
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 33

def backup_filename
  @backup_filename
end

#debuggerObject

Returns the value of attribute debugger.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def debugger
  @debugger
end

#encodingObject

Returns the value of attribute encoding.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def encoding
  @encoding
end

#event_handlerObject

Returns the value of attribute event_handler.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def event_handler
  @event_handler
end

#file_directoryObject

Returns the value of attribute file_directory.



33
34
35
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 33

def file_directory
  @file_directory
end

#file_pathObject

Returns the value of attribute file_path.



33
34
35
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 33

def file_path
  @file_path
end

#load_path_flagsObject

Returns the value of attribute load_path_flags.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def load_path_flags
  @load_path_flags
end

#local_cwdObject

Returns the value of attribute local_cwd.



33
34
35
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 33

def local_cwd
  @local_cwd
end

#max_line_capturesObject

Returns the value of attribute max_line_captures.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def max_line_captures
  @max_line_captures
end

#programObject

Returns the value of attribute program.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def program
  @program
end

#provided_inputObject

Returns the value of attribute provided_input.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def provided_input
  @provided_input
end

#relative_filenameObject

Returns the value of attribute relative_filename.



33
34
35
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 33

def relative_filename
  @relative_filename
end

#require_flagsObject

Returns the value of attribute require_flags.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def require_flags
  @require_flags
end

#timeout_secondsObject

Returns the value of attribute timeout_seconds.



31
32
33
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 31

def timeout_seconds
  @timeout_seconds
end

Class Method Details

.call(*args) ⇒ Object



27
28
29
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 27

def self.call(*args)
  new(*args).call
end

Instance Method Details

#callObject



55
56
57
58
59
60
# File 'lib/seeing_is_believing/evaluate_by_moving_files.rb', line 55

def call
  BackupFile.call file_path, backup_filename do
    write_program_to_file
    evaluate_file
  end
end