calculated 0.1.0 → 0.1.1

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.md ADDED
@@ -0,0 +1,290 @@
1
+ #Calculated#
2
+
3
+ Calculated allows you to interact with the [CarbonCalculated API](http://www.carboncalculated.com/platform) in
4
+ a ruby way.
5
+
6
+ "The Carbon Calculated platform is a freely accessible aggregation system containing up to the minute data on carbon emissions and emission calculation"
7
+
8
+ * Idiomatic Ruby
9
+ * Concrete classes and methods modelling CarbonCalculated data
10
+
11
+ Please visit [The Blog](http://blog.carboncalculated.com) For Developer examples and information
12
+
13
+ DOCS Are located [here](http://rdoc.info/projects/hookercookerman/calculated/blob/dd7ed3f73d987492486abb7091f6321e8b04443e)
14
+
15
+ Super Simple Example Apps Using the API
16
+
17
+ [http://miniapps.carboncalculated.com/](http://miniapps.carboncalculated.com/)
18
+
19
+ ##Getting Started##
20
+
21
+ Get An API KEY
22
+
23
+ contact support@carboncalculated.com
24
+
25
+ You can install it as:
26
+
27
+ sudo gem install calculated (dont use sudo if using RVM)
28
+
29
+ ##Creating A Session##
30
+
31
+ @session = Calculated::Session.create(:api_key => "your_api_key")
32
+
33
+ ##Overwriting defaults##
34
+
35
+ **These are the defaults**
36
+
37
+ caching # => true (boolean)
38
+ expires_in # => 60*60*24 (seconds)
39
+ cache # => Moneta::Memory.new "(Moneta Supported Cache) http://github.com/wycats/moneta
40
+ server # => "api.carboncalculated.com" (string)
41
+ api_version #=> "v1" (string)
42
+ logging # => true (boolean)
43
+
44
+ **This is overriding the defaults**
45
+
46
+ @session = Calculated::Session.create(
47
+ :api_key => "your_api_key",
48
+ :cache => Moneta::S3.new(:access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], :bucket => 'carbon')
49
+ :expires_in => 60*60*24*14
50
+ )
51
+
52
+ This has created a session with S3 Moneta cache that expires in 14 days
53
+
54
+ ##Basic Usage##
55
+
56
+ Via using the CarbonCalculated Browser http://browser.carboncalculated.com/ you can easily see what is available for you to interact with in terms of
57
+ data and calculations;
58
+
59
+ Now that you have a session you can call methods on the session to interact with carbon calculated api
60
+
61
+ **Example**
62
+
63
+ **Very simple materials Calculator**
64
+
65
+ Lets first got to the calculator on the browser (click here to see what I mean http://browser.carboncalculated.com/calculators/4bab7e4ff78b122cdd000004/computations/4bab7e64f78b122cdd000005"
66
+
67
+ @answer = @session.answer_from_computation("4bab7e64f78b122cdd000005", {"material_category"=>"4bf42d8046a95925b5000efb", "type_of_material"=>"4bf42d8046a95925b5000f40", "material"=>"4bf42d8046a95925b5000f2a", "amount_of_material"=>"10", "formula_input_name"=>"emissions_by_kg"})
68
+ @answer.calculations["co2"]["value"]
69
+
70
+
71
+
72
+ OR
73
+
74
+
75
+ @answer = @session.answer_from_calculator("4bab7e4ff78b122cdd000004", {"material_category"=>"4bf42d8046a95925b5000efb", "type_of_material"=>"4bf42d8046a95925b5000f40", "material"=>"4bf42d8046a95925b5000f2a", "amount_of_material"=>"10", "formula_input_name"=>"emissions_by_kg"})
76
+ @answer.calculations["co2"]["value"]
77
+
78
+ This will return a Calculated::Models::Answer Object
79
+
80
+
81
+ The reason that you can get an answer from either a calculator or a computation is the power of the validations; its cool
82
+ trust me.
83
+
84
+ ##Object Template Api##
85
+
86
+ A Object Template is a template for the building of generic objects; these contain information about what
87
+ all the object for the object template should contain; as well as getting relatable categories which can be
88
+ used to filter to specific generic objects which you can then later be used in answer calls
89
+
90
+ @object_templates = @session.object_templates # returns an Array of ObjectTemplate Objects
91
+ @object_templates[0].name
92
+ @object_templates[0].characteristics
93
+
94
+
95
+
96
+
97
+ @object_template = @session.generic_objects_for_object_template("car") # returns an ObjectTemplate Object with paginate GenericObjects
98
+ @object_template.generic_objects[0].identifier
99
+
100
+
101
+
102
+
103
+
104
+ params can be given for pagination
105
+ @session.object_templates(:page => 50, :per_page => 3)
106
+ @session.generic_objects_for_object_template("car", :page => 50, :per_page => 3)
107
+
108
+
109
+
110
+
111
+
112
+ # Getting object template with its relatable categories
113
+ # this will return ObjectTemplate with Relatable Category Objects
114
+ @object_template = @session.relatable_categories_for_object_template("car", "manufacture")
115
+ @object_template.relatable_categories[0].name
116
+ @object_template.relatable_categories[0].relatable_categories
117
+
118
+ # yes relatable category know about other ones very cool when building "successive drop downs"[http://blog.carboncalculated.com/2010/06/16/creating-successive-drop-downs/]
119
+
120
+
121
+
122
+
123
+
124
+ # @param [String] name # the object_template name ie "car", "airport", "material"
125
+ # @param [String] filter # the string you want to filter
126
+ #
127
+ @object_template = @session.generic_objects_for_object_template_with_filter("airport", "london")
128
+ @object_template.generic_objects[0].identifier
129
+
130
+ ##Object Template Object##
131
+
132
+ property :id # [String]
133
+ property :template_name # [String]
134
+ property :identifier # [String]
135
+ property :characteristics # [Array<Calculated::Models::Characteristic>]
136
+ property :formula_inputs # [Array<Calculated::Models::FormulaInput>]
137
+
138
+ ##Generic Objects API##
139
+
140
+ A Generic Object represents and object that is used in computations OR calculators; a computation will always
141
+ need at least one object to talk about; The "formula_inputs" of an object are the values that are used
142
+ in formulas and can be versioned to specific times for equations that change over time.
143
+
144
+ This is a list of car for instance CLICK http://browser.carboncalculated.com/object_templates/car/generic_objects
145
+
146
+ Finding and using generic objects is a major part of the platform apart from the actual calculations themselves
147
+
148
+ # Finding generic objects
149
+ @generic_objects = @session.generic_objects
150
+ @generic_objects[0].identifier
151
+
152
+
153
+ # Specific Generic Object
154
+ @generic_object = @session.generic_object("4c370c11ae2b7b418e00232c")
155
+ @generic_object.identifier
156
+
157
+
158
+
159
+ # Getting just the "Formula Inputs" of a generic Object
160
+ @formula_inputs = @session.formula_inputs_for_generic_object("4c370c11ae2b7b418e00232c")
161
+ @formula_inputs[0].values
162
+
163
+ ##Generic Object (Object)##
164
+
165
+ # properties
166
+ property :id # [String]
167
+ property :template_name # [String]
168
+ property :identifier # [String]
169
+ property :characteristics # [Array<Calculated::Models::Characteristic>]
170
+ property :formula_inputs # [Array<Calculated::Models::FormulaInput>]
171
+
172
+ ##Formula Input Object##
173
+
174
+ # properties
175
+ property :id # [String]
176
+ property :values # [Hash]
177
+ property :name # [String]
178
+ property :base_unit # [String]
179
+ property :active_at # [Time] yes time
180
+ property :main_source_id # [String]
181
+ property :group_name # [String]
182
+ property :input_units # [String]
183
+ property :label_input_units # [String]
184
+ property :model_state # [String]
185
+
186
+ ##Relatable Category API##
187
+
188
+ Relatable Categories are created when an generic object has been created; And not before hand; Hence
189
+ in theory a relatable category is only there when objects are there and not before; Which means
190
+ that you should never have a problem of a category existing just for the fun of it;
191
+
192
+ A relatable category will know all the objects that have its name and related_attribute; In a nut shell you can use relatable
193
+ category to filter and find related objects easily and effectively;
194
+
195
+ Also a relatable category will know of other relatable categories of the created object; so this allows for
196
+ super easy drop downs to create easy filter; the blog should help explain this further or just send me an email;
197
+
198
+
199
+
200
+ # Getting related objects from an ARRAY OF Relatable Category IDS USED in intersecting the related objects
201
+ # therefore its a really cool way to get filtered results
202
+ #
203
+ # @param object_template_name ie "car", "material"
204
+ # @param relatable_category_ids # Array #
205
+ result = @session.related_objects_from_relatable_categories("material", ["4bf42d8a46a95925b500199a"])
206
+ result["4bf42d8b46a95925b5001a0c"] # Partial Board
207
+
208
+
209
+
210
+
211
+
212
+ # Getting Related Categories from a related category
213
+ #
214
+ # @param Relatable Category ID
215
+ # @param related_attribute
216
+ result = @session.related_categories_from_relatable_category("4bf42d8a46a95925b500199a", "material_type")
217
+ results["4bf42d8b46a95925b50019c7"] # hardboard
218
+
219
+
220
+ ##Relatable Category Object##
221
+
222
+ # properties
223
+ property :id # [String]
224
+ property :name # [String]
225
+ property :related_attribute # [String]
226
+ property :related_object_name # [String]
227
+ # @example
228
+ # "emission_source" => {
229
+ # {
230
+ # "4c349f6068fe5434960178c2" => "flaring and venting",
231
+ # "4c349f6068fe54349601791f" => "fugitives",
232
+ # }
233
+ # }
234
+ property :related_categories # [Hash{name => <Hash{:id => identifier}}]
235
+
236
+
237
+ ##Answer API##
238
+
239
+ This is the crux of the api; this is where co2, co2e etc results can be found;
240
+
241
+ The best and easiest way to found what information you need to get a valid answer is using the browser["http://browser.carboncalculated.com"]
242
+ Once you have found what parameters you need to send you can then do exactly that;
243
+
244
+ A Answer Object will give you vaste information on what it used to get the answer; You will be told the all the objects that were used in the calculation
245
+ all the used_formula_inputs and the sources that where used to gain the information to make the calculation even possible.
246
+
247
+
248
+ @answer = @session.answer_from_computation("4bab7e64f78b122cdd000005", {"material_category"=>"4bf42d8046a95925b5000efb", "type_of_material"=>"4bf42d8046a95925b5000f40", "material"=>"4bf42d8046a95925b5000f2a", "amount_of_material"=>"10", "formula_input_name"=>"emissions_by_kg"})
249
+ @answer.calculations["co2"]["value"]
250
+
251
+ *Errors
252
+
253
+ If you don send the correct parameters in an answer you will be told where you are going wrong
254
+
255
+ @answer = @session.answer_from_computation("4bab7e64f78b122cdd000005", {"material_category"=>"4bf42d8046a95925b5000efb", "type_of_material"=>"4bf42d8046a95925b5000f40", "material"=>"4bf42d8046a95925b5000f2a", "formula_input_name"=>"emissions_by_kg"})
256
+ @answer.valid? # false
257
+
258
+ @answer.errors
259
+
260
+ "amount_of_material" =>["can't be blank", "is not a number"]
261
+
262
+ ##Answer Object##
263
+
264
+ # answer.calculations["co2"]["value"] == 10
265
+ # answer.calculations["co2"]["units"] == "kg"
266
+ #
267
+ property :calculations # [Hash]
268
+ property :object_references # [Hash]
269
+ property :used_global_computations # [Hash]
270
+ property :calculator_id # [String]
271
+ property :computation_id # [String]
272
+ property :answer_set_id # [String]
273
+ property :source # [Calculated::Models::Source]
274
+ property :errors # [Hash]
275
+
276
+ ##Source Object##
277
+
278
+ # properties
279
+ property :id # [String]
280
+ property :description # [String]
281
+ property :main_source_ids # [Array<String>]
282
+ property :external_url # [String]
283
+ property :wave_id # [String]
284
+
285
+ ##Bugs and Feedback##
286
+
287
+ If you discover any bugs or want to drop a line support@carboncalculated.com
288
+
289
+ Copyright (c) 2010 Richard Hooker http://blog.carboncalculated.com
290
+ See the attached MIT License.
@@ -13,6 +13,7 @@ module Calculated
13
13
  property :input_units # [String]
14
14
  property :label_input_units # [String]
15
15
  property :model_state # [String]
16
+ property :source # holder of old data this is not used I repeat this is not used
16
17
 
17
18
  end
18
19
  end
@@ -1,3 +1,3 @@
1
1
  module Calculated
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Richard Hooker
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-14 00:00:00 +01:00
17
+ date: 2010-07-21 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -116,6 +116,7 @@ files:
116
116
  - lib/calculated.rb
117
117
  - LICENSE
118
118
  - CHANGELOG.md
119
+ - README.md
119
120
  - ROADMAP.md
120
121
  has_rdoc: true
121
122
  homepage: http://github.com/hookercookerman/calculated