class SteamCodec::KeyValues
About KeyValues
=> developer.valvesoftware.com/wiki/KeyValues Valve's implementation => github.com/ValveSoftware/source-sdk-2013/blob/master/mp/src/tier1/KeyValues.cpp SteamKit's implementation => github.com/SteamRE/SteamKit/blob/master/SteamKit2/SteamKit2/Types/KeyValue.cs
Public Class Methods
load(data)
click to toggle source
# File lib/steam_codec/key_values.rb, line 102 def self.load(data) json = self::Parser::toJSON(data) self.loadFromJSON(json) end
loadFromFile(file)
click to toggle source
# File lib/steam_codec/key_values.rb, line 96 def self.loadFromFile(file) raise ArgumentError, "file must respond to :read" unless file.respond_to?(:read) json = self::Parser::toJSON(file.read) self.loadFromJSON(json) end
loadFromJSON(json)
click to toggle source
# File lib/steam_codec/key_values.rb, line 90 def self.loadFromJSON(json) JSON.parse(json, {:object_class => self}) rescue JSON::ParserError nil end
Public Instance Methods
asArray(name, seperator = '_')
click to toggle source
# File lib/steam_codec/key_values.rb, line 118 def asArray(name, seperator = '_') data = [] counter = 0 cname = name+seperator+counter.to_s data << self[cname] if key?(cname) counter += 1 cname = name+seperator+counter.to_s while key?(cname) do data << self[cname] counter += 1 cname = name+seperator+counter.to_s end data end
get(path = '', seperator = '/')
click to toggle source
# File lib/steam_codec/key_values.rb, line 107 def get(path = '', seperator = '/') escaped = Regexp.quote(seperator) fields = path.gsub(/^#{escaped}|#{escaped}$/, '').split(seperator) current = self fields.each do |name| return nil if not current.key?(name) current = current[name] end current end