class Recs2009Response::Parser

Constants

AGE
BOOLEAN
BOOLEAN_NO_NIL
BUILDING_TYPE
CHARGING
COMPUTER_MONITOR
COMPUTER_TYPE
CONDO_COOP
CONVERTED_HOUSE
COOLER
COOLER_USE
DEFROST
DEVICES
DRAFTY
DRYER_USE
EDUCATION
EMPLOYMENT
FINISHED_SPACE
FREEZER_SIZE
FREEZER_TYPE
FRIDGE_SIZE
FRIDGE_TYPE
FUEL
GARAGE_SIZE
HEATER
HEATER_PORTION
INCENTIVE
INCOME
INSULATION
MEMBER_AGE
METRO_MICRO
MICROWAVE_USE
MONTHLY_TIMES
MONTHS_USE
OWN_RENT
RACE
RENEWABLE
ROOF_MATERIAL
SEX
STORIES
TV_SIZE
TV_TYPE
TV_USE
URBAN_RURAL
WALL_MATERIAL
WASHER_TEMP
WASHER_TYPE
WASHER_USE
WATER_HEATER
WATER_HEATER_SIZE
WINDOWS
WINDOWS_REPLACED
WINDOW_PANES
YEAR_INCENTIVIZED
YEAR_OCCUPIED

Public Class Methods

new(*) click to toggle source

required by remote_table transform

# File lib/earth/residence/recs_2009_response/parser.rb, line 397
def initialize(*)
  # nothing to see here
end

Public Instance Methods

