class AWS::Core::XML::RootFrame
def add_to_index index_name, key, value
def add_to_index index_name, key, value @indexes[index_name] ||= {} @indexes[index_name][key] = value end
def build_child_frame element_name
def build_child_frame element_name Frame.new(self, self, element_name, rules) end
def inflect element_name
def inflect element_name @inflected[element_name] ||= Inflection.ruby_name(element_name).to_sym end
def initialize rules
def initialize rules @inflected = {} @indexes = {} setup_indexes(rules) super(self, nil, 'XML', rules) end
def setup_indexes rules
recursively crawls the parser rules and looks for elements
def setup_indexes rules if rules[:children] rules[:children].each_pair do |child_name,child_rules| if index = child_rules[:index] @indexes[index[:name]] = {} end setup_indexes(child_rules) end end end
def value
def value value = @data.values.find{|v| v.is_a?(Hash) } value ||= {} value.merge(@indexes) end