carbon 2.2.2 → 2.2.3
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/CHANGELOG +10 -0
- data/lib/carbon.rb +3 -0
- data/lib/carbon/shell/emitter.rb +16 -7
- data/lib/carbon/version.rb +1 -1
- data/test/carbon_test.rb +5 -0
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
2.2.3 / 2012-04-12
|
2
|
+
|
3
|
+
* Enhancements
|
4
|
+
|
5
|
+
* Raise an ArgumentError if you make the common mistake of calling Carbon.query(array) {} instead of Carbon.query(array).each {}
|
6
|
+
|
7
|
+
* Bug fixes
|
8
|
+
|
9
|
+
* Fix how shell gets characteristics for an emitter
|
10
|
+
|
1
11
|
2.2.2 / 2012-04-05
|
2
12
|
|
3
13
|
* Enhancements
|
data/lib/carbon.rb
CHANGED
@@ -95,6 +95,8 @@ module Carbon
|
|
95
95
|
#
|
96
96
|
# @raise [ArgumentError] If your arguments don't match any of the method signatures.
|
97
97
|
#
|
98
|
+
# @raise [ArgumentError] If you try to pass a block - you probably want +Carbon.query(array).each {}+ or something.
|
99
|
+
#
|
98
100
|
# @example A flight taken in 2009
|
99
101
|
# Carbon.query('Flight', :origin_airport => 'MSN', :destination_airport => 'ORD', :date => '2009-01-01', :timeframe => Timeframe.new(:year => 2009), :comply => [:tcr])
|
100
102
|
#
|
@@ -132,6 +134,7 @@ module Carbon
|
|
132
134
|
# puts "Carbon emitter by #{car_or_flight} was #{impact.decisions.carbon.object.value.round(1)}"
|
133
135
|
# end
|
134
136
|
def Carbon.query(*args)
|
137
|
+
raise ::ArgumentError, "Don't pass a block directly - instead use Carbon.query(array).each (for example)." if block_given?
|
135
138
|
case Carbon.method_signature(*args)
|
136
139
|
when :plain_query
|
137
140
|
plain_query = args
|
data/lib/carbon/shell/emitter.rb
CHANGED
@@ -1,11 +1,22 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'net/http'
|
3
3
|
require 'conversions'
|
4
|
+
require 'cache_method'
|
4
5
|
|
5
6
|
module Carbon
|
6
7
|
class Shell
|
7
8
|
# @private
|
8
9
|
class Emitter < Bombshell::Environment
|
10
|
+
class << self
|
11
|
+
# @private
|
12
|
+
def characteristics(emitter)
|
13
|
+
::MultiJson.decode ::Net::HTTP.get(::URI.parse("http://impact.brighterplanet.com/#{emitter.underscore.pluralize}/options.json"))
|
14
|
+
rescue
|
15
|
+
# oops
|
16
|
+
end
|
17
|
+
cache_method :characteristics, 300
|
18
|
+
end
|
19
|
+
|
9
20
|
include Bombshell::Shell
|
10
21
|
include Carbon
|
11
22
|
|
@@ -13,10 +24,8 @@ module Carbon
|
|
13
24
|
def initialize(name, input = {})
|
14
25
|
@emitter = name.to_s.singularize.camelcase
|
15
26
|
@input = input
|
16
|
-
|
17
|
-
|
18
|
-
@characteristics = ::MultiJson.decode response.body
|
19
|
-
@characteristics.keys.each do |characteristic|
|
27
|
+
if characteristics = Emitter.characteristics(@emitter)
|
28
|
+
characteristics.each do |characteristic|
|
20
29
|
instance_eval <<-meth
|
21
30
|
def #{characteristic}(arg = nil)
|
22
31
|
if arg
|
@@ -28,12 +37,12 @@ module Carbon
|
|
28
37
|
end
|
29
38
|
meth
|
30
39
|
end
|
31
|
-
provisions =
|
40
|
+
provisions = characteristics.map { |k| "provide :#{k}"}.join('; ')
|
32
41
|
emit_as_block = "emit_as(:#{name}) { #{provisions} }"
|
33
42
|
self.class.class_eval emit_as_block
|
34
43
|
emission
|
35
44
|
else
|
36
|
-
puts " => Sorry, characteristics couldn't be retrieved for #{@emitter.underscore.pluralize}
|
45
|
+
puts " => Sorry, characteristics couldn't be retrieved for #{@emitter.underscore.pluralize}. Please try again later."
|
37
46
|
done
|
38
47
|
end
|
39
48
|
end
|
@@ -123,7 +132,7 @@ module Carbon
|
|
123
132
|
|
124
133
|
# @private
|
125
134
|
def help
|
126
|
-
puts " => #{@
|
135
|
+
puts " => #{Emitter.characteristics(@emitter).join ', '}"
|
127
136
|
end
|
128
137
|
|
129
138
|
prompt_with do |emitter|
|
data/lib/carbon/version.rb
CHANGED
data/test/carbon_test.rb
CHANGED
@@ -126,6 +126,11 @@ describe Carbon do
|
|
126
126
|
it "doesn't hang up on 0 queries" do
|
127
127
|
Timeout.timeout(0.5) { Carbon.query([]) }.must_equal(Hash.new)
|
128
128
|
end
|
129
|
+
it "raises if you pass it a block directly" do
|
130
|
+
lambda {
|
131
|
+
Carbon.query([]) { }
|
132
|
+
}.must_raise(ArgumentError)
|
133
|
+
end
|
129
134
|
it "can be used on objects that respond to #as_impact_query" do
|
130
135
|
a = MyNissanAltima.new(2001)
|
131
136
|
b = MyNissanAltima.new(2006)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carbon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-04-
|
12
|
+
date: 2012-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|