apply(row) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 515
def apply(row)
  parsed_row = {
    'area'                   => row['TOTSQFT'],
    'bathrooms'              => row['NCOMBATH'],
    'cdd_2009'               => row['CDD65'],
    'cdd_avg'                => row['CDD30YR'],
    'census_region_number'   => row['REGIONC'],
    'census_division_number' => row['DIVISION'],
    'climate_region_id'      => row['Climate_Region_Pub'],
    'climate_zone_id'        => row['AIA_Zone'],
    'computers'              => row['NUMPC'],
    'cooktops'               => row['STOVE'],
    'cool_area'              => row['TOTCSQFT'],
    'electricity'            => row['KWH'],
    'electricity_cost'       => row['DOLLAREL'],
    'energy'                 => row['TOTALBTU'],
    'energy_cost'            => row['TOTALDOL'],
    'fans'                   => row['NUMCFAN'],
    'fridges'                => row['NUMFRIG'],
    'fuel_oil'               => row['BTUFO'],
    'fuel_oil_cost'          => row['DOLLARFO'],
    'half_baths'             => row['NHAFBATH'],
    'hdd_2009'               => row['HDD65'],
    'hdd_avg'                => row['HDD30YR'],
    'heat_area'              => row['TOTHSQFT'],
    'household_size'         => row['NHSLDMEM'],
    'id'                     => row['DOEID'],
    'kerosene'               => row['BTUKER'],
    'kerosene_cost'          => row['DOLLARKER'],
    'lights_high_use'        => row['LGT12'],
    'lights_low_use'         => row['LGT1'],
    'lights_med_use'         => row['LGT4'],
    'member_1_age'           => row['HHAGE'],
    'other_rooms'            => row['OTHROOMS'],
    'natural_gas'            => row['BTUNG'],
    'natural_gas_cost'       => row['DOLLARNG'],
    'ovens'                  => row['OVEN'],
    'propane'                => row['BTULP'],
    'propane_cost'           => row['DOLLARLP'],
    'recs_grouping_id'       => row['REPORTABLE_DOMAIN'],
    'rooms'                  => row['TOTROOMS'],
    'stoves'                 => row['STOVEN'],
    'tvs'                    => row['TVCOLOR'],
    'weighting'              => row['NWEIGHT'],
    'wood'                   => row['BTUWOOD'],
    'year_built'             => row['YEARMADE']
  }
  
  @secondary_heating_systems = nil
  (2..6).each do |i|
    parsed_row.merge!({
      "heater_#{i}"      => secondary_heating_systems(row).keys[i - 2],
      "heater_#{i}_fuel" => FUEL[secondary_heating_systems(row).values[i - 2]]
    })
  end
  
  parsed_row.merge!({
    'answering_machine'          => BOOLEAN[row['ANSMACH']],
    'aquarium'                   => BOOLEAN[row['AQUARIUM']],
    'apartments'                 => numerize(row['NUMAPTS'], nil),
    'attic_type'                 => FINISHED_SPACE[row['ATTICFIN']],
    'attic_rooms'                => numerize(row['FINATTRMS'], 0),
    'basement_type'              => FINISHED_SPACE[row['BASEFIN']],
    'basement_rooms'             => numerize(row['FINBASERMS'], 0),
    'bedrooms'                   => numerize(row['BEDROOMS'], 0),
    'building_floors'            => [numerize(row['NUMFLRS'], nil), STORIES[row['STORIES']]].compact.first,
    'building_type'              => BUILDING_TYPE[row['TYPEHUQ']],
    'caulking_added'             => BOOLEAN[row['INSTLWS']],
    'caulking_added_year'        => year_improved(AGE[row['AGEWS']]),
    'caulking_incent'            => INCENTIVE[row['HELPWS']],
    'caulking_incent_year'       => YEAR_INCENTIVIZED[row['HELPWSY']],
    'coffee'                     => BOOLEAN[row['COFFEE']],
    'computer_idle'              => computer_idle(row['PCONOFF1'], row['PCSLEEP1']),
    'computer_monitor'           => COMPUTER_MONITOR[row['MONITOR1']],
    'computer_type'              => COMPUTER_TYPE[row['PCTYPE1']],
    'computer_use'               => TV_USE[row['TIMEON1']],
    'computer_2_idle'            => computer_idle(row['PCONOFF2'], row['PCSLEEP2']),
    'computer_2_monitor'         => COMPUTER_MONITOR[row['MONITOR2']],
    'computer_2_type'            => COMPUTER_TYPE[row['PCTYPE2']],
    'computer_2_use'             => TV_USE[row['TIMEON2']],
    'computer_3_idle'            => computer_idle(row['PCONOFF3'], row['PCSLEEP3']),
    'computer_3_monitor'         => COMPUTER_MONITOR[row['MONITOR3']],
    'computer_3_type'            => COMPUTER_TYPE[row['PCTYPE3']],
    'computer_3_use'             => TV_USE[row['TIMEON3']],
    'condo_coop'                 => CONDO_COOP[row['CONDCOOP']],
    'converted_house'            => CONVERTED_HOUSE[row['LOOKLIKE']],
    'cooking_fuel'               => FUEL[row['FUELFOOD']],
    'cooking_frequency'          => MONTHLY_TIMES[row['NUMMEAL']],
    'cooktop_fuel'               => FUEL[row['STOVEFUEL']],
    'cool_attic_portion'         => heat_cool_coverage(row['ATTCCOOL'], row['ATTCCL2'], row['PCTATTCL']),
    'cool_auto_adjust_day'       => BOOLEAN[row['AUTOCOOLDAY']],
    'cool_auto_adjust_night'     => BOOLEAN[row['AUTOCOOLNITE']],
    'cool_basement_portion'      => heat_cool_coverage(row['BASECOOL'], row['BASECL2'], row['PCTBSTCL']),
    'cool_garage'                => BOOLEAN[row['GARGCOOL']],
    'cool_rooms'                 => numerize(row['ACROOMS'], 0),
    'cool_temp_away'             => numerize(row['TEMPGONEAC'], nil),
    'cool_temp_day'              => numerize(row['TEMPHOMEAC'], nil),
    'cool_temp_night'            => numerize(row['TEMPNITEAC'], nil),
    'cooler_ac_age'              => AGE[row['WWACAGE']],
    'cooler_ac_energy_star'      => BOOLEAN[row['ESWWAC']],
    'cooler_ac_incent'           => INCENTIVE[row['HELPWWAC']],
    'cooler_ac_incent_year'      => YEAR_INCENTIVIZED[row['HELPWWACY']],
    'cooler_ac_replaced'         => BOOLEAN[row['REPLCWWAC']],
    'cooler_ac_use'              => COOLER_USE[row['USEWWAC']],
    'cooler_ac_units'            => numerize(row['NUMBERAC'], 0),
    'cooler_central_age'         => AGE[row['AGECENAC']],
    'cooler_central_incent'      => INCENTIVE[row['HELPCAC']],
    'cooler_central_incent_year' => YEAR_INCENTIVIZED[row['HELPCACY']],
    'cooler_central_maintained'  => BOOLEAN[row['MAINTAC']],
    'cooler_central_replaced'    => BOOLEAN[row['REPLCCAC']],
    'cooler_central_shared'      => BOOLEAN[row['ACOTHERS']],
    'cooler_central_use'         => COOLER_USE[row['USECENAC']],
    'cooling'                    => BOOLEAN[row['AIRCOND']],
    'copier'                     => BOOLEAN[row['COPIER']],
    'cordless_phone'             => BOOLEAN[row['NOCORD']],
    'crawlspace'                 => BOOLEAN_NO_NIL[row['CRAWL']],
    'dehumidifier_use'           => MONTHS_USE[row['USENOTMOIST']],
    'dishwasher_age'             => AGE[row['AGEDW']],
    'dishwasher_energy_star'     => BOOLEAN[row['ESDISHW']],
    'dishwasher_use'             => MONTHLY_TIMES[row['DWASHUSE']],
    'dishwasher_incent'          => INCENTIVE[row['HELPDW']],
    'dishwasher_incent_year'     => YEAR_INCENTIVIZED[row['HELPDWY']],
    'dishwasher_replaced'        => BOOLEAN[row['REPLCDW']],
    'drafty'                     => DRAFTY[row['DRAFTY']],
    'dryer_age'                  => AGE[row['AGECDRYER']],
    'dryer_fuel'                 => FUEL[row['DRYRFUEL']],
    'dryer_use'                  => DRYER_USE[row['DRYRUSE']],
    'education'                  => EDUCATION[row['EDUCATION']],
    'electricity_heat'           => BOOLEAN[row['ELWARM']],
    'electricity_heat_2'         => BOOLEAN[row['ELECAUX']],
    'electricity_cool'           => BOOLEAN[row['ELCOOL']],
    'electricity_water'          => BOOLEAN[row['ELWATER']],
    'electricity_cooking'        => BOOLEAN[row['ELFOOD']],
    'electricity_other'          => BOOLEAN[row['ELOTHER']],
    'electronic_charging'        => CHARGING[row['ELECCHRG']],
    'electronic_vampires'        => vampires(row['ELECCHRG'], row['CHRGPLGE']),
    'electronics'                => DEVICES[row['ELECDEV']],
    'employment'                 => EMPLOYMENT[row['EMPLOYHH']],
    'energy_audit'               => BOOLEAN[row['AUDIT']],
    'energy_audit_incent'        => INCENTIVE[row['HELPAUD']],
    'energy_audit_incent_year'   => YEAR_INCENTIVIZED[row['HELPAUDY']],
    'energy_audit_year'          => year_improved(AGE[row['AGEAUD']]),
    'engine_block_heater'        => BOOLEAN[row['DIPSTICK']],
    'fax'                        => BOOLEAN[row['FAX']],
    'fan_use'                    => COOLER_USE[row['USECFAN']],
    'food_stamps'                => BOOLEAN[row['FOODASST']],
    'freezers'                   => numerize(row['NUMFREEZ'], 0),
    'freezer_age'                => AGE[row['AGEFRZR']],
    'freezer_defrost'            => DEFROST[row['FREEZER']],
    'freezer_incent'             => INCENTIVE[row['HELPFRZ']],
    'freezer_incent_year'        => YEAR_INCENTIVIZED[row['HELPFRZY']],
    'freezer_replaced'           => BOOLEAN[row['REPLCFRZ']],
    'freezer_size'               => FREEZER_SIZE[row['SIZFREEZ']],
    'freezer_type'               => FREEZER_TYPE[row['UPRTFRZR']],
    'freezer_2_age'              => AGE[row['AGEFRZR2']],
    'freezer_2_defrost'          => DEFROST[row['FREEZER2']],
    'freezer_2_size'             => FREEZER_SIZE[row['SIZFREEZ2']],
    'freezer_2_type'             => FREEZER_TYPE[row['UPRTFRZR2']],
    'fridge_age'                 => AGE[row['AGERFRI1']],
    'fridge_defrost'             => DEFROST[row['REFRIGT1']],
    'fridge_door_ice'            => BOOLEAN[row['ICE']],
    'fridge_energy_star'         => BOOLEAN[row['ESFRIG']],
    'fridge_size'                => FRIDGE_SIZE[row['SIZRFRI1']],
    'fridge_type'                => FRIDGE_TYPE[row['TYPERFR1']],
    'fridge_2_age'               => AGE[row['AGERFRI2']],
    'fridge_2_defrost'           => DEFROST[row['REFRIGT2']],
    'fridge_2_energy_star'       => BOOLEAN[row['ESFRIG2']],
    'fridge_2_size'              => FRIDGE_SIZE[row['SIZRFRI2']],
    'fridge_2_type'              => FRIDGE_TYPE[row['TYPERFR2']],
    'fridge_2_use'               => numerize(row['MONRFRI2'], nil),
    'fridge_3_age'               => AGE[row['AGERFRI3']],
    'fridge_3_defrost'           => DEFROST[row['REFRIGT3']],
    'fridge_3_energy_star'       => BOOLEAN[row['ESFRIG3']],
    'fridge_3_size'              => FRIDGE_SIZE[row['SIZRFRI3']],
    'fridge_3_type'              => FRIDGE_TYPE[row['TYPERFR3']],
    'fridge_3_use'               => numerize(row['MONRFRI3'], nil),
    'fridge_incent'              => INCENTIVE[row['HELPFRI']],
    'fridge_incent_year'         => YEAR_INCENTIVIZED[row['HELPFRIY']],
    'fridge_replaced'            => BOOLEAN[row['REPLCFRI']],
    'fuel_oil_heat'              => BOOLEAN[row['FOWARM']],
    'fuel_oil_heat_2'            => BOOLEAN[row['FOILAUX']],
    'fuel_oil_water'             => BOOLEAN[row['FOWATER']],
    'fuel_oil_other'             => BOOLEAN[row['FOOTHER']],
    'garage_type'                => garage(row),
    'garage_size'                => GARAGE_SIZE[(BOOLEAN[row['PRKGPLC1']] ? row['SIZEOFGARAGE'] : row['SIZEOFDETACH'])],
    'heat_attic_portion'         => heat_cool_coverage(row['ATTCHEAT'], row['ATTCHT2'], row['PCTATTHT']),
    'heat_auto_adjust_day'       => BOOLEAN[row['AUTOHEATDAY']],
    'heat_auto_adjust_night'     => BOOLEAN[row['AUTOHEATNITE']],
    'heat_basement_portion'      => heat_cool_coverage(row['BASEHEAT'], row['BASEHT2'], row['PCTBSTHT']),
    'heat_garage'                => BOOLEAN[row['GARGHEAT']],
    'heat_rooms'                 => numerize(row['HEATROOM'], 0),
    'heat_temp_away'             => numerize(row['TEMPGONE'], nil),
    'heat_temp_day'              => numerize(row['TEMPHOME'], nil),
    'heat_temp_night'            => numerize(row['TEMPNITE'], nil),
    'heater'                     => [HEATER[row['EQUIPM']], HEATER[row['EQUIPNOHEAT']]].compact.first,
    'heater_age'                 => AGE[row['EQUIPAGE']],
    'heater_fuel'                => [FUEL[row['FUELHEAT']], FUEL[row['FUELNOHEAT']]].compact.first,
    'heater_incent'              => INCENTIVE[row['HELPHT']],
    'heater_incent_year'         => YEAR_INCENTIVIZED[row['HELPHTY']],
    'heater_maintained'          => BOOLEAN[row['MAINTHT']],
    'heater_portion'             => HEATER_PORTION[row['EQMAMT']],
    'heater_replaced'            => BOOLEAN[row['REPLCHT']],
    'heater_shared'              => BOOLEAN[row['HEATOTH']],
    'heater_thermostats'         => numerize(row['NUMTHERM'], 0),
    'heating'                    => BOOLEAN[row['HEATHOME']],
    'high_ceiling'               => BOOLEAN_NO_NIL[row['HIGHCEIL']],
    'home_business'              => BOOLEAN[row['HBUSNESS']],
    'home_during_week'           => BOOLEAN[row['ATHOME']],
    'hot_tub_fuel'               => FUEL[row['FUELTUB']],
    'humidifier_use'             => MONTHS_USE[row['USEMOISTURE']],
    'indoor_grill_fuel'          => FUEL[row['STGRILA']],
    'income'                     => INCOME[row['MONEYPY']],
    'income_employment'          => BOOLEAN[row['WORKPAY']],
    'income_retirement'          => BOOLEAN[row['RETIREPY']],
    'income_ssi'                 => BOOLEAN[row['SSINCOME']],
    'income_welfare'             => BOOLEAN[row['CASHBEN']],
    'income_investment'          => BOOLEAN[row['INVESTMT']],
    'income_other'               => BOOLEAN[row['RGLRPAY']],
    'insulation'                 => INSULATION[row['ADQINSUL']],
    'insulation_added'           => BOOLEAN[row['INSTLINS']],
    'insulation_added_year'      => year_improved(AGE[row['AGEINS']]),
    'insulation_incent'          => INCENTIVE[row['HELPINS']],
    'insulation_incent_year'     => YEAR_INCENTIVIZED[row['HELPINSY']],
    'internet'                   => BOOLEAN_NO_NIL[row['INTERNET']],
    'kerosene_heat'              => BOOLEAN[row['KRWARM']],
    'kerosene_heat_2'            => BOOLEAN[row['KEROAUX']],
    'kerosene_water'             => BOOLEAN[row['KRWATER']],
    'kerosene_other'             => BOOLEAN[row['KROTHER']],
    'latino'                     => BOOLEAN[row['SDESCENT']],
    'levels'                     => [numerize(row['NAPTFLRS'], nil), STORIES[row['STORIES']]].compact.first,
    'lights_high_use_efficient'  => numerize(row['LGT12EE'], 0),
    'lights_incent'              => INCENTIVE[row['HELPCFL']],
    'lights_incent_year'         => YEAR_INCENTIVIZED[row['HELPCFLY']],
    'lights_low_use_efficient'   => numerize(row['LGT1EE'], 0),
    'lights_med_use_efficient'   => numerize(row['LGT4EE'], 0),
    'lights_outdoor'             => numerize(row['NOUTLGTNT'], 0),
    'lights_outdoor_efficient'   => numerize(row['LGTOEE'], 0),
    'lights_replaced'            => BOOLEAN[row['INSTLCFL']],
    'low_rent'                   => BOOLEAN[row['RENTHELP']],
    'member_2_age'               => MEMBER_AGE[row['AGEHHMEMCAT2']],
    'member_3_age'               => MEMBER_AGE[row['AGEHHMEMCAT3']],
    'member_4_age'               => MEMBER_AGE[row['AGEHHMEMCAT4']],
    'member_5_age'               => MEMBER_AGE[row['AGEHHMEMCAT5']],
    'member_6_age'               => MEMBER_AGE[row['AGEHHMEMCAT6']],
    'member_7_age'               => MEMBER_AGE[row['AGEHHMEMCAT7']],
    'member_8_age'               => MEMBER_AGE[row['AGEHHMEMCAT8']],
    'member_9_age'               => MEMBER_AGE[row['AGEHHMEMCAT9']],
    'member_10_age'              => MEMBER_AGE[row['AGEHHMEMCAT10']],
    'member_11_age'              => MEMBER_AGE[row['AGEHHMEMCAT11']],
    'member_12_age'              => MEMBER_AGE[row['AGEHHMEMCAT12']],
    'member_13_age'              => MEMBER_AGE[row['AGEHHMEMCAT13']],
    'member_14_age'              => MEMBER_AGE[row['AGEHHMEMCAT14']],
    'metro_micro'                => METRO_MICRO[row['METROMICRO']],
    'microwave_defrost'          => BOOLEAN[row['DEFROST']],
    'microwave_use'              => MICROWAVE_USE[row['AMTMICRO']],
    'natural_gas_heat'           => BOOLEAN[row['UGWARM']],
    'natural_gas_heat_2'         => BOOLEAN[row['UGASAUX']],
    'natural_gas_water'          => BOOLEAN[row['UGWATER']],
    'natural_gas_cooking'        => BOOLEAN[row['UGCOOK']],
    'natural_gas_other'          => BOOLEAN[row['UGOTH']],
    'other_heat'                 => BOOLEAN[row['OTHWARM']],
    'other_heat_2'               => BOOLEAN[row['OTHERAUX']],
    'other_water'                => BOOLEAN[row['OTHWATER']],
    'other_cooking'              => BOOLEAN[row['OTHCOOK']],
    'outdoor_grill_fuel'         => FUEL[row['OUTGRILLFUEL']],
    'oven_fuel'                  => FUEL[row['OVENFUEL']],
    'oven_type'                  => oven_type(row),
    'oven_use'                   => MONTHLY_TIMES[row['OVENUSE']],
    'own_rent'                   => OWN_RENT[row['KOWNRENT']],
    'pays_electricity_heat'      => payer(row['PELHEAT'], row['OTHERWAYEL']),
    'pays_electricity_water'     => payer(row['PELHOTWA'], row['OTHERWAYEL']),
    'pays_electricity_cooking'   => payer(row['PELCOOK'], row['OTHERWAYEL']),
    'pays_electricity_cool'      => payer(row['PELAC'], row['OTHERWAYEL']),
    'pays_electricity_lighting'  => payer(row['PELLIGHT'], row['OTHERWAYEL']),
    'pays_natural_gas_heat'      => payer(row['PGASHEAT'], row['OTHERWAYNG']),
    'pays_natural_gas_water'     => payer(row['PGASHTWA'], row['OTHERWAYNG']),
    'pays_natural_gas_cooking'   => payer(row['PUGCOOK'], row['OTHERWAYNG']),
    'pays_natural_gas_other'     => payer(row['PUGOTH'], row['OTHERWAYNG']),
    'pays_fuel_oil'              => payer(row['FOPAY'], row['OTHERWAYFO']),
    'pays_propane'               => payer(row['LPGPAY'], row['OTHERWAYLPG']),
    'pool'                       => BOOLEAN_NO_NIL[row['SWIMPOOL']],
    'pool_fuel'                  => FUEL[row['FUELPOOL']],
    'poverty_100'                => BOOLEAN[row['POVERTY100']],
    'poverty_150'                => BOOLEAN[row['POVERTY150']],
    'printers'                   => numerize(row['PCPRINT'], 0),
    'propane_heat'               => BOOLEAN[row['LPWARM']],
    'propane_heat_2'             => BOOLEAN[row['LPGAUX']],
    'propane_water'              => BOOLEAN[row['LPWATER']],
    'propane_cooking'            => BOOLEAN[row['LPCOOK']],
    'propane_other'              => BOOLEAN[row['LPOTHER']],
    'public_housing_authority'   => BOOLEAN[row['HUPROJ']],
    'race'                       => RACE[row['Householder_Race']],
    'renewable_energy'           => RENEWABLE[row['ONSITEGRID']],
    'roof_material'              => ROOF_MATERIAL[row['ROOFTYPE']],
    'sex'                        => SEX[row['HHSEX']],
    'shaded'                     => BOOLEAN[row['TREESHAD']],
    'slab'                       => BOOLEAN_NO_NIL[row['CONCRETE']],
    'sliding_doors'              => numerize(row['DOOR1SUM'], 0),
    'solar_heat'                 => BOOLEAN[row['SOLWARM']],
    'solar_heat_2'               => BOOLEAN[row['SOLARAUX']],
    'solar_water'                => BOOLEAN[row['SOLWATER']],
    'solar_other'                => BOOLEAN[row['SOLOTHER']],
    'live_with_spouse'           => BOOLEAN[row['SPOUSE']],
    'stereo'                     => BOOLEAN[row['STEREO']],
    'stove_fuel'                 => FUEL[row['STOVENFUEL']],
    'telecommuting'              => numerize(row['TELLDAYS'], 0),
    'toaster'                    => BOOLEAN[row['TOASTER']],
    'tool_charging'              => CHARGING[row['BATCHRG']],
    'tool_vampires'              => vampires(row['BATCHRG'], row['CHRGPLGT']),
    'tools'                      => DEVICES[row['BATTOOLS']],
    'tv_size'                    => TV_SIZE[row['TVSIZE1']],
    'tv_theater'                 => BOOLEAN[row['TVAUDIOSYS1']],
    'tv_type'                    => TV_TYPE[row['TVTYPE1']],
    'tv_weekday_use'             => TV_USE[row['TVONWD1']],
    'tv_weekend_use'             => TV_USE[row['TVONWE1']],
    'tv_2_size'                  => TV_SIZE[row['TVSIZE2']],
    'tv_2_theater'               => BOOLEAN[row['TVAUDIOSYS2']],
    'tv_2_type'                  => TV_TYPE[row['TVTYPE2']],
    'tv_2_weekday_use'           => TV_USE[row['TVONWD2']],
    'tv_2_weekend_use'           => TV_USE[row['TVONWE2']],
    'tv_3_size'                  => TV_SIZE[row['TVSIZE3']],
    'tv_3_theater'               => BOOLEAN[row['TVAUDIOSYS3']],
    'tv_3_type'                  => TV_TYPE[row['TVTYPE3']],
    'tv_3_weekday_use'           => TV_USE[row['TVONWD3']],
    'tv_3_weekend_use'           => TV_USE[row['TVONWE3']],
    'urban_rural'                => URBAN_RURAL[row['UR']],
    'unusual_activities'         => BOOLEAN[row['OTHWORK']],
    'wall_material'              => WALL_MATERIAL[row['WALLTYPE']],
    'washer_age'                 => AGE[row['AGECWASH']],
    'washer_energy_star'         => BOOLEAN[row['ESCWASH']],
    'washer_incent'              => INCENTIVE[row['HELPCW']],
    'washer_incent_year'         => YEAR_INCENTIVIZED[row['HELPCWY']],
    'washer_replaced'            => BOOLEAN[row['REPLCCW']],
    'washer_temp_rinse'          => WASHER_TEMP[row['RNSETEMP']],
    'washer_temp_wash'           => WASHER_TEMP[row['WASHTEMP']],
    'washer_type'                => WASHER_TYPE[row['TOPFRONT']],
    'washer_use'                 => WASHER_USE[row['WASHLOAD']],
    'water_heater'               => WATER_HEATER[row['H2OTYPE1']],
    'water_heater_age'           => AGE[row['WHEATAGE']],
    'water_heater_blanket'       => BOOLEAN[row['WHEATBKT']],
    'water_heater_fuel'          => FUEL[row['FUELH2O']],
    'water_heater_incent'        => INCENTIVE[row['HELPWH']],
    'water_heater_incent_year'   => YEAR_INCENTIVIZED[row['HELPWHY']],
    'water_heater_size'          => WATER_HEATER_SIZE[row['WHEATSIZ']],
    'water_heater_shared'        => BOOLEAN[row['WHEATOTH']],
    'water_heater_2'             => WATER_HEATER[row['H2OTYPE2']],
    'water_heater_2_age'         => AGE[row['WHEATAGE2']],
    'water_heater_2_fuel'        => FUEL[row['FUELH2O2']],
    'water_heater_2_size'        => WATER_HEATER_SIZE[row['WHEATSIZ2']],
    'water_heaters_storage'      => row['NUMH2OHTRS'],
    'water_heaters_tankless'     => row['NUMH2ONOTNK'],
    'well_pump'                  => BOOLEAN[row['WELLPUMP']],
    'window_panes'               => WINDOW_PANES[row['TYPEGLASS']],
    'windows'                    => WINDOWS[row['WINDOWS']],
    'windows_incent'             => INCENTIVE[row['HELPWIN']],
    'windows_incent_year'        => YEAR_INCENTIVIZED[row['HELPWINY']],
    'windows_replaced'           => WINDOWS_REPLACED[row['NEWGLASS']],
    'wood_heat'                  => BOOLEAN[row['WDWARM']],
    'wood_heat_2'                => BOOLEAN[row['WOODAUX']],
    'wood_water'                 => BOOLEAN[row['WDWATER']],
    'wood_other'                 => BOOLEAN[row['WDOTHUSE']],
    'year_occupied'              => YEAR_OCCUPIED[row['OCCUPYYRANGE']]
  })
