lodging 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,9 +7,9 @@ Feature: Lodging Committee Calculations
7
7
  Then the committee should have used quorum "default"
8
8
  And the conclusion of the committee should be "1"
9
9
 
10
- Scenario: Nights committee from default
10
+ Scenario: Duration committee from default
11
11
  Given a lodging emitter
12
- When the "nights" committee is calculated
12
+ When the "duration" committee is calculated
13
13
  Then the committee should have used quorum "default"
14
14
  And the conclusion of the committee should be "1"
15
15
 
@@ -11,8 +11,8 @@ Feature: Lodging Emissions Calculations
11
11
  When emissions are calculated
12
12
  Then the emission value should be within "0.1" kgs of "68.7"
13
13
 
14
- Scenario: Calculations starting from nights
15
- Given a lodging has "nights" of "5"
14
+ Scenario: Calculations starting from duration
15
+ Given a lodging has "duration" of "5"
16
16
  When emissions are calculated
17
17
  Then the emission value should be within "0.1" kgs of "68.7"
18
18
 
@@ -31,23 +31,23 @@ Feature: Lodging Emissions Calculations
31
31
  When emissions are calculated
32
32
  Then the emission value should be within "0.1" kgs of "5.8"
33
33
 
34
- Scenario: Calculations starting from rooms, nights, and lodging class
34
+ Scenario: Calculations starting from rooms, duration, and lodging class
35
35
  Given a lodging has "rooms" of "2"
36
- And it has "nights" of "2"
36
+ And it has "duration" of "2"
37
37
  And it has "lodging_class.name" of "Luxury Hotel"
38
38
  When emissions are calculated
39
39
  Then the emission value should be within "0.1" kgs of "110.0"
40
40
 
41
- Scenario: Calculations starting from rooms, nights, and state
41
+ Scenario: Calculations starting from rooms, duration, and state
42
42
  Given a lodging has "rooms" of "2"
43
- And it has "nights" of "2"
43
+ And it has "duration" of "2"
44
44
  And it has "state.postal_abbreviation" of "CA"
45
45
  When emissions are calculated
46
46
  Then the emission value should be within "0.1" kgs of "40.0"
47
47
 
48
- Scenario: Calculations starting from rooms, nights, and zip code
48
+ Scenario: Calculations starting from rooms, duration, and zip code
49
49
  Given a lodging has "rooms" of "2"
50
- And it has "nights" of "2"
50
+ And it has "duration" of "2"
51
51
  And it has "zip_code.name" of "94122"
52
52
  When emissions are calculated
53
53
  Then the emission value should be within "0.1" kgs of "23.3"
@@ -2,39 +2,66 @@
2
2
  # See LICENSE for details.
3
3
  # Contact Brighter Planet for dual-license arrangements.
4
4
 
5
-
5
+ ## Lodging carbon model
6
+ # This model is used by [Brighter Planet](http://brighterplanet.com)'s carbon emission [web service](http://carbon.brighterplanet.com) to estimate the **greenhouse gas emissions of a lodging** (e.g. a hotel stay).
7
+ #
8
+ ##### Calculations
9
+ # The final estimate is the result of the **calculations** detailed below. These calculations are performed in reverse order, starting with the last calculation listed and finishing with the `emission` calculation. Each calculation is named according to the value it returns.
10
+ #
11
+ ##### Methods
12
+ # To accomodate varying client input, each calculation may have one or more **methods**. These are listed under each calculation in order from most to least preferred. Each method is named according to the values it requires. If any of these values is not available the method will be ignored. If all the methods for a calculation are ignored, the calculation will not return a value. "Default" methods do not require any values, and so a calculation with a default method will always return a value.
13
+ #
14
+ ##### Standard compliance
15
+ # Each method lists any established calculation standards with which it **complies**. When compliance with a standard is requested, all methods that do not comply with that standard are ignored. This means that any values a particular method requires will have been calculated using a compliant method, because those are the only methods available. If any value did not have a compliant method in its calculation then it would be undefined, and the current method would have been ignored.
16
+ #
17
+ ##### Collaboration
18
+ # Contributions to this carbon model are actively encouraged and warmly welcomed. This library includes a comprehensive test suite to ensure that your changes do not cause regressions. All changes should include test coverage for new functionality. Please see [sniff](http://github.com/brighterplanet/sniff#readme), our emitter testing framework, for more information.
6
19
  module BrighterPlanet
