lib/asciimath2unitsml/validate.rb in asciimath2unitsml-0.3.3 vs lib/asciimath2unitsml/validate.rb in asciimath2unitsml-0.4.0

- old
+ new

@@ -13,44 +13,46 @@ end def validate_unit(unit) if unit[:quantity_reference] unit[:quantity_reference].is_a?(Array) or - raise StandardError.new "No quantity_reference array provided for unit: #{unit}" + raise StandardError + .new "No quantity_reference array provided for unit: #{unit}" end if unit[:unit_name] unit[:unit_name].is_a?(Array) or - raise StandardError.new "No unit_name array provided for unit: #{unit}" + raise StandardError + .new "No unit_name array provided for unit: #{unit}" end end - def validate_symbols(m, v) - symbol = symbol_key(v) + def validate_symbols(acc, val) + symbol = symbol_key(val) !symbol.nil? or - raise StandardError.new "No symbol provided for unit: #{v}" + raise StandardError.new "No symbol provided for unit: #{val}" 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 + acc[s] && s != "1" and + raise StandardError.new "symbol #{s} is not unique in #{val}: "\ + "already used for #{acc[s]}" + acc[s] = val end - m + acc end - def validate_unit_symbol_cardinality(sym, k) + def validate_unit_symbol_cardinality(sym, key) return true if sym.nil? !sym[:id].nil? && !sym[:ascii].nil? && !sym[:html].nil? && !sym[:mathml].nil? && !sym[:latex].nil? && !sym[:unicode].nil? and return true - raise StandardError.new "malformed unit_symbol for #{k}: #{sym}" + raise StandardError.new "malformed unit_symbol for #{key}: #{sym}" end - def symbol_key(v) - symbol = v[:unit_symbols]&.each_with_object([]) do |s, m| + def symbol_key(val) + symbol = val[: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 + end || val.dig(:symbol, :ascii) || val[:symbol] # || val[:short] + !symbol.nil? && val[:unit_symbols] && !symbol.is_a?(Array) and symbol = [symbol] symbol end end end