class Sass::Value::Number
def initialize(value, unit = nil)
(**unit)
-
:denominator_units
(Array<::String>
) -- -
:numerator_units
(Array<::String>
) --
Parameters:
-
unit
(::String, Hash
) -- -
value
(Numeric
) --
def initialize(value, unit = nil) case unit when nil numerator_units = [] denominator_units = [] when ::String numerator_units = [unit] denominator_units = [] when ::Hash numerator_units = unit.fetch(:numerator_units, []) unless numerator_units.is_a?(Array) raise Sass::ScriptError, "invalid numerator_units #{numerator_units.inspect}" end denominator_units = unit.fetch(:denominator_units, []) unless denominator_units.is_a?(Array) raise Sass::ScriptError, "invalid denominator_units #{denominator_units.inspect}" end else raise Sass::ScriptError, "invalid unit #{unit.inspect}" end unless denominator_units.empty? && numerator_units.empty? value = value.dup numerator_units = numerator_units.dup new_denominator_units = [] denominator_units.each do |denominator_unit| index = numerator_units.find_index do |numerator_unit| factor = Unit.conversion_factor(denominator_unit, numerator_unit) if factor.nil? false else value *= factor true end end if index.nil? new_denominator_units.push(denominator_unit) else numerator_units.delete_at(index) end end denominator_units = new_denominator_units end @value = value.freeze @numerator_units = numerator_units.each(&:freeze).freeze @denominator_units = denominator_units.each(&:freeze).freeze end