Sha256: c7ce2ca7ccff2b09f95536a28d3757ba581f7c50676611b882f0d429335d956c
Contents?: true
Size: 1.74 KB
Versions: 1
Compression:
Stored size: 1.74 KB
Contents
module Asciimath2UnitsML class Conv def validate_yaml(hash, path) return hash if path == "../unitsdb/quantities.yaml" return hash if path == "../unitsdb/dimensions.yaml" hash.each_with_object({}) do |(k, v), m| path == "../unitsdb/units.yaml" and validate_unit(v) m = validate_symbols(m, v) v[:unit_symbols]&.each { |s| validate_unit_symbol_cardinality(s, k) } end hash end def validate_unit(v) if v[:quantity_reference] v[:quantity_reference].is_a?(Array) or raise StandardError.new "No quantity_reference array provided for unit: #{v}" end if v[:unit_name] v[:unit_name].is_a?(Array) or raise StandardError.new "No unit_name array provided for unit: #{v}" end end def validate_symbols(m, v) symbol = symbol_key(v) !symbol.nil? or raise StandardError.new "No symbol provided for unit: #{v}" Array(symbol)&.each do |s| m[s] && s != "1" and raise StandardError.new "symbol #{s} is not unique in #{v}: "\ "already used for #{m[s]}" m[s] = v end m end def validate_unit_symbol_cardinality(us, k) return true if us.nil? !us[:id].nil? && !us[:ascii].nil? && !us[:html].nil? && !us[:mathml].nil? && !us[:latex].nil? && !us[:unicode].nil? and return true raise StandardError.new "malformed unit_symbol for #{k}: #{us}" end def symbol_key(v) symbol = v[:unit_symbols]&.each_with_object([]) do |s, m| m << (s["id"] || s[:id]) end || v.dig(:symbol, :ascii) || v[:symbol] #|| v[:short] !symbol.nil? && v[:unit_symbols] && !symbol.is_a?(Array) and symbol = [symbol] symbol end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
asciimath2unitsml-0.3.2 | lib/asciimath2unitsml/validate.rb |