Skip to content

Commit b452aa6

Browse files
committed
[core] update parser to better handle whitespace
1 parent 37499d7 commit b452aa6

File tree

181 files changed

+598
-597
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

181 files changed

+598
-597
lines changed

benchs/parse_vs_push.rb

+17-8
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def reset
1616
end
1717

1818
def characters(string)
19+
@value ||= ''
1920
@value << string.strip
2021
end
2122

@@ -29,10 +30,14 @@ def end_element(name)
2930
@response[:items] << @item
3031
@item = {}
3132
when 'key'
32-
@item[:key] = @value
33+
@item[:key] = value
3334
end
3435
end
3536

37+
def value
38+
@value.dup
39+
end
40+
3641
end
3742

3843
data = <<-DATA
@@ -43,18 +48,22 @@ def end_element(name)
4348
</items>
4449
DATA
4550

46-
COUNT = 100
51+
COUNT = 10_000
4752

4853
Benchmark.bmbm(25) do |bench|
4954
bench.report('parse') do
50-
parser = Parser.new
51-
Nokogiri::XML::SAX::Parser.new(parser).parse(data)
52-
parser.response
55+
COUNT.times do
56+
parser = Parser.new
57+
Nokogiri::XML::SAX::Parser.new(parser).parse(data)
58+
parser.response
59+
end
5360
end
5461

5562
bench.report('push') do
56-
parser = Parser.new
57-
Nokogiri::XML::SAX::PushParser.new(parser).write(data, true)
58-
parser.response
63+
COUNT.times do
64+
parser = Parser.new
65+
Nokogiri::XML::SAX::PushParser.new(parser).write(data, true)
66+
parser.response
67+
end
5968
end
6069
end

lib/fog/aws/parsers/cloud_formation/create_stack.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class CreateStack < Fog::Parsers::Base
88
def end_element(name)
99
case name
1010
when 'RequestId', 'StackId'
11-
@response[name] = @value
11+
@response[name] = value
1212
end
1313
end
1414

lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ def reset
1313
def end_element(name)
1414
case name
1515
when 'EventId', 'LogicalResourceId', 'PhysicalResourceId', 'ResourceProperties', 'ResourceStatus', 'ResourceStatusReason', 'ResourceType', 'StackId', 'StackName'
16-
@event[name] = @value
16+
@event[name] = value
1717
when 'member'
1818
@response['StackEvents'] << @event
1919
@event = {}
2020
when 'RequestId'
21-
@response[name] = @value
21+
@response[name] = value
2222
when 'Timestamp'
23-
@event[name] = Time.parse(@value)
23+
@event[name] = Time.parse(value)
2424
end
2525
end
2626

lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ def reset
1313
def end_element(name)
1414
case name
1515
when 'StackId', 'StackName', 'LogicalResourceId', 'PhysicalResourceId', 'ResourceType', 'ResourceStatus'
16-
@resource[name] = @value
16+
@resource[name] = value
1717
when 'member'
1818
@response['StackResources'] << @resource
1919
@resource = {}
2020
when 'RequestId'
21-
@response[name] = @value
21+
@response[name] = value
2222
when 'Timestamp'
23-
@resource[name] = Time.parse(@value)
23+
@resource[name] = Time.parse(value)
2424
end
2525
end
2626

lib/fog/aws/parsers/cloud_formation/describe_stacks.rb

+6-6
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def end_element(name)
2626
if @in_outputs
2727
case name
2828
when 'OutputKey', 'OutputValue'
29-
@output[name] = @value
29+
@output[name] = value
3030
when 'member'
3131
@stack['Outputs'] << @output
3232
@output = {}
@@ -36,7 +36,7 @@ def end_element(name)
3636
elsif @in_parameters
3737
case name
3838
when 'ParameterKey', 'ParameterValue'
39-
@parameter[name] = @value
39+
@parameter[name] = value
4040
when 'member'
4141
@stack['Parameters'] << @parameter
4242
@parameter = {}
@@ -49,18 +49,18 @@ def end_element(name)
4949
@response['Stacks'] << @stack
5050
@stack = { 'Outputs' => [], 'Parameters' => [] }
5151
when 'RequestId'
52-
@response[name] = @value
52+
@response[name] = value
5353
when 'CreationTime'
54-
@stack[name] = Time.parse(@value)
54+
@stack[name] = Time.parse(value)
5555
when 'DisableRollback'
56-
case @value
56+
case value
5757
when 'false'
5858
@stack[name] = false
5959
when 'true'
6060
@stack[name] = true
6161
end
6262
when 'StackName', 'StackId', 'StackStatus'
63-
@stack[name] = @value
63+
@stack[name] = value
6464
end
6565
end
6666
end

