module IOSTSdk::Models
Constants
- MODEL_REGISTRY
Public Class Methods
included(base)
click to toggle source
# File lib/iost_sdk/models.rb, line 177 def self.included base base.send :include, InstanceMethods base.extend ClassMethods end
Public Instance Methods
parse(data_key:, data_value:)
click to toggle source
# File lib/iost_sdk/models.rb, line 221 def parse(data_key:, data_value:) # if nil, short-curcuit return nil unless data_value if IOSTSdk::Models::MODEL_REGISTRY[self.class.name].has_key?(data_key) instruction = IOSTSdk::Models::MODEL_REGISTRY[self.class.name][data_key] mode = instruction[:mode] class_name = instruction[:class] clazz = IOSTSdk::String.classify(class_name) case mode when :object clazz.new.populate(model_data: data_value) when :list data_value.empty? ? [] : data_value.map { |item| clazz.new.populate(model_data: item) } when :hash if data_value.empty? {} else data_value.each_with_object({}) do |(v_key, v_value), memo| memo[v_key] = clazz.new.populate(model_data: v_value) end end end else data_value end end
raw_data()
click to toggle source
# File lib/iost_sdk/models.rb, line 250 def raw_data raw_data = instance_variables.each_with_object({}) do |var_name, memo| n = var_name.to_s[1..-1].to_sym v = send(n) final_v = if IOSTSdk::Models::MODEL_REGISTRY[self.class.name].has_key?(n.to_s) mode = IOSTSdk::Models::MODEL_REGISTRY[self.class.name][n.to_s][:mode] case mode when :object v.raw_data when :list v.map(&:raw_data) when :hash v.each_with_object({}) do |(v_key, v_value), memo| memo[v_key] = v_value.raw_data end end else v end memo[n] = final_v end raw_data end