end
computer_idle(on_off, sleep) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 401
def computer_idle(on_off, sleep)
  if BOOLEAN[on_off]
    'Turned off'
  elsif BOOLEAN[sleep]
    'Sleep / standby'
  end
end
garage(row) click to toggle source

Type of garage

# File lib/earth/residence/recs_2009_response/parser.rb, line 410
def garage(row)
  if BOOLEAN[row['PRKGPLC1']]
    'Attached'
  elsif BOOLEAN[row['PRKGPLC2']]
    'Detached'
  end
end
heat_cool_coverage(any, all_some, portion) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 418
def heat_cool_coverage(any, all_some, portion)
  case any
  when '0' # no heating or cooling
    0
  when '1' # some heating or cooling
    case all_some
    when '1' # entire space heated or cooled
      1
    when '2' # part of space heated or cooled
      case portion
      when '1' # Very Little (1-4%)
        0.025
      when '2' # Some (5-33%)
        0.19
      when '3' # About Half (33-66%)
        0.5
      when '4' # About Three-Quarters (67-95%)
        0.75
      when '5' # Most of It (96-99%)
        0.975
      end
    end
  end
end
numerize(value, negative_interpretation) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 443
def numerize(value, negative_interpretation)
  number = value.to_i
  number < 0 ? negative_interpretation : number
