bcl 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c879a3a43c8b31973a5432fda978ef90aade0139
4
- data.tar.gz: 2e7889e68d19f79576462a527e039a791dfa552a
3
+ metadata.gz: b9b595f2fbb18ac0cdf885c9cd7c94595272a0e6
4
+ data.tar.gz: 4a9f7d8789ae367ad26e2b1a139c2f781aefbe45
5
5
  SHA512:
6
- metadata.gz: 67f1c26d8815663a569edac566e0ffb939a0c683decdd279e8df597b3cf612e9a09e61c01c7efa6b70660ff84dcfc650f3eb451dd22bf3d5f274d141d89b1a76
7
- data.tar.gz: 34903fceacea4d40817c4880e290820e158191db0d03e7b0811025abcd319c29f624e7ecd0a8e9b9840b16494a09438db10c1708d063200670660a14d5982047
6
+ metadata.gz: 28a7fa4ba6ab4cca1fece24b9928d2d82e440814b6c4d92126e4792d74bc6c0cff1716218d72a2a2610529feafa354ff916a0621f3c53733038de155d7efb897
7
+ data.tar.gz: cfa0c7c21b956deadfdb992324b8af6da997a0c8f3ac3a9e109de44d59c981dcb77a9f39593a3206f10c884557b27edce32bf4a8ced57ab221f60a4843b80140
@@ -105,7 +105,7 @@ module BCL
105
105
  destination = "#{@uid}"
106
106
  puts 'truncating filename...using uid instead of name'
107
107
  end
108
- destination = destination + '.tar.gz'
108
+ destination += '.tar.gz'
109
109
 
110
110
  File.delete(destination) if File.exist?(destination)
111
111
 
@@ -186,7 +186,7 @@ module BCL
186
186
  FileUtils.mkdir_p(@path) unless File.directory?(@path)
187
187
  new_path = @path + '/OpenStudio'
188
188
  FileUtils.mkdir_p(new_path) unless File.directory?(new_path)
189
- new_path = new_path + "/#{component_type}"
189
+ new_path += "/#{component_type}"
190
190
  FileUtils.mkdir_p(new_path) unless File.directory?(new_path)
191
191
  new_path
192
192
  end
@@ -379,7 +379,6 @@ module BCL
379
379
  end
380
380
  end
381
381
  end
382
-
383
382
  end
384
383
 
385
384
  xmlfile.close
@@ -77,6 +77,7 @@ module BCL
77
77
 
78
78
  values = component.values
79
79
 
80
+ puts " headers: #{component.headers}"
80
81
  component.headers.each do |header|
81
82
  if /description/i.match(header.name)
82
83
  name = values.delete_at(0) # name, uid already processed
@@ -155,18 +156,19 @@ module BCL
155
156
 
156
157
  xlsx_data = xlsx_worksheet.extract_data
157
158
  # puts "Data: #{xlsx_data.inspect}"
159
+ # puts "***********************"
158
160
 
159
161
  num_rows = xlsx_data.size
160
- # puts "Number of Rows: #{xlsx_data.size}"
161
- num_rows = 2
162
- loop do
163
- test = xlsx_data[num_rows][0]
164
- if test.nil? || test.empty?
165
- # num_rows -= 1
166
- break
167
- end
168
- num_rows += 1
169
- end
162
+ puts "Number of Rows: #{xlsx_data.size}"
163
+ # num_rows = 2
164
+ # while true
165
+ # test = xlsx_data[num_rows][0]
166
+ # if test.nil? or test.empty?
167
+ # # num_rows -= 1
168
+ # break
169
+ # end
170
+ # num_rows += 1
171
+ # end
170
172
 
171
173
  # scan number of columns
172
174
  headers = []
@@ -60,7 +60,7 @@ module BCL
60
60
  @group_id = group_id || @config[:server][:user][:group]
61
61
  puts "logging in using credentials in .bcl/config.yml: Connecting to #{url} on port #{port} as #{username} with group #{@group_id}"
62
62
  else
63
- @group_id = group_id
63
+ @group_id = group_id || @config[:server][:user][:group]
64
64
  puts "logging in using credentials in function arguments: Connecting to #{url} on port #{port} as #{username} with group #{@group_id}"
65
65
  end
66
66
 
@@ -169,8 +169,8 @@ module BCL
169
169
  measures
170
170
  end
171
171
 
