Sha256: 4c72a868aadb06f98470e6c2af66bacb2d36094a9e6c8af62ee82778e0d7ded3

Contents?: true

Size: 1 KB

Versions: 4

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

module DevSuite
  module Workflow
    class StepContext
      attr_reader :data, :store

      def initialize(data = {}, **options)
        @data = data
        @store = create_store(options)
      end

      # Update the context with new data
      def update(new_data)
        unless new_data.is_a?(Hash) || new_data.is_a?(Array)
          raise ArgumentError, "New data must be a Hash"
        end

        Utils::Data.deep_merge!(@data, new_data)
      end

      # Set data by key
      def set(key, value)
        Utils::Data.set_value_by_path(@data, key, value)
      end

      # Retrieve data by key
      def get(key)
        Utils::Data.get_value_by_path(@data, key)
      end

      # Clear the context data
      def clear
        @data.clear # Reset the context data
      end

      private

      def create_store(options)
        driver = options[:driver] || :file
        path = options[:path]
        Utils::Store.create(driver: driver, path: path)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dev_suite-0.2.13 lib/dev_suite/workflow/step_context.rb
dev_suite-0.2.12 lib/dev_suite/workflow/step_context.rb
dev_suite-0.2.11 lib/dev_suite/workflow/step_context.rb
dev_suite-0.2.10 lib/dev_suite/workflow/step_context.rb