end
oven_type(row) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 448
def oven_type(row)
  if BOOLEAN[row['OVENCLN']]
    case row['TYPECLN']
    when '1'
      'Continuous self-cleaning'
    when '2'
      'Manual self-cleaning'
    else
      "Not self-cleaning"
    end
  end
end
payer(initial, follow_up) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 461
def payer(initial, follow_up)
  case initial
  when '1'
    'Paid by the household'
  when '2'
    'Included in rent'
  when '3'
    case follow_up
    when '1'
      'Paid by a relative'
    when '2'
      'Paid by rental or condo agency'
    when '3'
      'Paid by some other party'
    end
  end
end
secondary_heating_systems(row) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 479
def secondary_heating_systems(row)
  @secondary_heating_systems ||= {
    'Steam or Hot Water System'      => (row['RADFUEL']  if BOOLEAN[row['STEAMR'  ]]),
    'Central Warm-Air Furnace'       => (row['FURNFUEL'] if BOOLEAN[row['WARMAIR' ]]),
    'Heat Pump'                      => ('5'             if BOOLEAN[row['REVERSE' ]]),
    'Built-In Electric Units'        => ('5'             if BOOLEAN[row['PERMELEC']]),
    'Floor or Wall Pipeless Furnace' => (row['PIPEFUEL'] if BOOLEAN[row['PIPELESS']]),
    'Built-In Room Heaters'          => (row['RMHTFUEL'] if BOOLEAN[row['ROOMHEAT']]),
    'Heating Stove'                  => (row['HSFUEL']   if BOOLEAN[row['WOODKILN']]),
    'Fireplace'                      => (row['FPFUEL']   if BOOLEAN[row['CHIMNEY' ]]),
    'Portable Electric Heaters'      => ('5'             if BOOLEAN[row['CARRYEL' ]]),
    'Portable Kerosene Heaters'      => ('4'             if BOOLEAN[row['CARRYKER']]),
    'Cooking Stove'                  => (row['RNGFUEL']  if BOOLEAN[row['RANGE'   ]]),
    'Other'                          => (row['DIFFUEL']  if BOOLEAN[row['DIFEQUIP']])
  }.keep_if{|k,v| v}
end
vampires(charging, unplugging) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 496
def vampires(charging, unplugging)
  if charging == '1'
    'Chargers never unplugged'
  else
    case unplugging
    when '1'
      'Chargers always unplugged'
    when '2'
      'Chargers never unplugged'
    when '3'
      'Chargers sometimes unplugged'
    end
  end
end
year_improved(improvement_age) click to toggle source
# File lib/earth/residence/recs_2009_response/parser.rb, line 511
def year_improved(improvement_age)
  2009 - improvement_age if improvement_age
end