172
- # Read in an existing measure.rb file and extract the arguments. Note that the measure_name (display name)
173
- # does not exist in the .rb file, so you have to pass this in.
172
+ # Read in an existing measure.rb file and extract the arguments.
173
+ # TODO: deprecate the _measure_name. This is used in the openstudio analysis gem, so it has to be carefully removed or renamed
174
174
  def parse_measure_file(_measure_name, measure_filename)
175
175
  measure_hash = {}
176
176
 
@@ -180,7 +180,10 @@ module BCL
180
180
 
181
181
  measure_hash[:classname] = measure_string.match(/class (.*) </)[1]
182
182
  measure_hash[:name] = measure_hash[:classname].to_underscore
183
- measure_hash[:display_name] = measure_hash[:name].titleize
183
+ measure_hash[:display_name] = nil
184
+ measure_hash[:display_name_titleized] = measure_hash[:name].titleize
185
+ measure_hash[:display_name_from_measure] = nil
186
+
184
187
  if measure_string =~ /OpenStudio::Ruleset::WorkspaceUserScript/
185
188
  measure_hash[:measure_type] = 'EnergyPlusMeasure'
186
189
  elsif measure_string =~ /OpenStudio::Ruleset::ModelUserScript/
@@ -193,11 +196,48 @@ module BCL
193
196
  fail "measure type is unknown with an inherited class in #{measure_filename}: #{measure_hash.inspect}"
194
197
  end
195
198
 
