Top Level Namespace
Defined Under Namespace
Modules: OpenStudio Classes: Hash
Instance Method Summary collapse
- #parse_measure_xml(measure_xml_filename) ⇒ Object
-
#typecast_value(variable_type, value, inspect_string = false) ⇒ Object
Typecast Variable Values by a string.
Instance Method Details
#parse_measure_xml(measure_xml_filename) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/openstudio/helpers/utils.rb', line 8 def parse_measure_xml(measure_xml_filename) measure_hash = {} xml_to_parse = File.open(measure_xml_filename) xml_root = REXML::Document.new(xml_to_parse).root # pull out some information measure_hash[:classname] = xml_root.elements['//measure/class_name'].text measure_hash[:name] = xml_root.elements['//measure/name'].text measure_hash[:display_name] = xml_root.elements['//measure/display_name'].text measure_hash[:display_name_titleized] = measure_hash[:name].titleize measure_hash[:measure_type] = xml_root.elements['//measure/attributes/attribute[name="Measure Type"]/value'].text measure_hash[:description] = xml_root.elements['//measure/description'].text measure_hash[:modeler_description] = xml_root.elements['//measure/modeler_description'].text measure_hash[:uid] = xml_root.elements['//measure/uid'].text measure_hash[:version_id] = xml_root.elements['//measure/version_id'].text measure_hash[:arguments] = [] REXML::XPath.each(xml_root, '//measure/arguments/argument') do |arg| measure_hash[:arguments] << { name: arg.elements['name']&.text, display_name: arg.elements['display_name']&.text, variable_type: arg.elements['type']&.text.downcase, default_value: arg.elements['default_value']&.text, units: arg.elements['units']&.text || '' } end measure_hash end |
#typecast_value(variable_type, value, inspect_string = false) ⇒ Object
Typecast Variable Values by a string.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/openstudio/helpers/string.rb', line 7 def typecast_value(variable_type, value, inspect_string = false) out_value = nil unless value.nil? case variable_type.downcase when 'double' out_value = value.to_f when 'integer' out_value = value.to_i when 'string', 'choice' out_value = inspect_string ? value.inspect : value.to_s when 'bool', 'boolean' # Check if the value is already a boolean if !!value == value out_value = value else if value.casecmp('true').zero? out_value = true elsif value.casecmp('false').zero? out_value = false else raise "Can't cast to a bool from a value of '#{value}' of class '#{value.class}'" end end else raise "Unknown variable type of '#{@variable['type']}'" end end out_value end |