class Fog::Parsers::AWS::ElasticBeanstalk::BaseParser
Public Class Methods
new(result_name)
click to toggle source
Calls superclass method
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 6 def initialize(result_name) @result_name = result_name # Set before super, since super calls reset super() @tags = {} @list_tags = {} end
Public Instance Methods
end_element(name)
click to toggle source
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 46 def end_element(name) case name when 'member' if @parse_stack.last[:type] != :object @parse_stack.last[:value] << value end when 'RequestId' @response['ResponseMetadata'][name] = value else if @list_tags.key?(name) || @tags[name] == :object @parse_stack.pop() elsif @tags.key?(name) set_value(name, value, @tags[name]) end end end
get_parent()
click to toggle source
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 63 def get_parent parent = @parse_stack.last[:value] parent.is_a?(Array) ? parent.last : parent end
reset()
click to toggle source
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 13 def reset @response = { @result_name => {}, 'ResponseMetadata' => {} } # Push root object to top of stack @parse_stack = [ { :type => :object, :value => @response[@result_name]} ] end
set_value(name, value, type)
click to toggle source
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 68 def set_value(name, value, type) case type when :datetime get_parent[name] = Time.parse value when :boolean get_parent[name] = value == "true" # True only if value is true when :integer get_parent[name] = value.to_i else get_parent[name] = value end end
start_element(name, attrs = [])
click to toggle source
Calls superclass method
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 31 def start_element(name, attrs = []) super if name == 'member' if @parse_stack.last[:type] == :object @parse_stack.last[:value] << {} # Push any empty object end elsif @list_tags.key?(name) set_value(name, [], :array) # Set an empty array @parse_stack.push({ :type => @tags[name], :value => get_parent[name] }) elsif @tags[name] == :object set_value(name, {}, :object) @parse_stack.push({ :type => @tags[name], :value => get_parent[name] }) end end
tag(name, *traits)
click to toggle source
# File lib/fog/aws/parsers/beanstalk/parser.rb, line 19 def tag name, *traits if traits.delete(:list) @list_tags[name] = true end if traits.length == 1 @tags[name] = traits.last else raise "Too many traits specified, only specify :list or a type" end end