Class: Hive::State

Inherits:
Base
  • Object
show all
Defined in:
lib/hive/models/state.rb

Overview

Tracks state.

Constant Summary collapse

@@methods =
%i(
  block_num db_version steem_per_mvest usd_per_steem sbd_per_steem dgpo
)

Class Method Summary collapse

Methods inherited from Base

delete, #delete, delete_all, transform_account_selector, #update, update_all

Class Method Details

.method_missing(m, *args, &block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/hive/models/state.rb', line 16

def self.method_missing(m, *args, &block)
  super unless respond_to_missing?(m)
  
  case m
  when :dgpo
    dgpo = JSON[last.send :dgpo]
    
    dgpo.each do |k, v|
      case v
      when Hash
        dgpo[k] = Struct.new(*v.keys.map(&:to_sym)).new(*v.values)
      when String
        if v =~ /^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[0-1]|0[1-9]|[1-2][0-9])T(2[0-3]|[0-1][0-9]):([0-5][0-9]):([0-5][0-9])(\.[0-9]+)?(Z|[+-](?:2[0-3]|[0-1][0-9]):[0-5][0-9])?$/
          dgpo[k] = Time.parse(v + 'Z') rescue v
        elsif v =~ /[0-9]+/
          dgpo[k] = v.to_i
        end
      end
    end
    
    dgpo = Struct.new(*dgpo.keys.map(&:to_sym)).new(*dgpo.values)
  else; last.send(m)
  end
end

.respond_to_missing?(m, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/hive/models/state.rb', line 12

def self.respond_to_missing?(m, include_private = false)
  methods.include? m.to_sym
end