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
-
(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
-
rules
(Hash
) --
def initialize rules @rules = rules end
def simulate
-
(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