lib/fog/aws/parsers/cloud_formation/get_template.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class GetTemplate < Fog::Parsers::Base
88
def end_element(name)
99
case name
1010
when 'RequestId', 'TemplateBody'
11-
@response[name] = @value
11+
@response[name] = value
1212
end
1313
end
1414

lib/fog/aws/parsers/cloud_formation/validate_template.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,20 @@ def start_element(name, attrs = [])
2121
def end_element(name)
2222
case name
2323
when 'DefaultValue', 'ParameterKey'
24-
@parameter[name] = @value
24+
@parameter[name] = value
2525
when 'Description'
2626
if @in_parameters
27-
@parameter[name] = @value
27+
@parameter[name] = value
2828
else
29-
@response[name] = @value
29+
@response[name] = value
3030
end
3131
when 'RequestId'
32-
@response[name] = @value
32+
@response[name] = value
3333
when 'member'
3434
@response['Parameters'] << @parameter
3535
@parameter = {}
3636
when 'NoEcho'
37-
case @value
37+
case value
3838
when 'false'
3939
@parameter[name] = false
4040
when 'true'

lib/fog/aws/parsers/elb/configure_health_check.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ def start_element(name, attrs = [])
1717
def end_element(name)
1818
case name
1919
when 'Target'
20-
@health_check[name] = @value
20+
@health_check[name] = value
2121
when 'Interval', 'Timeout', 'UnhealthyThreshold', 'HealthyThreshold'
22-
@health_check[name] = @value.to_i
22+
@health_check[name] = value.to_i
2323

2424
when 'HealthCheck'
2525
@response['ConfigureHealthCheckResult'][name] = @health_check
2626

2727
when 'RequestId'
28-
@response['ResponseMetadata'][name] = @value
28+
@response['ResponseMetadata'][name] = value
2929
end
3030
end
3131