7
20
  module Lodging
8
21
  module CarbonModel
9
22
  def self.included(base)
10
23
  base.decide :emission, :with => :characteristics do
11
- committee :emission do # returns kg CO2e
12
- quorum 'from rooms, nights, and emission factor', :needs => [:rooms, :nights, :emission_factor] do |characteristics|
13
- characteristics[:rooms] * characteristics[:nights] * characteristics[:emission_factor]
24
+ ### Emission calculation
25
+ # Returns the `emission` estimate (*kg CO<sub>2</sub>e*).
26
+ committee :emission do
27
+ #### Emission from rooms, duration, and emission factor
28
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
29
+ #
30
+ # Multiplies `rooms` by `duration` and the `emission factor` (*kg CO<sub>2</sub>e / room-night*) to give (*kg CO<sub>2</sub>e).
31
+ quorum 'from rooms, duration, and emission factor', :needs => [:rooms, :duration, :emission_factor] do |characteristics|
32
+ characteristics[:rooms] * characteristics[:duration] * characteristics[:emission_factor]
14
33
  end
15
34
 
35
+ #### Default emission
36
+ # **Complies:**
37
+ #
38
+ # Displays an error message if the previous method fails.
16
39
  quorum 'default' do
17
40
  raise "The emission committee's default quorum should never be called."
18
41
  end
19
42
  end
20
43
 
21
- committee :emission_factor do # returns kg CO2e per room night
44
+ ### Emission factor calculation
45
+ # Returns the `emission factor` (*kg CO<sub>2</sub>e / room-night*)
46
+ committee :emission_factor do
47
+ #### Emission factor from fuel intensities and eGRID
48
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
49
+ #
50
+ # - Looks up the [natural gas](http://data.brighterplanet.com/fuels) emission factor (*kg CO<sub>2</sub>e / cubic m*)
51
+ # - Looks up the [fuel oil](http://data.brighterplanet.com/fuels) emission factor (*kg CO<sub>2</sub>e / l*)
52
+ # - Looks up the [eGRID subregion](http://data.brighterplanet.com/egrid_subregions) electricity emission factor
53
+ # - Looks up the [eGRID region](http://data.brighterplanet.com/egrid_regions) electricity loss factor
54
+ # - Adjusts the electricity emission factor upwards by dividing by 1 - the electricity loss factor
55
+ # - Divides the natural gas emission factor (*kg CO<sub>2</sub>e / cubic m*) by the natural gas energy content (38,339,000 *J / cubic m*) to give an energy-based natural gas emission factor (*kg CO<sub>2</sub>e / J*)
56
+ # - Divides the fuel oil emission factor (*kg CO<sub>2</sub>e / l*) by the fuel oil energy content (38,655,000 *J / l*) to give an energy-based fuel oil emission factor (*kg CO<sub>2</sub>e / J*)
57
+ # - Divides the energy-based natural gas emission factor by 0.817 and the energy-based fuel oil emission factor by 0.846, adds these together and divides by 2, and divides by 0.95. This gives a district heat emission factor (*kg CO<sub>2</sub>e / J*) based on the assumption that district heat is produced by 50% natural gas and 50% fuel oil, natural gas boilers are 81.7% efficient, fuel oil boilers are 84.6% efficient, and transmission losses are 5%.
58
+ # - Multiplies `natural gas intensity` by the natural gas emission factor, `fuel oil intensity` by the fuel oil emission factor, `electricity intensity` by the electricity emission factor, and `district heat intensity` by the district heat emission factor
59
+ # - Adds these together
22
60
  quorum 'from fuel intensities and eGRID', :needs => [:natural_gas_intensity, :fuel_oil_intensity, :electricity_intensity, :district_heat_intensity, :egrid_subregion, :egrid_region] do |characteristics|
23
61
  natural_gas = FuelType.find_by_name "Commercial Natural Gas"
24
62
  fuel_oil = FuelType.find_by_name "Distillate Fuel Oil 2"
