Sha256: 04e3305f9b147ccd5322c17ff7863486f653875fe6da682429a2527dc62589f8

Contents?: true

Size: 742 Bytes

Versions: 3

Compression:

Stored size: 742 Bytes

Contents

require 'ostruct'

module Neo
  module DCI
    class ContextResult
      attr_reader :error, :data

      def success!(data = {})
        self.data = data
      end

      def failure!(error, data = {})
        @error = error
        self.data  = data
      end

      def data= (data)
        raise ArgumentError, "Data is already set. Call success! or failure! only once." if @data
        @data = Data.new(data)
        @data.freeze
      end
      private :data=

      def success?
        processed? && !error
      end

      def failure?
        processed? && !!error
      end

      def processed?
        !!@data
      end

      class Data < OpenStruct
        def to_hash
          @table
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
neo-dci-0.2.0 lib/neo/dci/context_result.rb
neo-dci-0.1.0 lib/neo/dci/context_result.rb
neo-dci-0.0.1 lib/neo/dci/context_result.rb