199
+ # New versions of measures have name, description, and modeler description methods
200
+ n = measure_string.scan(/def name(.*?)end/m).first
201
+ if n
202
+ n = n.first.strip
203
+ n.gsub!('return', '')
204
+ n.gsub!(/"|'/, '')
205
+ n.strip!
206
+ measure_hash[:display_name_from_measure] = n
207
+ end
208
+
209
+ # New versions of measures have name, description, and modeler description methods
210
+ n = measure_string.scan(/def description(.*?)end/m).first
211
+ if n
212
+ n = n.first.strip
213
+ n.gsub!('return', '')
214
+ n.gsub!(/"|'/, '')
215
+ n.strip!
216
+ measure_hash[:description] = n
217
+ end
218
+
219
+ # New versions of measures have name, description, and modeler description methods
220
+ n = measure_string.scan(/def modeler_description(.*?)end/m).first
221
+ if n
222
+ n = n.first.strip
223
+ n.gsub!('return', '')
224
+ n.gsub!(/"|'/, '')
225
+ n.strip!
226
+ measure_hash[:modeler_description] = n
227
+ end
228
+
196
229
  measure_hash[:arguments] = []
197
230
 
198
231
  args = measure_string.scan(/(.*).*=.*OpenStudio::Ruleset::OSArgument.*make(.*)Argument\((.*).*\)/)
199
232
  args.each do |arg|
200
233
  new_arg = {}
234
+ new_arg[:name] = nil
235
+ new_arg[:display_name] = nil
236
+ new_arg[:variable_type] = nil
237
+ new_arg[:local_variable] = nil
238
+ new_arg[:units] = nil
239
+ new_arg[:units_in_name] = nil
240
+
201
241
  new_arg[:local_variable] = arg[0].strip
202
242
  new_arg[:variable_type] = arg[1]
203
243
  arg_params = arg[2].split(',')
@@ -205,24 +245,36 @@ module BCL
205
245
  next if new_arg[:name] == 'info_widget'
206
246
  choice_vector = arg_params[1] ? arg_params[1].strip : nil
207
247
 
208
- # local variable name to get other attributes
209
- new_arg[:display_name] = measure_string.match(/#{new_arg[:local_variable]}.setDisplayName\((.*)\)/)[1]
210
- new_arg[:display_name].gsub!(/"|'/, '') if new_arg[:display_name]
248
+ # try find the display name of the argument
249
+ reg = /#{new_arg[:local_variable]}.setDisplayName\((.*)\)/
250
+ if measure_string =~ reg
251
+ new_arg[:display_name] = measure_string.match(reg)[1]
252
+ new_arg[:display_name].gsub!(/"|'/, '') if new_arg[:display_name]
253
+ else
254
+ new_arg[:display_name] = new_arg[:name]
255
+ end
256
+
211
257
  p = parse_measure_name(new_arg[:display_name])
212
258
  new_arg[:display_name] = p[0]
213
- new_arg[:units] = p[1]
214
- new_arg[:description] = p[2]
259
+ new_arg[:units_in_name] = p[1]
260
+
261
+ # try to get the units
262
+ reg = /#{new_arg[:local_variable]}.setUnits\((.*)\)/
263
+ if measure_string =~ reg
264
+ new_arg[:units] = measure_string.match(reg)[1]
265
+ new_arg[:units].gsub!(/"|'/, '') if new_arg[:units]
266
+ end
215
267
 
216
268
  if measure_string =~ /#{new_arg[:local_variable]}.setDefaultValue/
217
269
  new_arg[:default_value] = measure_string.match(/#{new_arg[:local_variable]}.setDefaultValue\((.*)\)/)[1]
218
270
  else
219
- puts "[WARNING] #{measure_hash[:name]}:#{new_arg[:name]} has no default value... will try to continue"
271
+ puts "[WARNING] #{measure_hash[:name]}:#{new_arg[:name]} has no default value... will continue"
220
272
  end
221
273
 
222
274
  case new_arg[:variable_type]
223
275
  when 'Choice'
224
276
  # Choices to appear to only be strings?
225
- puts "Choice vector appears to be #{choice_vector}"
277
+ # puts "Choice vector appears to be #{choice_vector}"
226
278
  new_arg[:default_value].gsub!(/"|'/, '') if new_arg[:default_value]
227
279
 
228
280
  # parse the choices from the measure
@@ -276,15 +328,82 @@ module BCL
276
328
  measure_hash[:name_xml] = doc.xpath('/measure/name').first.content
277
329
  measure_hash[:uid] = doc.xpath('/measure/uid').first.content
278
330
  measure_hash[:version_id] = doc.xpath('/measure/version_id').first.content
279
- measure_hash[:modeler_description] = doc.xpath('/measure/modeler_description').first.content
280
- measure_hash[:description] = doc.xpath('/measure/description').first.content
281
331
  measure_hash[:tags] = doc.xpath('/measure/tags/tag').map(&:content)
332
+
333
+ measure_hash[:modeler_description_xml] = doc.xpath('/measure/modeler_description').first.content
334
+
335
+ measure_hash[:description_xml] = doc.xpath('/measure/description').first.content
336
+
282
337
  f.close
283
338
  end
284
339
 
340
+ # validate the measure information
341
+
342
+ validate_measure_hash(measure_hash)
343
+
285
344
  measure_hash
286
345
  end
287
346
 
347
+ # Validate the measure hash to make sure that it is meets the style guide. This will also perform the selection
348
+ # of which data to use for the "actual metadata"
349
+ #
350
+ # @param h [Hash] Measure hash
351
+ def validate_measure_hash(h)
352
+ if h.key? :name_xml
353
+ if h[:name_xml] != h[:name]
354
+ puts "[ERROR] {Validation}. Snake-cased name and the name in the XML do not match. Will default to automatic snake-cased measure name. #{h[:name_xml]} <> #{h[:name]}"
355
+ end
356
+ end
357
+
358
+ puts '[WARNING] {Validation} Could not find measure description in measure.' unless h[:description]
359
+ puts '[WARNING] {Validation} Could not find modeler description in measure.' unless h[:modeler_description]
360
+ puts '[WARNING] {Validation} Could not find measure name method in measure.' unless h[:name_from_measure]
361
+
362
+ # check the naming conventions
363
+ if h[:display_name_from_measure]
364
+ if h[:display_name_from_measure] != h[:display_name_titleized]
365
+ puts '[WARNING] {Validation} Display name from measure and automated naming do not match. Will default to the automated name until all measures use the name method because of potential conflicts due to bad copy/pasting.'
366
+ end
367
+ h[:display_name] = h.delete :display_name_titleized
368
+ else
369
+ h[:display_name] = h.delete :display_name_titleized
370
+ end
371
+ h.delete :display_name_from_measure
372
+
373
+ if h.key?(:description) && h.key?(:description_xml)
374
+ if h[:description] != h[:description_xml]
375
+ puts '[ERROR] {Validation} Measure description and XML description differ. Will default to description in measure'
376
+ end
377
+ h.delete(:description_xml)
378
+ end
379
+
380
+ if h.key?(:modeler_description) && h.key?(:modeler_description_xml)
381
+ if h[:modeler_description] != h[:modeler_description_xml]
382
+ puts '[ERROR] {Validation} Measure modeler description and XML modeler description differ. Will default to modeler description in measure'
383
+ end
384
+ h.delete(:modeler_description_xml)
385
+ end
386
+
387
+ h[:arguments].each do |arg|
388
+ if arg[:units_in_name]
389
+ puts "[ERROR] {Validation} It appears that units are embedded in the argument name for #{arg[:name]}."
390
+
391
+ if arg[:units]
392
+ if arg[:units] != arg[:units_in_name]
393
+ puts '[ERROR] {Validation} Units in argument name do not match units in setUnits method. Using setUnits.'
394
+ arg.delete :units_in_name
395
+ end
396
+ else
397
+ puts '[ERROR] {Validation} Units appear to be in measure name. Please use setUnits.'
398
+ arg[:units] = arg.delete :units_in_name
399
+ end
400
+ else
401
+ # make sure to delete if null
402
+ arg.delete :units_in_name
403
+ end
404
+ end
405
+ end
406
+
288
407
  def translate_measure_hash_to_csv(measure_hash)
289
408
  csv = []
290
409
  csv << [false, measure_hash[:display_name], measure_hash[:classname], measure_hash[:classname], measure_hash[:measure_type]]
@@ -328,7 +447,7 @@ module BCL
328
447
  File.open(save_file, 'wb') { |f| f << file_data }
329
448
 
330
449
  # unzip file and delete zip.
331
- # TODO check that something was downloaded here before extracting zip
450
+ # TODO: check that something was downloaded here before extracting zip
332
451
  if File.exist? save_file
333
452
  BCL.extract_zip(save_file, @parsed_measures_path, true)
334
453
 
@@ -345,18 +464,18 @@ module BCL
345
464
  # Read the measure.rb file
346
465
  # puts "save dir name #{temp_dir_name}"
347
466
  measure_filename = "#{temp_dir_name}/measure.rb"
348
- measure_hash = parse_measure_file(measure[:measure][:name], measure_filename)
467
+ measure_hash = parse_measure_file(nil, measure_filename)
349
468
 
350
469
  if measure_hash.empty?
351
470
  puts 'Measure Hash was empty... moving on'
352
471
  else
353
- #puts measure_hash.inspect
472
+ # puts measure_hash.inspect
354
473
  m_result = measure_hash
355
474
  # move the directory to the class name
356
475
  new_dir_name = File.join(@parsed_measures_path, measure_hash[:classname])
357
- #puts "Moving #{temp_dir_name} to #{new_dir_name}"
476
+ # puts "Moving #{temp_dir_name} to #{new_dir_name}"
358
477
  if temp_dir_name == new_dir_name
359
- puts "Destination directory is the same as the processed directory"
478
+ puts 'Destination directory is the same as the processed directory'
360
479
  else
361
480
  FileUtils.rm_rf(new_dir_name) if File.exist?(new_dir_name) && temp_dir_name != measure_hash[:classname]
362
481
  FileUtils.move(temp_dir_name, new_dir_name) unless temp_dir_name == measure_hash[:classname]
@@ -381,12 +500,11 @@ module BCL
381
500
 
382
501
  clean_name = name
383
502
  units = nil
384
- description = nil
385
503
 
386
504
  # remove everything btw parentheses
387
505
  m = clean_name.match(/\((.+?)\)/)
388
506
  unless m.nil?
389
- errors = errors + ' removing parentheses,'
507
+ errors += ' removing parentheses,'
390
508
  units = m[1]
391
509
  clean_name = clean_name.gsub(/\((.+?)\)/, '')
392
510
  end
@@ -395,7 +513,7 @@ module BCL
395
513
  m = nil
396
514
  m = clean_name.match(/\[(.+?)\]/)
397
515
  unless m.nil?
398
- errors = errors + ' removing brackets,'
516
+ errors += ' removing brackets,'
399
517
  clean_name = clean_name.gsub(/\[(.+?)\]/, '')
400
518
  end
401
519
 
@@ -403,13 +521,13 @@ module BCL
403
521
  m = nil
404
522
  m = clean_name.match(/(\?|\.|\#).+?/)
405
523
  unless m.nil?
406
- errors = errors + ' removing any of following: ?.#'
524
+ errors += ' removing any of following: ?.#'
407
525
  clean_name = clean_name.gsub(/(\?|\.|\#).+?/, '')
408
526
  end
409
527
  clean_name = clean_name.gsub('.', '')
410
528
  clean_name = clean_name.gsub('?', '')
411
529
 
412
- [clean_name.strip, units, description]
530
+ [clean_name.strip, units]
413
531
  end
414
532
 
415
533
  # retrieve measures for parsing metadata.
@@ -423,7 +541,7 @@ module BCL
423
541
  if filter_term.nil?
424
542
  filter_term = 'fq[]=bundle%3Anrel_measure'
425
543
  elsif !filter_term.include? 'bundle'
426
- filter_term = filter_term + '&fq[]=bundle%3Anrel_measure'
544
+ filter_term += '&fq[]=bundle%3Anrel_measure'
427
545
  end
428
546
 
429
547
  # use provided search term or nil.
@@ -484,7 +602,7 @@ module BCL
484
602
  # Construct the post parameter for the API content.json end point.
485
603
  # param(@update) is a boolean that triggers whether to use content_type or uuid
486
604
  def construct_post_data(filepath, update, content_type_or_uuid)
487
- # TODO remove special characters in the filename; they create firewall errors
605
+ # TODO: remove special characters in the filename; they create firewall errors
488
606
  # filename = filename.gsub(/\W/,'_').gsub(/___/,'_').gsub(/__/,'_').chomp('_').strip
489
607
 
490
608
  file_b64 = Base64.encode64(File.binread(filepath))
@@ -505,7 +623,7 @@ module BCL
505
623
  data['node']['type'] = content_type_or_uuid
506
624
  end
507
625
 
508
- # TODO remove this field_component_tags once BCL is fixed
626
+ # TODO: remove this field_component_tags once BCL is fixed
509
627
  data['node']['field_component_tags'] = { 'und' => '1289' }
510
628
  data['node']['og_group_ref'] = { 'und' => ['target_id' => @group_id] }
511
629
 
@@ -765,7 +883,7 @@ module BCL
765
883
  # puts "RESULTS BODY: #{result.body}"
766
884
  # look at response code
767
885
  if result.code == '200'
768
- #puts 'Download Successful'
886
+ # puts 'Download Successful'
769
887
  result.body ? result.body : nil
770
888
  else
771
889
  puts "Download fail. Error code #{result.code}"
@@ -809,7 +927,7 @@ module BCL
809
927
  end
810
928
  end # class ComponentMethods
811
929
 
812
- # TODO make this extend the component_xml class (or create a super class around components)
930
+ # TODO: make this extend the component_xml class (or create a super class around components)
813
931
 
814
932
  def self.gather_components(component_dir, chunk_size = 0, delete_previousgather = false, destination = nil)
815
933
  if destination.nil?
@@ -98,7 +98,6 @@ module BCL
98
98
 
99
99
  @worksheets.each do |worksheet|
100
100
  worksheet.components.each do |component|
101
-
102
101
  component_xml = Component.new("#{save_path}/components")
103
102
  component_xml.name = component.name
104
103
  component_xml.uid = component.uid
@@ -109,7 +108,6 @@ module BCL
109
108
 
110
109
  values = component.values[0]
111
110
  component.headers.each do |header|
112
-
113
111
  if /description/i.match(header.name)
114
112
 
115
113
  name = values.delete_at(0)
@@ -184,15 +182,12 @@ module BCL
184
182
  fail "Unknown section #{header.name}"
185
183
 
186
184
  end
187
-
188
185
  end
189
186
 
190
187
  taxonomy.check_component(component_xml)
191
188
 
192
189
  component_xml.save_tar_gz(false)
193
-
194
190
  end
195
-
196
191
  end
197
192
 
198
193
  BCL.gather_components(save_path, chunk_size, delete_old_gather)
@@ -20,10 +20,10 @@
20
20
  class String
21
21
  def to_underscore
22
22
  gsub(/::/, '/')
23
- .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
24
- .gsub(/([a-z\d])([A-Z])/, '\1_\2')
25
- .tr('-', '_')
26
- .downcase
23
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
24
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
25
+ .tr('-', '_')
26
+ .downcase
27
27
  end
28
28
 
29
29
  # simple method to create titles -- very custom to catch known inflections
@@ -176,7 +176,6 @@ module BCL
176
176
 
177
177
  # check that all attributes are allowed
178
178
  component.attributes.each do |attribute|
179
-
180
179
  term = nil
181
180
  terms.each do |t|
182
181
  if t.name == attribute.name
@@ -192,7 +191,6 @@ module BCL
192
191
  end
193
192
 
194
193
  # TODO: validate value, datatype, units
195
-
196
194
  end
197
195
 
198
196
  valid
@@ -526,7 +524,6 @@ module BCL
526
524
  child_tags.each do |child_tag|
527
525
  write_tag_to_xml(child_tag, level, xml, output_type)
528
526
  end
529
-
530
527
  end
531
528
  end
532
529
  end
@@ -18,5 +18,5 @@
18
18
  ######################################################################
19
19
 
20
20
  module BCL
21
- VERSION = '0.5.5'
21
+ VERSION = '0.5.6'
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Macumber
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-10-14 00:00:00.000000000 Z
14
+ date: 2015-05-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: uuid
@@ -167,90 +167,6 @@ dependencies:
167
167
  - - '>='
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
- - !ruby/object:Gem::Dependency
171
- name: rake
172
- requirement: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - ~>
175
- - !ruby/object:Gem::Version
176
- version: 10.3.2
177
- type: :development
178
- prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - ~>
182
- - !ruby/object:Gem::Version
183
- version: 10.3.2
184
- - !ruby/object:Gem::Dependency
185
- name: rspec
186
- requirement: !ruby/object:Gem::Requirement
187
- requirements:
188
- - - ~>
189
- - !ruby/object:Gem::Version
190
- version: '3.0'
191
- type: :development
192
- prerelease: false
193
- version_requirements: !ruby/object:Gem::Requirement
194
- requirements:
195
- - - ~>
196
- - !ruby/object:Gem::Version
197
- version: '3.0'
198
- - !ruby/object:Gem::Dependency
199
- name: rubocop
200
- requirement: !ruby/object:Gem::Requirement
201
- requirements:
202
- - - ~>
203
- - !ruby/object:Gem::Version
204
- version: 0.26.1
205
- type: :development
206
- prerelease: false
207
- version_requirements: !ruby/object:Gem::Requirement
208
- requirements:
209
- - - ~>
210
- - !ruby/object:Gem::Version
211
- version: 0.26.1
212
- - !ruby/object:Gem::Dependency
213
- name: rubocop-checkstyle_formatter
214
- requirement: !ruby/object:Gem::Requirement
215
- requirements:
216
- - - ~>
217
- - !ruby/object:Gem::Version
218
- version: 0.1.1
219
- type: :development
220
- prerelease: false
221
- version_requirements: !ruby/object:Gem::Requirement
222
- requirements:
223
- - - ~>
224
- - !ruby/object:Gem::Version
225
- version: 0.1.1
226
- - !ruby/object:Gem::Dependency
227
- name: ci_reporter
228
- requirement: !ruby/object:Gem::Requirement
229
- requirements:
230
- - - ~>
231
- - !ruby/object:Gem::Version
232
- version: 1.9.1
233
- type: :development
234
- prerelease: false
235
- version_requirements: !ruby/object:Gem::Requirement
236
- requirements:
237
- - - ~>
238
- - !ruby/object:Gem::Version
239
- version: 1.9.1
240
- - !ruby/object:Gem::Dependency
241
- name: rspec-legacy_formatters
242
- requirement: !ruby/object:Gem::Requirement
243
- requirements:
244
- - - ~>
245
- - !ruby/object:Gem::Version
246
- version: 1.0.0
247
- type: :development
248
- prerelease: false
249
- version_requirements: !ruby/object:Gem::Requirement
250
- requirements:
251
- - - ~>
252
- - !ruby/object:Gem::Version
253
- version: 1.0.0
254
170
  description: This gem contains helper methods for generating the Component XML file
255
171
  needed to upload files to the Building Component Library. It also contains the classes
256
172
  needed for logging in via the api and uploading generating components
@@ -259,6 +175,7 @@ executables: []
259
175
  extensions: []
260
176
  extra_rdoc_files: []
261
177
  files:
178
+ - lib/bcl.rb
262
179
  - lib/bcl/base_xml.rb
263
180
  - lib/bcl/component.rb
264
181
  - lib/bcl/component_from_spreadsheet.rb
@@ -270,7 +187,6 @@ files:
270
187
  - lib/bcl/master_taxonomy.rb
271
188
  - lib/bcl/tar_ball.rb
272
189
  - lib/bcl/version.rb
273
- - lib/bcl.rb
274
190
  homepage: http://bcl.nrel.gov
275
191
  licenses:
276
192
  - LGPL
@@ -283,7 +199,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
283
199
  requirements:
284
200
  - - '>='
285
201
  - !ruby/object:Gem::Version
286
- version: 1.9.2
202
+ version: 1.9.3
287
203
  required_rubygems_version: !ruby/object:Gem::Requirement
288
204
  requirements:
289
205
  - - '>='
@@ -291,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
207
  version: '0'
292
208
  requirements: []
293
209
  rubyforge_project:
294
- rubygems_version: 2.0.14
210
+ rubygems_version: 2.4.5
295
211
  signing_key:
296
212
  specification_version: 4
297
213
  summary: Classes for creating component XML files for the BCL