25
-
26
- # FIXME TODO won't need this once we convert emission factors to co2 / unit energy
27
- # kg / J kg / cubic m J / cubic m
28
63
  natural_gas_energy_ef = natural_gas.emission_factor / 38_339_000
29
-
30
- # FIXME TODO won't need this once we convert emission factors to co2 / unit energy
31
- # kg / J kg / l J / l
32
64
  fuel_oil_energy_ef = fuel_oil.emission_factor / 38_655_000
33
-
34
- # based on CA-CP calculator
35
- # assume district heat is 50% natural gas 50% distillate fuel
36
- # assume natural gas boilers 81.7% efficient; fuel oil boilers 84.6% efficient
37
- # assume 5% transmission loss
38
65
  district_heat_emission_factor = (((natural_gas_energy_ef / 0.817) / 2) + ((fuel_oil_energy_ef / 0.846) / 2)) / 0.95
39
66
 
40
67
  (characteristics[:natural_gas_intensity] * natural_gas.emission_factor) +
@@ -44,89 +71,191 @@ module BrighterPlanet
44
71
  end
45
72
  end
46
73
 
47
- committee :natural_gas_intensity do # returns cubic metres per room-night
74
+ ### Natural gas intensity calculation
75
+ # Returns the `natural gas intensity` (*cubic m / room-night*).
76
+ committee :natural_gas_intensity do
77
+ #### Natural gas intensity from census division
78
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
79
+ #
80
+ # Looks up the [census division](http://data.brighterplanet.com/census_divisions) `natural gas intensity` (*cubic m / room-night*).
48
81
  quorum 'from census division', :needs => :census_division do |characteristics|
49
82
  characteristics[:census_division].lodging_building_natural_gas_intensity
50
83
  end
51
84
 
85
+ #### Natural gas intensity from lodging class
86
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
87
+ #
88
+ # Looks up the [lodging class](http://data.brighterplanet.com/lodging_class) `natural gas intensity` (*cubic m / room-night*).
52
89
  quorum 'from lodging class', :needs => :lodging_class do |characteristics|
53
90
  characteristics[:lodging_class].natural_gas_intensity
54
91
  end
55
92
  end
56
93
 
57
- committee :fuel_oil_intensity do # returns litres per room-night
94
+ ### Fuel oil intensity calculation
95
+ # Returns the `fuel oil intensity` (*l / room-night*).
96
+ committee :fuel_oil_intensity do
97
+ #### Fuel oil intensity from census division
98
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
99
+ #
100
+ # Looks up the [census division](http://data.brighterplanet.com/census_divisions) `fuel oil intensity` (*l / room-night*).
58
101
  quorum 'from census division', :needs => :census_division do |characteristics|
59
102
  characteristics[:census_division].lodging_building_fuel_oil_intensity
60
103
  end
61
104
 
105
+ #### Fuel oil intensity from lodging class
106
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
107
+ #
108
+ # Looks up the [lodging class](http://data.brighterplanet.com/lodging_class) `fuel oil intensity` (*l / room-night*).
62
109
  quorum 'from lodging class', :needs => :lodging_class do |characteristics|
63
110
  characteristics[:lodging_class].fuel_oil_intensity
64
111
  end
65
112
  end
66
113
 
67
- committee :electricity_intensity do # returns kilowatt hours per room-night
114
+ ### Electricity intensity calculation
115
+ # Returns the `electricity intensity` (*kWh / room-night*).
116
+ committee :electricity_intensity do
117
+ #### Electricity intensity from census division
118
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
119
+ #
120
+ # Looks up the [census division](http://data.brighterplanet.com/census_divisions) `electricity intensity` (*kWh / room-night*).
68
121
  quorum 'from census division', :needs => :census_division do |characteristics|
69
122
  characteristics[:census_division].lodging_building_electricity_intensity
70
123
  end
71
124
 
125
+ #### Electricity intensity from lodging class
126
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
127
+ #
128
+ # Looks up the [lodging class](http://data.brighterplanet.com/lodging classes) `electricity intensity` (*kWh / room-night*).
72
129
  quorum 'from lodging class', :needs => :lodging_class do |characteristics|
73
130
  characteristics[:lodging_class].electricity_intensity
74
131
  end
75
132
  end
76
133
 
