class AWS::Core::XML::Stub


This is used primarily to help with the AWS.stub! utility.
* etc
* Numeric types are returned as 0
* Indexes become empty hashes
* Lists are stubbed with empty arrays
values based on the grammar, e.g.
returns a stubbed reponse. This response has placeholder
This class takes the rules from an XML parser and then

def self.simulate rules

Returns:
  • (Hash) -

Parameters:
  • rules (Hash) -- An XML::Parser rule set.
def self.simulate rules
  stub = Stub.new(rules)
  stub.simulate
end

def apply_empty_indexes rules, data

def apply_empty_indexes rules, data
  
  return unless rules[:children]
  
  rules[:children].each_pair do |name,child_rules|
    if index = child_rules[:index]
      data[index[:name]] = {}
    end
    apply_empty_indexes(child_rules, data)
  end
end

def initialize rules

Parameters:
  • rules (Hash) --
def initialize rules
  @rules = rules
end

def simulate

Returns:
  • (Hash) -
def simulate 
  if rules[:children]
    data = stub_data_for(rules)
    apply_empty_indexes(rules, data)
    data
  else
    {}
  end
end

def stub_data_for rules, data = {}

def stub_data_for rules, data = {}
  rules[:children].each_pair do |name,child_rules|
    # skip ignored elements
    if child_rules[:ignore]
      stub_data_for(child_rules, data) if child_rules[:children]
      next
    end
    orig_data = data
    if wrapper = child_rules[:wrap]
      data[wrapper] ||= {}
      data = data[wrapper]
    end
    ruby_name = child_rules[:rename] || 
      Inflection.ruby_name(name.to_s).to_sym
    if child_rules[:list]
      data[ruby_name] = []
    elsif child_rules[:map]
      data[ruby_name] = {}
    elsif child_rules[:children] and !child_rules[:children].empty?
      data[ruby_name] = stub_data_for(child_rules)
    else
      data[ruby_name] = case child_rules[:type]
        when :integer  then 0 
        when :float    then 0.0
        when :time     then Time.now
        when :datetime then Date.parse(Time.now.to_s)
        when :boolean  then false
        else nil
      end
    end
    # restore data incase it was redirected for wrapping
    data = orig_data
  end
  data
end