#!/usr/bin/env ruby # # in response to Stackoverflow question: http://stackoverflow.com/questions/36750308/add-xml-fields-with-savon/36758434 # data = [{:diaria_media=>"103.58908136482939632545931759", :diaria_media_uh=>"251,91982978723404255319148936", :diaria_media_uh_sem_grat=>"101.54572898799313893653516295", :quantidade_adulto=>"2557", :quantidade_crianca1=>"33", :quantidade_crianca2=>"154", :room_night=>"1143", :segmento_id=>"11", :segmento_id2=>"11", :segmento_mercado=>"AGÊNCIA DE VIAGENS", :segmento_mercado2=>"AGÊNCIA DE VIAGENS", :uh=>"470", :valor=>"265434.890000", :valor_periodo=>"118402.320000"}, {:diaria_media=>"307.46792079207920792079207921", :diaria_media_uh=>"437,38394366197183098591549296", :diaria_media_uh_sem_grat=>"304.45352941176470588235294118", :quantidade_adulto=>"250", :quantidade_crianca1=>"19", :quantidade_crianca2=>"56", :room_night=>"101", :segmento_id=>"14", :segmento_id2=>"14", :segmento_mercado=>"BALCÃO", :segmento_mercado2=>"BALCÃO", :uh=>"71", :valor=>"31054.260000", :valor_periodo=>"31054.260000"}, {:diaria_media=>"313.000000", :diaria_media_uh=>"939,000000", :diaria_media_uh_sem_grat=>"234.750000", :quantidade_adulto=>"27", :quantidade_crianca1=>"0", :quantidade_crianca2=>"0", :room_night=>"9", :segmento_id=>"17", :segmento_id2=>"17", :segmento_mercado=>"CONVÊNIO", :segmento_mercado2=>"CONVÊNIO", :uh=>"3", :valor=>"2817.000000", :valor_periodo=>"2817.000000"}, {:diaria_media=>"0.0", :diaria_media_uh=>"0,0", :diaria_media_uh_sem_grat=>"0.0", :quantidade_adulto=>"10", :quantidade_crianca1=>"0", :quantidade_crianca2=>"1", :room_night=>"7", :segmento_id=>"16", :segmento_id2=>"16", :segmento_mercado=>"CORPORATIVO ", :segmento_mercado2=>"CORPORATIVO ", :uh=>"7", :valor=>"2458.580000", :valor_periodo=>"0.0"}, {:diaria_media=>"4.4630434782608695652173913043", :diaria_media_uh=>"9,524226804123711340206185567", :diaria_media_uh_sem_grat=>"4.2378440366972477064220183486", :quantidade_adulto=>"998", :quantidade_crianca1=>"7", :quantidade_crianca2=>"10", :room_night=>"414", :segmento_id=>"15", :segmento_id2=>"15", :segmento_mercado=>"INSTITUIÇÃO RELIGIOSA", :segmento_mercado2=>"INSTITUIÇÃO RELIGIOSA", :uh=>"194", :valor=>"117389.030000", :valor_periodo=>"1847.700000"}, {:diaria_media=>"150.89382627422828427853553482", :diaria_media_uh=>"505,27668269230769230769230769", :diaria_media_uh_sem_grat=>"145.86752255378209576682859126", :quantidade_adulto=>"2949", :quantidade_crianca1=>"108", :quantidade_crianca2=>"385", :room_night=>"1393", :segmento_id=>"19", :segmento_id2=>"19", :segmento_mercado=>"OPERADORA", :segmento_mercado2=>"OPERADORA", :uh=>"416", :valor=>"242248.380000", :valor_periodo=>"210195.100000"}, {:diaria_media=>"221.11425992779783393501805054", :diaria_media_uh=>"495,94048582995951417004048583", :diaria_media_uh_sem_grat=>"217.19379432624113475177304965", :quantidade_adulto=>"1587", :quantidade_crianca1=>"138", :quantidade_crianca2=>"268", :room_night=>"554", :segmento_id=>"10", :segmento_id2=>"10", :segmento_mercado=>"PARTICULAR", :segmento_mercado2=>"PARTICULAR", :uh=>"247", :valor=>"168551.180000", :valor_periodo=>"122497.300000"}, {:diaria_media=>"36.919200", :diaria_media_uh=>"70,998461538461538461538461538", :diaria_media_uh_sem_grat=>"24.288947368421052631578947368", :quantidade_adulto=>"63", :quantidade_crianca1=>"2", :quantidade_crianca2=>"0", :room_night=>"25", :segmento_id=>"12", :segmento_id2=>"12", :segmento_mercado=>"PROPRIETARIO", :segmento_mercado2=>"PROPRIETARIO", :uh=>"13", :valor=>"922.980000", :valor_periodo=>"922.980000"}, {:diaria_media=>"31.967530864197530864197530864", :diaria_media_uh=>"117,69863636363636363636363636", :diaria_media_uh_sem_grat=>"1.3578238070267435762978500262", :quantidade_adulto=>"162", :quantidade_crianca1=>"4", :quantidade_crianca2=>"12", :room_night=>"81", :segmento_id=>"13", :segmento_id2=>"13", :segmento_mercado=>"PROPRIETARIO / AUTORIZADO", :segmento_mercado2=>"PROPRIETARIO / AUTORIZADO", :uh=>"22", :valor=>"2609.370000", :valor_periodo=>"2589.370000"}, {:diaria_media=>"0", :diaria_media_uh=>"0", :diaria_media_uh_sem_grat=>"0", :quantidade_adulto=>"0", :quantidade_crianca1=>"0", :quantidade_crianca2=>"0", :room_night=>"0", :segmento_id=>"0", :segmento_id2=>"0", :segmento_mercado=>"CONTA AVULSA", :segmento_mercado2=>nil, :uh=>"0", :valor=>"0.000000", :valor_periodo=>"0.000000"}]; sum = 0 data.each do |e| sum += e[:room_night].to_i end print "Enumerator approach: #{sum}\n" print "Functional approach: ", data.map{|e| e[:room_night].to_i}.reduce(:+)