77
- committee :district_heat_intensity do # returns joules per room-night
134
+ ### District heat intensity calculation
135
+ # Returns the `district heat intensity` (*J / room-night*).
136
+ committee :district_heat_intensity do
137
+ #### District heat intensity from census division
138
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
139
+ #
140
+ # Looks up the [census division](http://data.brighterplanet.com/census_divisions) `district heat intensity` (*J / room-night*).
78
141
  quorum 'from census division', :needs => :census_division do |characteristics|
79
142
  characteristics[:census_division].lodging_building_district_heat_intensity
80
143
  end
81
144
 
145
+ #### District heat intensity from lodging class
146
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
147
+ #
148
+ # Looks up the [lodging class](http://data.brighterplanet.com/lodging_classes) `district heat intensity` (*J / room-night*).
82
149
  quorum 'from lodging class', :needs => :lodging_class do |characteristics|
83
150
  characteristics[:lodging_class].district_heat_intensity
84
151
  end
85
152
  end
86
153
 
87
- committee :lodging_class do # returns the type of lodging
154
+ ### Lodging class calculation
155
+ # Returns the [lodging class](http://data.brighterplanet.com/lodging_classes).
156
+ committee :lodging_class do
157
+ #### Lodging class from client input
158
+ # **Complies:** All
159
+ #
160
+ # Uses the client-input [loding class](http://data.brighterplanet.com/lodging_classes).
161
+
162
+ #### Default lodging class
163
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
164
+ #
165
+ # Uses an artificial [lodging class](http://data.brighterplanet.com/lodging_classes) that represents the U.S. average.
88
166
  quorum 'default' do
89
167
  LodgingClass.find_by_name 'Average'
90
168
  end
91
169
  end
92
170
 
93
- committee :egrid_region do # returns eGRID region
171
+ ### eGRID region calculation
172
+ # Returns the lodging's [eGRID region](http://data.brighterplanet.com/egrid_regions).
173
+ committee :egrid_region do
174
+ #### eGRID region from eGRID subregion
175
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
176
+ #
177
+ # Looks up the [eGRID subregion](http://data.brighterplanet.com/egrid_subregions) `eGRID region`.
94
178
  quorum 'from eGRID subregion', :needs => :egrid_subregion do |characteristics|
95
179
  characteristics[:egrid_subregion].egrid_region
96
180
  end
97
181
  end
98
182
 
99
- committee :egrid_subregion do # returns eGRID subregion
183
+ ### eGRID subregion calculation
184
+ # Returns the lodging's [eGRID subregion](http://data.brighterplanet.com/egrid_subregions).
185
+ committee :egrid_subregion do
186
+ #### eGRID subregion from zip code
187
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
188
+ #
189
+ # Looks up the [zip code](http://data.brighterplanet.com/zip_codes) `eGRID subregion`.
100
190
  quorum 'from zip code', :needs => :zip_code do |characteristics|
101
191
  characteristics[:zip_code].egrid_subregion
102
192
  end
103
193
 
194
+ #### Default eGRID subregion
195
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
196
+ #
197
+ # Uses an artificial [eGRID subregion](http://data.brighterplanet.com/egrid_subregions) that represents the U.S. average.
104
198
  quorum 'default' do
105
199
  EgridSubregion.find_by_abbreviation 'US'
106
200
  end
107
201
  end
108
202
 
109
- committee :census_division do # returns census division
203
+ ### Census division calculation
204
+ # Returns the lodging's [census division](http://data.brighterplanet.com/census_divisions).
205
+ committee :census_division do
206
+ #### Census division from state
207
+ # Looks up the [state](http://data.brighterplanet.com/states) `census division`.
110
208
  quorum 'from state', :needs => :state do |characteristics|
111
209
  characteristics[:state].census_division
112
210
  end
113
211
  end
114
212
 
115
- committee :state do # returns state
213
+ ### State calculation
214
+ # Returns the lodging's [state](http://data.brighterplanet.com/states).
215
+ committee :state do
216
+ #### State from zip code
217
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
218
+ #
219
+ # Looks up the [zip code](http://data.brighterplanet.com/zip_codes) `state`.
116
220
  quorum 'from zip code', :needs => :zip_code do |characteristics|
117
221
  characteristics[:zip_code].state
