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