Class: OpenEHR::RM::Support::Measurement::MeasurementService
- Inherits:
-
Object
- Object
- OpenEHR::RM::Support::Measurement::MeasurementService
- Defined in:
- lib/openehr/rm/support/measurement.rb
Overview
A minimal UCUM-lite syntactic checker, not a full UCUM parser/conversion table: it validates that a units string is shaped like a UCUM unit (allowed characters, balanced brackets) and treats "equivalent" as exact string equality of two syntactically-valid units strings. It does not perform unit conversion (e.g. "kg" and "1000g" are not recognized as equivalent).
Constant Summary collapse
- UCUM_LITE_PATTERN =
/\A[A-Za-z0-9%\/.*\[\]{}'_-]+\z/
Class Method Summary collapse
Class Method Details
.is_valid_units_string?(units) ⇒ Boolean
15 16 17 18 19 20 |
# File 'lib/openehr/rm/support/measurement.rb', line 15 def self.is_valid_units_string?(units) return false unless units.is_a?(String) && !units.empty? return false unless units =~ UCUM_LITE_PATTERN balanced_brackets?(units, '[', ']') && balanced_brackets?(units, '{', '}') end |
.units_equivalent?(units1, units2) ⇒ Boolean
22 23 24 25 26 |
# File 'lib/openehr/rm/support/measurement.rb', line 22 def self.units_equivalent?(units1, units2) return false unless is_valid_units_string?(units1) && is_valid_units_string?(units2) units1 == units2 end |