Sha256: bf636d29c8f3af15c2a137a371f2a7c67a249cf21720ae16e50b35513160dd0f

Contents?: true

Size: 818 Bytes

Versions: 6

Compression:

Stored size: 818 Bytes

Contents

require_relative '../repository/command_repository'
require_relative '../support/queue'
require_relative '../support/parser'

module Vedeu
  class Process
    def self.evaluate
      new.evaluate
    end

    def initialize; end

    def evaluate
      return false if no_input?

      fail StopIteration if stop_requested?

      Parser.parse(result) unless no_result?
    end

    private

    def stop_requested?
      result == :stop
    end

    def no_result?
      result.nil? || result.empty?
    end

    def no_input?
      input.nil? || input.empty?
    end

    def result
      @result ||= command.execute(*args) if command
    end

    def command
      @command ||= CommandRepository.by_input(input)
    end

    def input
      @input ||= Queue.dequeue
    end

    def args
      []
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vedeu-0.0.36 lib/vedeu/process/process.rb
vedeu-0.0.35 lib/vedeu/process/process.rb
vedeu-0.0.34 lib/vedeu/process/process.rb
vedeu-0.0.33 lib/vedeu/process/process.rb
vedeu-0.0.32 lib/vedeu/process/process.rb
vedeu-0.0.31 lib/vedeu/process/process.rb