lib/fog/aws/parsers/elb/create_load_balancer.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'DNSName'
15-
@response['CreateLoadBalancerResult'][name] = @value
15+
@response['CreateLoadBalancerResult'][name] = value
1616
when 'RequestId'
17-
@response['ResponseMetadata'][name] = @value
17+
@response['ResponseMetadata'][name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/elb/delete_load_balancer.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'RequestId'
15-
@response['ResponseMetadata'][name] = @value
15+
@response['ResponseMetadata'][name] = value
1616
end
1717
end
1818

lib/fog/aws/parsers/elb/deregister_instances_from_load_balancer.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'InstanceId'
15-
@response['DeregisterInstancesFromLoadBalancerResult']['Instances'] << {name => @value}
15+
@response['DeregisterInstancesFromLoadBalancerResult']['Instances'] << {name => value}
1616
when 'RequestId'
17-
@response['ResponseMetadata'][name] = @value
17+
@response['ResponseMetadata'][name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/elb/describe_instance_health.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ def reset
1313
def end_element(name)
1414
case name
1515
when 'Description', 'State', 'InstanceId', 'ReasonCode'
16-
@instance_state[name] = @value
16+
@instance_state[name] = value
1717
when 'member'
1818
@response['DescribeInstanceHealthResult']['InstanceStates'] << @instance_state
1919
@instance_state = {}
2020
when 'RequestId'
21-
@response['ResponseMetadata'][name] = @value
21+
@response['ResponseMetadata'][name] = value
2222
end
2323
end
2424

lib/fog/aws/parsers/elb/describe_load_balancers.rb

+12-12
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ def end_element(name)
4949
case name
5050
when 'member'
5151
if @in_policy_names
52-
@listener_description['PolicyNames'] << @value
52+
@listener_description['PolicyNames'] << value
5353
elsif @in_availability_zones
54-
@load_balancer['AvailabilityZones'] << @value
54+
@load_balancer['AvailabilityZones'] << value
5555
elsif @in_listeners
5656
@load_balancer['ListenerDescriptions'] << @listener_description
5757
reset_listener_description
@@ -67,23 +67,23 @@ def end_element(name)
6767
end
6868

6969
when 'LoadBalancerName', 'DNSName'
70-
@load_balancer[name] = @value
70+
@load_balancer[name] = value
7171
when 'CreatedTime'
72-
@load_balancer[name] = Time.parse(@value)
72+
@load_balancer[name] = Time.parse(value)
7373

7474
when 'ListenerDescriptions'
7575
@in_listeners = false
7676
when 'PolicyNames'
7777
@in_policy_names = false
7878
when 'Protocol'
79-
@listener_description['Listener'][name] = @value
79+
@listener_description['Listener'][name] = value
8080
when 'LoadBalancerPort', 'InstancePort'
81-
@listener_description['Listener'][name] = @value.to_i
81+
@listener_description['Listener'][name] = value.to_i
8282

8383
when 'Instances'
8484
@in_instances = false
8585
when 'InstanceId'
86-
@load_balancer['Instances'] << @value
86+
@load_balancer['Instances'] << value
8787

8888
when 'AvailabilityZones'
8989
@in_availability_zones = false
@@ -96,17 +96,17 @@ def end_element(name)
9696
@in_lb_cookies = false
9797

9898
when 'Interval', 'HealthyThreshold', 'Timeout', 'UnhealthyThreshold'
99-
@load_balancer['HealthCheck'][name] = @value.to_i
99+
@load_balancer['HealthCheck'][name] = value.to_i
100100
when 'Target'
101-
@load_balancer['HealthCheck'][name] = @value
101+
@load_balancer['HealthCheck'][name] = value
102102

103103
when 'PolicyName', 'CookieName'
104-
@policy[name] = @value
104+
@policy[name] = value
105105
when 'CookieExpirationPeriod'
106-
@policy[name] = @value.to_i
106+
@policy[name] = value.to_i
107107

108108
when 'RequestId'
109-
@response['ResponseMetadata'][name] = @value
109+
@response['ResponseMetadata'][name] = value
110110

111111
when 'DescribeLoadBalancersResponse'
112112
@response['DescribeLoadBalancersResult'] = @results

lib/fog/aws/parsers/elb/disable_availability_zones_for_load_balancer.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'member'
15-
@response['DisableAvailabilityZonesForLoadBalancerResult']['AvailabilityZones'] << @value
15+
@response['DisableAvailabilityZonesForLoadBalancerResult']['AvailabilityZones'] << value
1616
when 'RequestId'
17-
@response['ResponseMetadata'][name] = @value
17+
@response['ResponseMetadata'][name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/elb/empty.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def start_element(name, attrs = [])
1616
def end_element(name)
1717
case name
1818
when 'RequestId'
19-
@response['ResponseMetadata'][name] = @value
19+
@response['ResponseMetadata'][name] = value
2020
end
2121
end
2222

lib/fog/aws/parsers/elb/enable_availability_zones_for_load_balancer.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'member'
15-
@response['EnableAvailabilityZonesForLoadBalancerResult']['AvailabilityZones'] << @value
15+
@response['EnableAvailabilityZonesForLoadBalancerResult']['AvailabilityZones'] << value
1616
when 'RequestId'
17-
@response['ResponseMetadata'][name] = @value
17+
@response['ResponseMetadata'][name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/elb/register_instances_with_load_balancer.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'InstanceId'
15-
@response['RegisterInstancesWithLoadBalancerResult']['Instances'] << {name => @value}
15+
@response['RegisterInstancesWithLoadBalancerResult']['Instances'] << {name => value}
1616
when 'RequestId'
17-
@response['ResponseMetadata'][name] = @value
17+
@response['ResponseMetadata'][name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/iam/basic.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class Basic < Fog::Parsers::Base
88
def end_element(name)
99
case name
1010
when 'RequestId'
11-
@response[name] = @value
11+
@response[name] = value
1212
end
1313
end
1414

lib/fog/aws/parsers/iam/create_access_key.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'AccessKeyId', 'UserName', 'SecretAccessKey', 'Status'
15-
@response['AccessKey'][name] = @value
15+
@response['AccessKey'][name] = value
1616
when 'RequestId'
17-
@response[name] = @value
17+
@response[name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/iam/create_group.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'Arn', 'GroupId', 'GroupName', 'Path'
15-
@response['Group'][name] = @value
15+
@response['Group'][name] = value
1616
when 'RequestId'
17-
@response[name] = @value
17+
@response[name] = value
1818
end
1919
end
2020

lib/fog/aws/parsers/iam/create_user.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def reset
1212
def end_element(name)
1313
case name
1414
when 'Arn', 'UserId', 'UserName', 'Path'
15-
@response['User'][name] = @value
15+
@response['User'][name] = value
1616
when 'RequestId'
17-
@response[name] = @value
17+
@response[name] = value
1818
end
1919
end
2020

0 commit comments

Comments
 (0)