118
222
  end
119
223
  end
120
224
 
121
- committee :nights do # returns nights
225
+ ### Zip code calculation
226
+ # Returns the client-input [zip code](http://data.brighterplanet.com/zip_codes).
227
+
228
+ ### Duration calculation
229
+ # Returns the stay's `duration` (*nights*).
230
+ committee :duration do
231
+ #### Duration from client input
232
+ # **Complies:** All
233
+ #
234
+ # Uses the client-input `duration` (*nights*).
235
+
236
+ #### Default duration
237
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
238
+ #
239
+ # Uses 1 *night*.
122
240
  quorum 'default' do
123
- base.fallback.nights
241
+ 1
124
242
  end
125
243
  end
126
244
 
127
- committee :rooms do # return rooms
245
+ ### Rooms calculation
246
+ # Returns the number of `rooms` used.
247
+ committee :rooms do
248
+ #### Rooms from client input
249
+ # **Complies:** All
250
+ #
251
+ # Uses the client-input number of `rooms`.
252
+
253
+ #### Default rooms
254
+ # **Complies:** GHG Protocol, ISO 14064-1, Climate Registry Protocol
255
+ #
256
+ # Uses 1 room.
128
257
  quorum 'default' do
129
- base.fallback.rooms
258
+ 1
130
259
  end
131
260
  end
132
261
  end
@@ -7,7 +7,7 @@ module BrighterPlanet
7
7
  has :zip_code
8
8
  has :state
9
9
  has :rooms
10
- has :nights
10
+ has :duration
11
11
  end
12
12
  end
13
13
  end
data/lib/lodging/data.rb CHANGED
@@ -8,7 +8,7 @@ module BrighterPlanet
8
8
  string 'zip_code_name'
9
9
  string 'state_postal_abbreviation'
10
10
  integer 'rooms'
11
- integer 'nights'
11
+ integer 'duration'
12
12
  end
13
13
 
14
14
  process :run_data_miner_on_belongs_to_associations
@@ -10,7 +10,4 @@ class LodgingRecord < ActiveRecord::Base
10
10
  belongs_to :lodging_class, :foreign_key => 'lodging_class_name'
11
11
  belongs_to :zip_code, :foreign_key => 'zip_code_name'
12
12
  belongs_to :state, :foreign_key => 'state_postal_abbreviation'
13
-
14
- falls_back_on :rooms => 1,
15
- :nights => 1
16
13
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lodging
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 13
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 8
9
- version: 0.0.8
9
+ - 9
10
+ version: 0.0.9
10
11
  platform: ruby
11
12
  authors:
12
13
  - Andy Rossmeissl
@@ -18,100 +19,108 @@ autorequire:
18
19
  bindir: bin
19
20
  cert_chain: []
20
21
 
21
- date: 2010-10-19 00:00:00 -04:00
22
+ date: 2010-11-17 00:00:00 -08:00
22
23
  default_executable:
23
24
  dependencies:
24
25
  - !ruby/object:Gem::Dependency
25
26
  name: activerecord
27
+ prerelease: false
26
28
  requirement: &id001 !ruby/object:Gem::Requirement
27
29
  none: false
28
30
  requirements:
29
31
  - - ~>
30
32
  - !ruby/object:Gem::Version
33
+ hash: 7
31
34
  segments:
32
35
  - 3
33
36
  - 0
34
37
  - 0
35
38
  version: 3.0.0
36
39
  type: :development
37
- prerelease: false
38
40
  version_requirements: *id001
39
41
  - !ruby/object:Gem::Dependency
40
42
  name: bundler
43
+ prerelease: false
41
44
  requirement: &id002 !ruby/object:Gem::Requirement
42
45
  none: false
43
46
  requirements:
44
47
  - - ~>
45
48
  - !ruby/object:Gem::Version
49
+ hash: 23
46
50
  segments:
47
51
  - 1
48
52
  - 0
49
53
  - 0
50
54
  version: 1.0.0
51
55
  type: :development
52
- prerelease: false
53
56
  version_requirements: *id002
54
57
  - !ruby/object:Gem::Dependency
55
58
  name: cucumber
59
+ prerelease: false
56
60
  requirement: &id003 !ruby/object:Gem::Requirement
