carbon 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.rdoc CHANGED
@@ -240,7 +240,7 @@ This library includes a special console for performing calculations interactivel
240
240
  === Shell mode
241
241
 
242
242
  [+help+] Displays a list of emitter types.
243
- [+key+ _yourkey_] Set the {developer key}[http://keys.brighterplanet.com] that should be used for this session. Alternatively, put this key in <tt>~/.carbon_middleware</tt> and it will be auto-selected on console startup.
243
+ [+key+ _yourkey_] Set the {developer key}[http://keys.brighterplanet.com] that should be used for this session. Alternatively, put this key in <tt>~/.brighter_planet</tt> and it will be auto-selected on console startup.
244
244
  [+_emitter_type_+] (e.g. +flight+) Enters emitter mode using this emitter type.
245
245
  [<tt><i>emitter_type num</i></tt>] (e.g. <tt>flight 0</tt>) Recalls a previous emitter from this session.
246
246
  [+exit+] Quits.
data/bin/carbon CHANGED
File without changes
data/carbon.gemspec CHANGED
@@ -30,4 +30,5 @@ Gem::Specification.new do |s|
30
30
  s.add_development_dependency 'fakeweb'
31
31
  s.add_development_dependency 'rspec'
32
32
  s.add_development_dependency 'aruba'
33
+ s.add_development_dependency 'rake'
33
34
  end
data/lib/carbon.rb CHANGED
@@ -6,20 +6,14 @@ require 'rest' # provided by nap gem
6
6
  require 'active_support'
7
7
  require 'active_support/version'
8
8
  %w{
9
- active_support/core_ext/module/attribute_accessors
10
- active_support/core_ext/class/attribute_accessors
11
- active_support/core_ext/hash/keys
12
- active_support/core_ext/hash/reverse_merge
13
- active_support/core_ext/object/to_query
9
+ active_support/core_ext
14
10
  active_support/inflector
15
11
  active_support/inflector/inflections
16
12
  active_support/json/decoding
17
13
  }.each do |active_support_3_requirement|
18
14
  require active_support_3_requirement
19
- end if ActiveSupport::VERSION::MAJOR == 3
15
+ end if ActiveSupport::VERSION::MAJOR >= 3
20
16
 
21
- require 'carbon/base'
22
- require 'carbon/emission_estimate'
23
17
  require 'logger'
24
18
 
25
19
  # A module (aka mixin) that lets you estimate carbon emissions by querying the {Brighter Planet carbon middleware emission estimate web service}[http://carbon.brighterplanet.com].
@@ -42,8 +36,11 @@ require 'logger'
42
36
  #
43
37
  # Once you've mixed in <tt>Carbon</tt>, you get the method <tt>emission_estimate</tt>, which you can call at any time to request an emission estimate.
44
38
  module Carbon
39
+ autoload :Base, 'carbon/base'
40
+ autoload :EmissionEstimate, 'carbon/emission_estimate'
41
+ autoload :Registry, 'carbon/registry'
42
+
45
43
  def self.included(klass) # :nodoc:
46
- klass.cattr_accessor :carbon_base
47
44
  klass.extend ClassMethods
48
45
  end
49
46
 
@@ -82,11 +79,15 @@ module Carbon
82
79
  # provide :make
83
80
  # end
84
81
  def emit_as(emitter_common_name, &block)
85
- self.carbon_base = ::Carbon::Base.new self, emitter_common_name
82
+ Registry.instance[name] = ::Carbon::Base.new emitter_common_name
86
83
  ::Blockenspiel.invoke block, carbon_base
87
84
  end
88
85
  # Third-person singular preferred.
89
86
  alias :emits_as :emit_as
87
+
88
+ def carbon_base # :nodoc:
89
+ Registry.instance[name]
90
+ end
90
91
  end
91
92
 
92
93
  # Returns an emission estimate.
data/lib/carbon/base.rb CHANGED
@@ -4,11 +4,9 @@ module Carbon
4
4
  # An instance of this appears on any class that includes <tt>Carbon</tt>.
5
5
  class Base
6
6
  include Blockenspiel::DSL
7
- attr_reader :klass
8
7
  attr_reader :emitter_common_name
9
8
 
10
- def initialize(klass, emitter_common_name)
11
- @klass = klass
9
+ def initialize(emitter_common_name)
12
10
  @emitter_common_name = emitter_common_name.to_s
13
11
  end
14
12
 
@@ -1,7 +1,3 @@
1
- require 'carbon/emission_estimate/response'
2
- require 'carbon/emission_estimate/request'
3
- require 'carbon/emission_estimate/storage'
4
-
5
1
  module Carbon
6
2
  # Let's start off by saying that realtime <tt>EmissionEstimate</tt> objects quack like numbers.
7
3
  #
@@ -11,8 +7,13 @@ module Carbon
11
7
  #
12
8
  # At the same time, they contain all the data you get back from the emission estimate web service. For example, you could say <tt>puts my_donut_factor.emission_estimate.oven_count</tt> (see the tests) and you'd get back the oven count used in the calculation, if any.
13
9
  class EmissionEstimate
10
+ autoload :Response, 'carbon/emission_estimate/response'
11
+ autoload :Request, 'carbon/emission_estimate/request'
12
+ autoload :Storage, 'carbon/emission_estimate/storage'
13
+
14
14
  def self.parse(str) #:nodoc:
15
15
  data = ::ActiveSupport::JSON.decode str
16
+ # TODO rename to timeframe
16
17
  data['active_subtimeframe'] = ::Timeframe.interval(data['active_subtimeframe']) if data.has_key? 'active_subtimeframe'
17
18
  data['updated_at'] = ::Time.parse(data['updated_at']) if data.has_key?('updated_at') and data['updated_at'].is_a?(::String)
18
19
  data
@@ -0,0 +1,6 @@
1
+ require 'singleton'
2
+ module Carbon
3
+ class Registry < ::Hash
4
+ include ::Singleton
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Carbon
2
- VERSION = '1.1.1'
2
+ VERSION = '1.1.2'
3
3
  end
metadata CHANGED
@@ -1,191 +1,161 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: carbon
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.2
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 1
9
- - 1
10
- version: 1.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Derek Kastner
14
9
  - Seamus Abshere
15
10
  - Andy Rossmeissl
16
11
  autorequire:
17
12
  bindir: bin
18
13
  cert_chain: []
19
-
20
- date: 2011-04-04 00:00:00 -04:00
21
- default_executable:
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
14
+ date: 2011-07-15 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
24
17
  name: activesupport
25
- prerelease: false
26
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: &2162440820 !ruby/object:Gem::Requirement
27
19
  none: false
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- hash: 9
32
- segments:
33
- - 2
34
- - 3
35
- - 5
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
36
23
  version: 2.3.5
37
24
  type: :runtime
38
- version_requirements: *id001
39
- - !ruby/object:Gem::Dependency
40
- name: i18n
41
25
  prerelease: false
42
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: *2162440820
27
+ - !ruby/object:Gem::Dependency
28
+ name: i18n
29
+ requirement: &2162440400 !ruby/object:Gem::Requirement
43
30
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- hash: 3
48
- segments:
49
- - 0
50
- version: "0"
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
51
35
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: nap
55
36
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
37
+ version_requirements: *2162440400
38
+ - !ruby/object:Gem::Dependency
39
+ name: nap
40
+ requirement: &2162439940 !ruby/object:Gem::Requirement
57
41
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
65
46
  type: :runtime
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- name: timeframe
69
47
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
48
+ version_requirements: *2162439940
49
+ - !ruby/object:Gem::Dependency
50
+ name: timeframe
51
+ requirement: &2162439520 !ruby/object:Gem::Requirement
71
52
  none: false
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- hash: 3
76
- segments:
77
- - 0
78
- version: "0"
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
79
57
  type: :runtime
80
- version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
- name: blockenspiel
83
58
  prerelease: false
84
- requirement: &id005 !ruby/object:Gem::Requirement
59
+ version_requirements: *2162439520
60
+ - !ruby/object:Gem::Dependency
61
+ name: blockenspiel
62
+ requirement: &2162439100 !ruby/object:Gem::Requirement
85
63
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- hash: 3
90
- segments:
91
- - 0
92
- version: "0"
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
93
68
  type: :runtime
94
- version_requirements: *id005
95
- - !ruby/object:Gem::Dependency
96
- name: conversions
97
69
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
70
+ version_requirements: *2162439100
71
+ - !ruby/object:Gem::Dependency
72
+ name: conversions
73
+ requirement: &2162438680 !ruby/object:Gem::Requirement
99
74
  none: false
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- hash: 3
104
- segments:
105
- - 0
106
- version: "0"
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
107
79
  type: :runtime
108
- version_requirements: *id006
109
- - !ruby/object:Gem::Dependency
110
- name: brighter_planet_metadata
111
80
  prerelease: false
112
- requirement: &id007 !ruby/object:Gem::Requirement
81
+ version_requirements: *2162438680
82
+ - !ruby/object:Gem::Dependency
83
+ name: brighter_planet_metadata
84
+ requirement: &2162438260 !ruby/object:Gem::Requirement
113
85
  none: false
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- hash: 3
118
- segments:
119
- - 0
120
- version: "0"
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
121
90
  type: :runtime
122
- version_requirements: *id007
123
- - !ruby/object:Gem::Dependency
124
- name: bombshell
125
91
  prerelease: false
126
- requirement: &id008 !ruby/object:Gem::Requirement
92
+ version_requirements: *2162438260
93
+ - !ruby/object:Gem::Dependency
94
+ name: bombshell
95
+ requirement: &2162437840 !ruby/object:Gem::Requirement
127
96
  none: false
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- hash: 3
132
- segments:
133
- - 0
134
- version: "0"
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
135
101
  type: :runtime
136
- version_requirements: *id008
137
- - !ruby/object:Gem::Dependency
138
- name: fakeweb
139
102
  prerelease: false
140
- requirement: &id009 !ruby/object:Gem::Requirement
103
+ version_requirements: *2162437840
104
+ - !ruby/object:Gem::Dependency
105
+ name: fakeweb
106
+ requirement: &2162437420 !ruby/object:Gem::Requirement
141
107
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- hash: 3
146
- segments:
147
- - 0
148
- version: "0"
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
149
112
  type: :development
150
- version_requirements: *id009
151
- - !ruby/object:Gem::Dependency
152
- name: rspec
153
113
  prerelease: false
154
- requirement: &id010 !ruby/object:Gem::Requirement
114
+ version_requirements: *2162437420
115
+ - !ruby/object:Gem::Dependency
116
+ name: rspec
117
+ requirement: &2162437000 !ruby/object:Gem::Requirement
155
118
  none: false
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- hash: 3
160
- segments:
161
- - 0
162
- version: "0"
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
163
123
  type: :development
164
- version_requirements: *id010
165
- - !ruby/object:Gem::Dependency
124
+ prerelease: false
125
+ version_requirements: *2162437000
126
+ - !ruby/object:Gem::Dependency
166
127
  name: aruba
128
+ requirement: &2152166340 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
167
135
  prerelease: false
168
- requirement: &id011 !ruby/object:Gem::Requirement
136
+ version_requirements: *2152166340
137
+ - !ruby/object:Gem::Dependency
138
+ name: rake
139
+ requirement: &2152165920 !ruby/object:Gem::Requirement
169
140
  none: false
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- hash: 3
174
- segments:
175
- - 0
176
- version: "0"
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
177
145
  type: :development
178
- version_requirements: *id011
179
- description: Carbon is a Ruby API wrapper for the Brighter Planet emission estimate web service (http://carbon.brighterplanet.com). By querying the web service, it can estimate the carbon emissions of many real-life objects, such as cars and houses, based on particular attributes that they may have.
180
- email:
146
+ prerelease: false
147
+ version_requirements: *2152165920
148
+ description: Carbon is a Ruby API wrapper for the Brighter Planet emission estimate
149
+ web service (http://carbon.brighterplanet.com). By querying the web service, it
150
+ can estimate the carbon emissions of many real-life objects, such as cars and houses,
151
+ based on particular attributes that they may have.
152
+ email:
181
153
  - derek.kastner@brighterplanet.com
182
- executables:
154
+ executables:
183
155
  - carbon
184
156
  extensions: []
185
-
186
157
  extra_rdoc_files: []
187
-
188
- files:
158
+ files:
189
159
  - .gitignore
190
160
  - Gemfile
191
161
  - MIT-LICENSE.txt
@@ -207,6 +177,7 @@ files:
207
177
  - lib/carbon/emission_estimate/request.rb
208
178
  - lib/carbon/emission_estimate/response.rb
209
179
  - lib/carbon/emission_estimate/storage.rb
180
+ - lib/carbon/registry.rb
210
181
  - lib/carbon/shell.rb
211
182
  - lib/carbon/shell/emitter.rb
212
183
  - lib/carbon/version.rb
@@ -216,39 +187,37 @@ files:
216
187
  - spec/lib/carbon_spec.rb
217
188
  - spec/spec_helper.rb
218
189
  - spec/specwatchr
219
- has_rdoc: true
220
190
  homepage: https://github.com/brighterplanet/carbon
221
191
  licenses: []
222
-
223
192
  post_install_message:
224
193
  rdoc_options: []
225
-
226
- require_paths:
194
+ require_paths:
227
195
  - lib
228
- required_ruby_version: !ruby/object:Gem::Requirement
196
+ required_ruby_version: !ruby/object:Gem::Requirement
229
197
  none: false
230
- requirements:
231
- - - ">="
232
- - !ruby/object:Gem::Version
233
- hash: 3
234
- segments:
235
- - 0
236
- version: "0"
237
- required_rubygems_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ! '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ required_rubygems_version: !ruby/object:Gem::Requirement
238
203
  none: false
239
- requirements:
240
- - - ">="
241
- - !ruby/object:Gem::Version
242
- hash: 3
243
- segments:
244
- - 0
245
- version: "0"
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
246
208
  requirements: []
247
-
248
209
  rubyforge_project: carbon
249
- rubygems_version: 1.6.2
210
+ rubygems_version: 1.8.5
250
211
  signing_key:
251
212
  specification_version: 3
252
- summary: Carbon is a Ruby API wrapper for the Brighter Planet emission estimate web service (http://carbon.brighterplanet.com).
253
- test_files: []
254
-
213
+ summary: Carbon is a Ruby API wrapper for the Brighter Planet emission estimate web
214
+ service (http://carbon.brighterplanet.com).
215
+ test_files:
216
+ - features/shell.feature
217
+ - features/support/env.rb
218
+ - spec/lib/carbon/emission_estimate/request_spec.rb
219
+ - spec/lib/carbon/emission_estimate/response_spec.rb
220
+ - spec/lib/carbon/emission_estimate_spec.rb
221
+ - spec/lib/carbon_spec.rb
222
+ - spec/spec_helper.rb
223
+ - spec/specwatchr