class Scale::Types::Metadata

Attributes

version[RW]

Public Class Methods

decode(scale_bytes) click to toggle source
# File lib/metadata/metadata.rb, line 6
def self.decode(scale_bytes)
  bytes = scale_bytes.get_next_bytes(4)
  if bytes.bytes_to_utf8 == "meta"
    version_enum = {
      "type" => "enum",
      "value_list" => %w[MetadataV0 MetadataV1 MetadataV2 MetadataV3 MetadataV4 MetadataV5 MetadataV6 MetadataV7 MetadataV8 MetadataV9 MetadataV10 MetadataV11 MetadataV12 MetadataV13]
    }
    metadata_version = Scale::Types.get(version_enum).decode(scale_bytes).value
    metadata = Metadata.new "Scale::Types::#{metadata_version}".constantize2.decode(scale_bytes)
    metadata.version = metadata_version[9..].to_i
  else
    scale_bytes.reset_offset
    metadata_v0 = Scale::Types::MetadataV0.decode(scale_bytes)
    metadata = Metadata.new metadata_v0
    metadata.version = 0
  end
  metadata
end

Public Instance Methods

get_module(module_name) click to toggle source
# File lib/metadata/metadata.rb, line 25
def get_module(module_name)
  modules = self.value.value[:metadata][:modules]
  modules.each do |m|
    if m[:name].downcase == module_name.downcase
      return m
    end
  end
end
get_module_call(module_name, call_name) click to toggle source
# File lib/metadata/metadata.rb, line 34
def get_module_call(module_name, call_name)
  the_module = get_module(module_name)
  the_module[:calls].each do |call|
    if call[:name].downcase == call_name.downcase
      return call
    end
  end
end
get_module_storage(module_name, storage_name) click to toggle source
# File lib/metadata/metadata.rb, line 43
def get_module_storage(module_name, storage_name)
  the_module = get_module(module_name)
  if the_module[:storage].class == Array
    storages = the_module[:storage]
  else
    storages = the_module[:storage][:items]
  end
  storages.find {|storage| storage[:name] == storage_name}
end