Class: Sciosano::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/sciosano/context.rb

Overview

Context holds user, tags, and extra data for reports

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeContext

Returns a new instance of Context.



8
9
10
11
12
13
# File 'lib/sciosano/context.rb', line 8

def initialize
  @user = nil
  @tags = {}
  @extra = {}
  @request = nil
end

Instance Attribute Details

#extraObject

Returns the value of attribute extra.



6
7
8
# File 'lib/sciosano/context.rb', line 6

def extra
  @extra
end

#requestObject

Returns the value of attribute request.



6
7
8
# File 'lib/sciosano/context.rb', line 6

def request
  @request
end

#tagsObject

Returns the value of attribute tags.



6
7
8
# File 'lib/sciosano/context.rb', line 6

def tags
  @tags
end

#userObject

Returns the value of attribute user.



6
7
8
# File 'lib/sciosano/context.rb', line 6

def user
  @user
end

Instance Method Details

#dupContext

Duplicate context

Returns:



46
47
48
49
50
51
52
53
# File 'lib/sciosano/context.rb', line 46

def dup
  new_context = Context.new
  new_context.user = @user&.dup
  new_context.tags = @tags.dup
  new_context.extra = @extra.dup
  new_context.request = @request&.dup
  new_context
end

#merge(other) ⇒ Context

Merge additional context

Parameters:

Returns:



19
20
21
# File 'lib/sciosano/context.rb', line 19

def merge(other)
  dup.merge!(other)
end

#merge!(other) ⇒ self

Merge additional context in place

Parameters:

Returns:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/sciosano/context.rb', line 27

def merge!(other)
  case other
  when Context
    @user = other.user if other.user
    @tags.merge!(other.tags)
    @extra.merge!(other.extra)
    @request = other.request if other.request
  when Hash
    @user = other[:user] if other[:user]
    @tags.merge!(other[:tags] || {})
    @extra.merge!(other[:extra] || {})
    @request = other[:request] if other[:request]
  end
  self
end

#to_hHash

Convert to hash

Returns:



58
59
60
61
62
63
64
65
# File 'lib/sciosano/context.rb', line 58

def to_h
  {
    user: user,
    tags: tags,
    extra: extra,
    request: request
  }.compact
end