Class: Hackle::Workspace

Inherits:
Object
  • Object
show all
Defined in:
lib/hackle/workspaces/workspace.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(experiments:, event_types:) ⇒ Workspace

Returns a new instance of Workspace.

Parameters:



6
7
8
9
10
11
12
13
# File 'lib/hackle/workspaces/workspace.rb', line 6

def initialize(experiments:, event_types:)

  # @type [Hash{Integer => Experiment}]
  @experiments = experiments

  # @type [Hash{String => EventType}]
  @event_types = event_types
end

Class Method Details

.create(data:) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/hackle/workspaces/workspace.rb', line 36

def create(data:)
  buckets = Hash[data[:buckets].map { |b| [b[:id], bucket(b)] }]
  running_experiments = Hash[data[:experiments].map { |re| [re[:key], running_experiment(re, buckets)] }]
  completed_experiment = Hash[data[:completedExperiments].map { |ce| [ce[:experimentKey], completed_experiment(ce)] }]
  event_types = Hash[data[:events].map { |e| [e[:key], event_type(e)] }]
  experiments = running_experiments.merge(completed_experiment)
  Workspace.new(
    experiments: experiments,
    event_types: event_types
  )
end

Instance Method Details

#get_event_type(event_type_key:) ⇒ EventType

Parameters:

  • event_type_key (String)

Returns:



25
26
27
28
29
30
31
32
33
# File 'lib/hackle/workspaces/workspace.rb', line 25

def get_event_type(event_type_key:)
  event_type = @event_types[event_type_key]

  if event_type.nil?
    EventType.undefined(key: event_type_key)
  else
    event_type
  end
end

#get_experiment(experiment_key:) ⇒ Experiment?

Parameters:

  • experiment_key (Integer)

Returns:



18
19
20
# File 'lib/hackle/workspaces/workspace.rb', line 18

def get_experiment(experiment_key:)
  @experiments[experiment_key]
end