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

Lines changed: 17 additions & 8 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 6 additions & 6 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 5 additions & 5 deletions
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 1 addition & 1 deletion
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

0 commit comments

Comments
 (0)