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 +4 -4
- data/lib/bcl/component.rb +2 -3
- data/lib/bcl/component_from_spreadsheet.rb +12 -10
- data/lib/bcl/component_methods.rb +146 -28
- data/lib/bcl/component_spreadsheet.rb +0 -5
- data/lib/bcl/core_ext.rb +4 -4
- data/lib/bcl/master_taxonomy.rb +0 -3
- data/lib/bcl/version.rb +1 -1
- metadata +5 -89
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9b595f2fbb18ac0cdf885c9cd7c94595272a0e6
|
4
|
+
data.tar.gz: 4a9f7d8789ae367ad26e2b1a139c2f781aefbe45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28a7fa4ba6ab4cca1fece24b9928d2d82e440814b6c4d92126e4792d74bc6c0cff1716218d72a2a2610529feafa354ff916a0621f3c53733038de155d7efb897
|
7
|
+
data.tar.gz: cfa0c7c21b956deadfdb992324b8af6da997a0c8f3ac3a9e109de44d59c981dcb77a9f39593a3206f10c884557b27edce32bf4a8ced57ab221f60a4843b80140
|
data/lib/bcl/component.rb
CHANGED
@@ -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
|
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
|
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
|
-
|
161
|
-
num_rows = 2
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
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.
|
173
|
-
#
|
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] =
|
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
|
-
#
|
209
|
-
|
210
|
-
|
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[:
|
214
|
-
|
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
|
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(
|
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
|
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
|
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
|
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
|
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
|
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
|
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)
|
data/lib/bcl/core_ext.rb
CHANGED
@@ -20,10 +20,10 @@
|
|
20
20
|
class String
|
21
21
|
def to_underscore
|
22
22
|
gsub(/::/, '/')
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
data/lib/bcl/master_taxonomy.rb
CHANGED
@@ -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
|
data/lib/bcl/version.rb
CHANGED
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.
|
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:
|
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.
|
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.
|
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
|