Class: CustomTracker::Entry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/custom_tracker/entry.rb

Overview

Single tracker entry.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ Entry

Creates new entry.

Parameters:

  • data (Hash<Symbol, Object>)


61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/custom_tracker/entry.rb', line 61

def initialize(data)
  @time = Time.now
  @time.freeze

  # Generating id from current time and random suffix
  @id = (@time.to_i * 65536 + rand(65536)).to_s(16)
  @id.freeze

  @data = {}
  data.each_pair do |key, value|
    next unless key.is_a? Symbol
    @data[key] = value
  end
  @data.freeze
end

Instance Attribute Details

#idString (readonly)

Returns id of entry.

Returns:

  • (String)

    id of entry



25
26
27
# File 'lib/custom_tracker/entry.rb', line 25

def id
  @id
end

#timeTime (readonly)

Returns time of entry creation.

Returns:

  • (Time)

    time of entry creation



21
22
23
# File 'lib/custom_tracker/entry.rb', line 21

def time
  @time
end

Instance Method Details

#[](sym) ⇒ Object

Returns data from entry.

Parameters:

  • sym (Symbol)

Returns:

  • (Object)

    data from entry.



37
38
39
# File 'lib/custom_tracker/entry.rb', line 37

def [](sym)
  @data[sym]
end

#columnsArray<Symbols>

Returns Array of column names.

Returns:

  • (Array<Symbols>)

    Array of column names.



29
30
31
# File 'lib/custom_tracker/entry.rb', line 29

def columns
  @data.keys
end

#each {|key, value| ... } ⇒ self

Calls the given block once for each pair in data.

Yield Parameters:

  • key (Symbol)
  • value (Object)

Returns:

  • (self)


15
16
17
# File 'lib/custom_tracker/entry.rb', line 15

def each(&block)
  @data.each &block
end

#has?(sym) ⇒ Boolean

Returns whether entry stores this column.

Parameters:

  • sym (Symbol)

Returns:

  • (Boolean)

    whether entry stores this column.



45
46
47
# File 'lib/custom_tracker/entry.rb', line 45

def has?(sym)
  @data.has_key?(sym)
end

#to_sString

Returns human-readable string.

Returns:

  • (String)

    human-readable string.



51
52
53
54
55
# File 'lib/custom_tracker/entry.rb', line 51

def to_s
  <<~HEREDOC
    Entry #{@id} from #{@time}. Data: #{@data}
  HEREDOC
end