57
61
  none: false
58
62
  requirements:
59
63
  - - ">="
60
64
  - !ruby/object:Gem::Version
65
+ hash: 3
61
66
  segments:
62
67
  - 0
63
68
  version: "0"
64
69
  type: :development
65
- prerelease: false
66
70
  version_requirements: *id003
67
71
  - !ruby/object:Gem::Dependency
68
72
  name: jeweler
73
+ prerelease: false
69
74
  requirement: &id004 !ruby/object:Gem::Requirement
70
75
  none: false
71
76
  requirements:
72
77
  - - ~>
73
78
  - !ruby/object:Gem::Version
79
+ hash: 7
74
80
  segments:
75
81
  - 1
76
82
  - 4
77
83
  - 0
78
84
  version: 1.4.0
79
85
  type: :development
80
- prerelease: false
81
86
  version_requirements: *id004
82
87
  - !ruby/object:Gem::Dependency
83
88
  name: rake
89
+ prerelease: false
84
90
  requirement: &id005 !ruby/object:Gem::Requirement
85
91
  none: false
86
92
  requirements:
87
93
  - - ">="
88
94
  - !ruby/object:Gem::Version
95
+ hash: 3
89
96
  segments:
90
97
  - 0
91
98
  version: "0"
92
99
  type: :development
93
- prerelease: false
94
100
  version_requirements: *id005
95
101
  - !ruby/object:Gem::Dependency
96
102
  name: rdoc
103
+ prerelease: false
97
104
  requirement: &id006 !ruby/object:Gem::Requirement
98
105
  none: false
99
106
  requirements:
100
107
  - - ">="
101
108
  - !ruby/object:Gem::Version
109
+ hash: 3
102
110
  segments:
103
111
  - 0
104
112
  version: "0"
105
113
  type: :development
106
- prerelease: false
107
114
  version_requirements: *id006
108
115
  - !ruby/object:Gem::Dependency
109
116
  name: rspec
117
+ prerelease: false
110
118
  requirement: &id007 !ruby/object:Gem::Requirement
111
119
  none: false
112
120
  requirements:
113
121
  - - ~>
114
122
  - !ruby/object:Gem::Version
123
+ hash: 62196417
115
124
  segments:
116
125
  - 2
117
126
  - 0
@@ -120,37 +129,38 @@ dependencies:
120
129
  - 17
121
130
  version: 2.0.0.beta.17
122
131
  type: :development
123
- prerelease: false
124
132
  version_requirements: *id007
125
133
  - !ruby/object:Gem::Dependency
126
134
  name: sniff
135
+ prerelease: false
127
136
  requirement: &id008 !ruby/object:Gem::Requirement
128
137
  none: false
129
138
  requirements:
130
139
  - - ~>
131
140
  - !ruby/object:Gem::Version
141
+ hash: 23
132
142
  segments:
133
143
  - 0
134
144
  - 2
135
145
  - 0
136
146
  version: 0.2.0
137
147
  type: :development
138
- prerelease: false
139
148
  version_requirements: *id008
140
149
  - !ruby/object:Gem::Dependency
141
150
  name: emitter
151
+ prerelease: false
142
152
  requirement: &id009 !ruby/object:Gem::Requirement
143
153
  none: false
144
154
  requirements:
145
155
  - - ~>
146
156
  - !ruby/object:Gem::Version
157
+ hash: 21
147
158
  segments:
148
159
  - 0
149
160
  - 1
150
161
  - 7
151
162
  version: 0.1.7
152
163
  type: :runtime
153
- prerelease: false
154
164
  version_requirements: *id009
155
165
  description: A software model in Ruby for the greenhouse gas emissions of a lodging
156
166
  email: andy@rossmeissl.net
@@ -187,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
197
  requirements:
188
198
  - - ">="
189
199
  - !ruby/object:Gem::Version
190
- hash: 3820895678693949389
200
+ hash: 3
191
201
  segments:
192
202
  - 0
193
203
  version: "0"
@@ -196,6 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
206
  requirements:
197
207
  - - ">="
198
208
  - !ruby/object:Gem::Version
209
+ hash: 3
199
210
  segments:
200
211
  - 0
201
212
  version: "0"